Skip to content

Commit c088458

Browse files
committedAug 3, 2023
migrate to maintained kuchiki fork for testing
1 parent 6c42373 commit c088458

11 files changed

+77
-67
lines changed
 

‎.cargo/audit.toml

-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ ignore = [
88

99
"RUSTSEC-2023-0018", # rustwide -> remove_dir_all,TOCTOU / Race Condition
1010
# https://github.com/rust-lang/docs.rs/issues/2074
11-
12-
"RUSTSEC-2023-0019", # kuchiki is unmaintained
13-
# https://github.com/rust-lang/docs.rs/issues/2076
1411
]
1512
informational_warnings = ["unmaintained"] # warn for categories of informational advisories
1613
severity_threshold = "low" # CVSS severity ("none", "low", "medium", "high", "critical")

‎Cargo.lock

+21-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ procfs = "0.15.1"
124124

125125
[dev-dependencies]
126126
criterion = "0.5.1"
127-
kuchiki = "0.8"
127+
kuchikiki = "0.8"
128128
rand = "0.8"
129129
mockito = "1.0.2"
130130
test-case = "3.0.0"

‎src/web/build_details.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ pub(crate) async fn build_details_handler(
9898
#[cfg(test)]
9999
mod tests {
100100
use crate::test::{wrapper, FakeBuild};
101-
use kuchiki::traits::TendrilSink;
101+
use kuchikiki::traits::TendrilSink;
102102
use test_case::test_case;
103103

104104
#[test]
@@ -112,7 +112,7 @@ mod tests {
112112
.db_build_log("A build log")])
113113
.create()?;
114114

115-
let page = kuchiki::parse_html().one(
115+
let page = kuchikiki::parse_html().one(
116116
env.frontend()
117117
.get("/crate/foo/0.1.0/builds")
118118
.send()?
@@ -123,7 +123,7 @@ mod tests {
123123
let attrs = node.attributes.borrow();
124124
let url = attrs.get("href").unwrap();
125125

126-
let page = kuchiki::parse_html().one(env.frontend().get(url).send()?.text()?);
126+
let page = kuchikiki::parse_html().one(env.frontend().get(url).send()?.text()?);
127127

128128
let log = page.select("pre").unwrap().next().unwrap().text_contents();
129129

@@ -142,7 +142,7 @@ mod tests {
142142
.builds(vec![FakeBuild::default().s3_build_log("A build log")])
143143
.create()?;
144144

145-
let page = kuchiki::parse_html().one(
145+
let page = kuchikiki::parse_html().one(
146146
env.frontend()
147147
.get("/crate/foo/0.1.0/builds")
148148
.send()?
@@ -153,7 +153,7 @@ mod tests {
153153
let attrs = node.attributes.borrow();
154154
let url = attrs.get("href").unwrap();
155155

156-
let page = kuchiki::parse_html().one(env.frontend().get(url).send()?.text()?);
156+
let page = kuchikiki::parse_html().one(env.frontend().get(url).send()?.text()?);
157157

158158
let log = page.select("pre").unwrap().next().unwrap().text_contents();
159159

@@ -174,7 +174,7 @@ mod tests {
174174
.db_build_log("Another build log")])
175175
.create()?;
176176

177-
let page = kuchiki::parse_html().one(
177+
let page = kuchikiki::parse_html().one(
178178
env.frontend()
179179
.get("/crate/foo/0.1.0/builds")
180180
.send()?
@@ -185,7 +185,7 @@ mod tests {
185185
let attrs = node.attributes.borrow();
186186
let url = attrs.get("href").unwrap();
187187

188-
let page = kuchiki::parse_html().one(env.frontend().get(url).send()?.text()?);
188+
let page = kuchikiki::parse_html().one(env.frontend().get(url).send()?.text()?);
189189

190190
let log = page.select("pre").unwrap().next().unwrap().text_contents();
191191

‎src/web/builds.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ mod tests {
151151
web::cache::CachePolicy,
152152
};
153153
use chrono::{DateTime, Duration, Utc};
154-
use kuchiki::traits::TendrilSink;
154+
use kuchikiki::traits::TendrilSink;
155155
use reqwest::StatusCode;
156156

157157
#[test]
@@ -176,7 +176,7 @@ mod tests {
176176

177177
let response = env.frontend().get("/crate/foo/0.1.0/builds").send()?;
178178
assert_cache_control(&response, CachePolicy::NoCaching, &env.config());
179-
let page = kuchiki::parse_html().one(response.text()?);
179+
let page = kuchikiki::parse_html().one(response.text()?);
180180

181181
let rows: Vec<_> = page
182182
.select("ul > li a.release")
@@ -294,7 +294,7 @@ mod tests {
294294
],
295295
)?;
296296

297-
let page = kuchiki::parse_html().one(
297+
let page = kuchikiki::parse_html().one(
298298
env.frontend()
299299
.get("/crate/foo/0.1.0/builds")
300300
.send()?

‎src/web/crate_details.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ mod tests {
474474
assert_cache_control, assert_redirect, assert_redirect_cached, wrapper, TestDatabase,
475475
};
476476
use anyhow::{Context, Error};
477-
use kuchiki::traits::TendrilSink;
477+
use kuchikiki::traits::TendrilSink;
478478
use std::collections::HashMap;
479479

480480
fn assert_last_successful_build_equals(
@@ -838,7 +838,7 @@ mod tests {
838838
.binary(true)
839839
.create()?;
840840

841-
let page = kuchiki::parse_html()
841+
let page = kuchikiki::parse_html()
842842
.one(env.frontend().get("/crate/binary/0.1.0").send()?.text()?);
843843
let warning = page.select_first("a.pure-menu-link.warn").unwrap();
844844

@@ -956,7 +956,7 @@ mod tests {
956956
.features(HashMap::new())
957957
.create()?;
958958

959-
let page = kuchiki::parse_html().one(
959+
let page = kuchikiki::parse_html().one(
960960
env.frontend()
961961
.get("/crate/library/0.1.0/features")
962962
.send()?
@@ -980,7 +980,7 @@ mod tests {
980980
.features(features)
981981
.create()?;
982982

983-
let page = kuchiki::parse_html().one(
983+
let page = kuchikiki::parse_html().one(
984984
env.frontend()
985985
.get("/crate/library/0.1.0/features")
986986
.send()?
@@ -1004,7 +1004,7 @@ mod tests {
10041004
.features(features)
10051005
.create()?;
10061006

1007-
let page = kuchiki::parse_html().one(
1007+
let page = kuchikiki::parse_html().one(
10081008
env.frontend()
10091009
.get("/crate/library/0.1.0/features")
10101010
.send()?
@@ -1036,7 +1036,7 @@ mod tests {
10361036
.features(features)
10371037
.create()?;
10381038

1039-
let page = kuchiki::parse_html().one(
1039+
let page = kuchikiki::parse_html().one(
10401040
env.frontend()
10411041
.get("/crate/library/0.1.0/features")
10421042
.send()?
@@ -1064,7 +1064,7 @@ mod tests {
10641064
.conn()
10651065
.query("UPDATE releases SET features = NULL WHERE id = $1", &[&id])?;
10661066

1067-
let page = kuchiki::parse_html().one(
1067+
let page = kuchikiki::parse_html().one(
10681068
env.frontend()
10691069
.get("/crate/library/0.1.0/features")
10701070
.send()?
@@ -1090,7 +1090,7 @@ mod tests {
10901090
let response = env.frontend().get("/crate/dummy/0.4.0").send()?;
10911091
assert!(response.status().is_success());
10921092

1093-
let platform_links: Vec<(String, String)> = kuchiki::parse_html()
1093+
let platform_links: Vec<(String, String)> = kuchikiki::parse_html()
10941094
.one(response.text()?)
10951095
.select(r#"a[aria-label="Platform"] + ul li a"#)
10961096
.expect("invalid selector")

‎src/web/error.rs

+8-7
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,12 @@ pub(crate) type AxumResult<T> = Result<T, AxumNope>;
136136
#[cfg(test)]
137137
mod tests {
138138
use crate::test::wrapper;
139-
use kuchiki::traits::TendrilSink;
139+
use kuchikiki::traits::TendrilSink;
140140

141141
#[test]
142142
fn check_404_page_content_crate() {
143143
wrapper(|env| {
144-
let page = kuchiki::parse_html().one(
144+
let page = kuchikiki::parse_html().one(
145145
env.frontend()
146146
.get("/crate-which-doesnt-exist")
147147
.send()?
@@ -164,7 +164,7 @@ mod tests {
164164
#[test]
165165
fn check_404_page_content_resource() {
166166
wrapper(|env| {
167-
let page = kuchiki::parse_html().one(
167+
let page = kuchikiki::parse_html().one(
168168
env.frontend()
169169
.get("/resource-which-doesnt-exist.js")
170170
.send()?
@@ -188,8 +188,8 @@ mod tests {
188188
fn check_404_page_content_not_semver_version() {
189189
wrapper(|env| {
190190
env.fake_release().name("dummy").create()?;
191-
let page =
192-
kuchiki::parse_html().one(env.frontend().get("/dummy/not-semver").send()?.text()?);
191+
let page = kuchikiki::parse_html()
192+
.one(env.frontend().get("/dummy/not-semver").send()?.text()?);
193193
assert_eq!(page.select("#crate-title").unwrap().count(), 1);
194194
assert_eq!(
195195
page.select("#crate-title")
@@ -208,7 +208,8 @@ mod tests {
208208
fn check_404_page_content_nonexistent_version() {
209209
wrapper(|env| {
210210
env.fake_release().name("dummy").version("1.0.0").create()?;
211-
let page = kuchiki::parse_html().one(env.frontend().get("/dummy/2.0").send()?.text()?);
211+
let page =
212+
kuchikiki::parse_html().one(env.frontend().get("/dummy/2.0").send()?.text()?);
212213
assert_eq!(page.select("#crate-title").unwrap().count(), 1);
213214
assert_eq!(
214215
page.select("#crate-title")
@@ -231,7 +232,7 @@ mod tests {
231232
.version("1.0.0")
232233
.yanked(true)
233234
.create()?;
234-
let page = kuchiki::parse_html().one(env.frontend().get("/dummy/*").send()?.text()?);
235+
let page = kuchikiki::parse_html().one(env.frontend().get("/dummy/*").send()?.text()?);
235236
assert_eq!(page.select("#crate-title").unwrap().count(), 1);
236237
assert_eq!(
237238
page.select("#crate-title")

‎src/web/mod.rs

+8-7
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ mod test {
584584
use super::*;
585585
use crate::{docbuilder::DocCoverage, test::*, web::match_version};
586586
use axum::http::StatusCode;
587-
use kuchiki::traits::TendrilSink;
587+
use kuchikiki::traits::TendrilSink;
588588
use serde_json::json;
589589
use test_case::test_case;
590590

@@ -618,7 +618,7 @@ mod test {
618618

619619
fn clipboard_is_present_for_path(path: &str, web: &TestFrontend) -> bool {
620620
let data = web.get(path).send().unwrap().text().unwrap();
621-
let node = kuchiki::parse_html().one(data);
621+
let node = kuchikiki::parse_html().one(data);
622622
node.select("#clipboard").unwrap().count() == 1
623623
}
624624

@@ -647,15 +647,16 @@ mod test {
647647
.create()?;
648648
let web = env.frontend();
649649

650-
let foo_crate = kuchiki::parse_html().one(web.get("/crate/foo/0.0.1").send()?.text()?);
650+
let foo_crate =
651+
kuchikiki::parse_html().one(web.get("/crate/foo/0.0.1").send()?.text()?);
651652
for value in &["60%", "6", "10", "2", "1"] {
652653
assert!(foo_crate
653654
.select(".pure-menu-item b")
654655
.unwrap()
655656
.any(|e| dbg!(e.text_contents()).contains(value)));
656657
}
657658

658-
let foo_doc = kuchiki::parse_html().one(web.get("/foo/0.0.1/foo").send()?.text()?);
659+
let foo_doc = kuchikiki::parse_html().one(web.get("/foo/0.0.1/foo").send()?.text()?);
659660
assert!(foo_doc
660661
.select(".pure-menu-link b")
661662
.unwrap()
@@ -834,7 +835,7 @@ mod test {
834835
release("0.1.0", env);
835836
let web = env.frontend();
836837
let text = web.get("/foo/0.1.0/foo").send()?.text()?;
837-
let platform = kuchiki::parse_html()
838+
let platform = kuchikiki::parse_html()
838839
.one(text)
839840
.select(r#"ul > li > a[aria-label="Platform"]"#)
840841
.unwrap()
@@ -848,7 +849,7 @@ mod test {
848849
.add_platform("x86_64-unknown-linux-musl")
849850
.create()?;
850851
let text = web.get("/foo/0.2.0/foo").send()?.text()?;
851-
let platform = kuchiki::parse_html()
852+
let platform = kuchikiki::parse_html()
852853
.one(text)
853854
.select(r#"ul > li > a[aria-label="Platform"]"#)
854855
.unwrap()
@@ -1028,7 +1029,7 @@ mod test {
10281029
release("0.1.0", env);
10291030
let web = env.frontend();
10301031
let text = web.get("/foo/0.1.0/foo").send()?.text()?;
1031-
let tabindex = kuchiki::parse_html()
1032+
let tabindex = kuchikiki::parse_html()
10321033
.one(text)
10331034
.select(r#"#nav-search[tabindex="-1"]"#)
10341035
.unwrap()

‎src/web/releases.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ mod tests {
753753
};
754754
use anyhow::Error;
755755
use chrono::{Duration, TimeZone};
756-
use kuchiki::traits::TendrilSink;
756+
use kuchikiki::traits::TendrilSink;
757757
use mockito::Matcher;
758758
use reqwest::StatusCode;
759759
use serde_json::json;
@@ -930,7 +930,7 @@ mod tests {
930930
let response = web.get("/releases/search?query=some_random_crate").send()?;
931931
assert!(response.status().is_success());
932932

933-
let page = kuchiki::parse_html().one(response.text()?);
933+
let page = kuchikiki::parse_html().one(response.text()?);
934934

935935
let other_search_links: Vec<_> = page
936936
.select("a")
@@ -1167,7 +1167,7 @@ mod tests {
11671167
let response = web.get(path).send()?;
11681168
assert!(response.status().is_success());
11691169

1170-
let page = kuchiki::parse_html().one(response.text()?);
1170+
let page = kuchikiki::parse_html().one(response.text()?);
11711171

11721172
Ok(page
11731173
.select("a.release")
@@ -1422,13 +1422,13 @@ mod tests {
14221422

14231423
cdn::queue_crate_invalidation(&mut *env.db().conn(), &env.config(), "krate_2")?;
14241424

1425-
let empty = kuchiki::parse_html().one(web.get("/releases/queue").send()?.text()?);
1425+
let empty = kuchikiki::parse_html().one(web.get("/releases/queue").send()?.text()?);
14261426
assert!(empty
14271427
.select(".release > strong")
14281428
.expect("missing heading")
14291429
.any(|el| el.text_contents().contains("active CDN deployments")));
14301430

1431-
let full = kuchiki::parse_html().one(web.get("/releases/queue").send()?.text()?);
1431+
let full = kuchikiki::parse_html().one(web.get("/releases/queue").send()?.text()?);
14321432
let items = full
14331433
.select(".queue-list > li")
14341434
.expect("missing list items")
@@ -1449,7 +1449,7 @@ mod tests {
14491449
let queue = env.build_queue();
14501450
let web = env.frontend();
14511451

1452-
let empty = kuchiki::parse_html().one(web.get("/releases/queue").send()?.text()?);
1452+
let empty = kuchikiki::parse_html().one(web.get("/releases/queue").send()?.text()?);
14531453
assert!(empty
14541454
.select(".queue-list > strong")
14551455
.expect("missing heading")
@@ -1464,7 +1464,7 @@ mod tests {
14641464
queue.add_crate("bar", "0.1.0", -10, None)?;
14651465
queue.add_crate("baz", "0.0.1", 10, None)?;
14661466

1467-
let full = kuchiki::parse_html().one(web.get("/releases/queue").send()?.text()?);
1467+
let full = kuchikiki::parse_html().one(web.get("/releases/queue").send()?.text()?);
14681468
let items = full
14691469
.select(".queue-list > li")
14701470
.expect("missing list items")
@@ -1511,7 +1511,7 @@ mod tests {
15111511
let resp = web.get("").send()?;
15121512
assert!(resp.status().is_success());
15131513

1514-
let html = kuchiki::parse_html().one(resp.text()?);
1514+
let html = kuchikiki::parse_html().one(resp.text()?);
15151515
for link in html.select("a").unwrap() {
15161516
let link = link.as_node().as_element().unwrap();
15171517

@@ -1545,7 +1545,7 @@ mod tests {
15451545
let sel = ".pure-menu-horizontal>.pure-menu-list>.pure-menu-item>.pure-menu-link>.title";
15461546
wrapper(|env| {
15471547
let tester = |url| {
1548-
let page = kuchiki::parse_html()
1548+
let page = kuchikiki::parse_html()
15491549
.one(env.frontend().get(url).send().unwrap().text().unwrap());
15501550
assert_eq!(page.select("#crate-title").unwrap().count(), 1);
15511551
let not_matching = page

‎src/web/rustdoc.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -935,7 +935,7 @@ pub(crate) async fn static_asset_handler(
935935
mod test {
936936
use crate::{test::*, web::cache::CachePolicy, Config};
937937
use anyhow::Context;
938-
use kuchiki::traits::TendrilSink;
938+
use kuchikiki::traits::TendrilSink;
939939
use reqwest::{blocking::ClientBuilder, redirect, StatusCode};
940940
use std::collections::BTreeMap;
941941
use test_case::test_case;
@@ -955,7 +955,7 @@ mod test {
955955
);
956956
let data = response.text()?;
957957
info!("fetched path {} and got content {}\nhelp: if this is missing the header, remember to add <html><head></head><body></body></html>", path, data);
958-
let dom = kuchiki::parse_html().one(data);
958+
let dom = kuchikiki::parse_html().one(data);
959959

960960
if let Some(elem) = dom
961961
.select("form > ul > li > a.warn")
@@ -1359,7 +1359,7 @@ mod test {
13591359
fn has_yanked_warning(path: &str, web: &TestFrontend) -> Result<bool, anyhow::Error> {
13601360
assert_success(path, web)?;
13611361
let data = web.get(path).send()?.text()?;
1362-
Ok(kuchiki::parse_html()
1362+
Ok(kuchikiki::parse_html()
13631363
.one(data)
13641364
.select("form > ul > li > .warn")
13651365
.expect("invalid selector")
@@ -1604,7 +1604,7 @@ mod test {
16041604
) -> Result<Vec<(String, String, String)>, anyhow::Error> {
16051605
assert_success(path, web)?;
16061606
let data = web.get(path).send()?.text()?;
1607-
let dom = kuchiki::parse_html().one(data);
1607+
let dom = kuchikiki::parse_html().one(data);
16081608
Ok(dom
16091609
.select(r#"a[aria-label="Platform"] + ul li a"#)
16101610
.expect("invalid selector")
@@ -2098,7 +2098,7 @@ mod test {
20982098
.version("0.18.0")
20992099
.readme(readme)
21002100
.create()?;
2101-
let page = kuchiki::parse_html()
2101+
let page = kuchikiki::parse_html()
21022102
.one(env.frontend().get("/crate/strum/0.18.0").send()?.text()?);
21032103
let rendered = page.select_first("#main").expect("missing readme");
21042104
println!("{}", rendered.text_contents());
@@ -2127,7 +2127,7 @@ mod test {
21272127

21282128
let status = |version| -> Result<_, anyhow::Error> {
21292129
let page =
2130-
kuchiki::parse_html().one(web.get("/crate/hexponent/0.3.0").send()?.text()?);
2130+
kuchikiki::parse_html().one(web.get("/crate/hexponent/0.3.0").send()?.text()?);
21312131
let selector = format!(r#"ul > li a[href="/crate/hexponent/{version}"]"#);
21322132
let anchor = page
21332133
.select(&selector)
@@ -2258,7 +2258,7 @@ mod test {
22582258
.create()?;
22592259

22602260
// test rustdoc pages stay on the documentation
2261-
let page = kuchiki::parse_html()
2261+
let page = kuchikiki::parse_html()
22622262
.one(env.frontend().get("/hexponent/releases").send()?.text()?);
22632263
let selector =
22642264
r#"ul > li a[href="/crate/hexponent/0.3.1/target-redirect/hexponent/index.html"]"#
@@ -2270,7 +2270,7 @@ mod test {
22702270
);
22712271

22722272
// test /crate pages stay on /crate
2273-
let page = kuchiki::parse_html().one(
2273+
let page = kuchikiki::parse_html().one(
22742274
env.frontend()
22752275
.get("/crate/hexponent/0.3.0/")
22762276
.send()?
@@ -2297,7 +2297,7 @@ mod test {
22972297
.rustdoc_file("testing/index.html")
22982298
.create()?;
22992299

2300-
let dom = kuchiki::parse_html().one(
2300+
let dom = kuchikiki::parse_html().one(
23012301
env.frontend()
23022302
.get("/testing/0.1.0/testing/")
23032303
.send()?
@@ -2325,7 +2325,7 @@ mod test {
23252325
.github_stats("https://git.example.com", 123, 321, 333)
23262326
.create()?;
23272327

2328-
let dom = kuchiki::parse_html().one(
2328+
let dom = kuchikiki::parse_html().one(
23292329
env.frontend()
23302330
.get("/testing/0.1.0/testing/")
23312331
.send()?

‎src/web/source.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -320,12 +320,12 @@ pub(crate) async fn source_browser_handler(
320320
mod tests {
321321
use crate::test::*;
322322
use crate::web::cache::CachePolicy;
323-
use kuchiki::traits::TendrilSink;
323+
use kuchikiki::traits::TendrilSink;
324324
use reqwest::StatusCode;
325325
use test_case::test_case;
326326

327327
fn get_file_list_links(body: &str) -> Vec<String> {
328-
let dom = kuchiki::parse_html().one(body);
328+
let dom = kuchikiki::parse_html().one(body);
329329

330330
dom.select(".package-menu > ul > li > a")
331331
.expect("invalid selector")

0 commit comments

Comments
 (0)
Please sign in to comment.