Skip to content

Commit b1b4ddc

Browse files
committed
fix serving custom CSS coming from --extend-css in rustdoc
1 parent 9185fba commit b1b4ddc

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

src/web/rustdoc.rs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,9 @@ pub(crate) async fn rustdoc_redirector_handler(
167167
trace!(?matched_release, "matched version");
168168
let crate_name = matched_release.name.clone();
169169

170-
// we might get requests to crate-specific JS files here.
170+
// we might get requests to crate-specific JS/CSS files here.
171171
if let Some(ref target) = params.target {
172-
if target.ends_with(".js") {
172+
if target.ends_with(".js") || target.ends_with(".css") {
173173
// this URL is actually from a crate-internal path, serve it there instead
174174
return async {
175175
let krate = CrateDetails::from_matched_release(&mut conn, matched_release).await?;
@@ -207,7 +207,7 @@ pub(crate) async fn rustdoc_redirector_handler(
207207
}
208208
}
209209
}
210-
.instrument(info_span!("serve JS for crate"))
210+
.instrument(info_span!("serve asset for crate"))
211211
.await;
212212
}
213213
}
@@ -2540,6 +2540,26 @@ mod test {
25402540
});
25412541
}
25422542

2543+
#[test_case("something.js")]
2544+
#[test_case("someting.css")]
2545+
fn serve_release_specific_static_assets(name: &str) {
2546+
wrapper(|env| {
2547+
env.fake_release()
2548+
.name("dummy")
2549+
.version("0.1.0")
2550+
.archive_storage(true)
2551+
.rustdoc_file_with(name, b"content")
2552+
.create()?;
2553+
2554+
let web = env.frontend();
2555+
let response = web.get(&format!("/dummy/0.1.0/{name}")).send()?;
2556+
assert!(response.status().is_success());
2557+
assert_eq!(response.text()?, "content");
2558+
2559+
Ok(())
2560+
})
2561+
}
2562+
25432563
#[test_case("search-1234.js")]
25442564
#[test_case("settings-1234.js")]
25452565
fn fallback_to_root_storage_for_some_js_assets(path: &str) {

0 commit comments

Comments
 (0)