Skip to content

Commit 9039172

Browse files
jyn514Joshua Nelson
authored and
Joshua Nelson
committed
Add test that readme is rendered
1 parent 022121e commit 9039172

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

src/test/fakes.rs

+15-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ pub(crate) struct FakeRelease<'a> {
1919
registry_crate_data: RegistryCrateData,
2020
has_docs: bool,
2121
has_examples: bool,
22+
/// This stores the content, while `package.readme` stores the filename
23+
readme: Option<&'a str>,
2224
}
2325

2426
impl<'a> FakeRelease<'a> {
@@ -62,6 +64,7 @@ impl<'a> FakeRelease<'a> {
6264
},
6365
has_docs: true,
6466
has_examples: false,
67+
readme: None,
6568
}
6669
}
6770

@@ -92,7 +95,7 @@ impl<'a> FakeRelease<'a> {
9295
self
9396
}
9497

95-
pub fn author(mut self, author: &str) -> Self {
98+
pub(crate) fn author(mut self, author: &str) -> Self {
9699
self.package.authors = vec![author.into()];
97100
self
98101
}
@@ -153,6 +156,12 @@ impl<'a> FakeRelease<'a> {
153156
self
154157
}
155158

159+
/// NOTE: this should be markdown. It will be rendered as HTML when served.
160+
pub(crate) fn readme(mut self, content: &'a str) -> Self {
161+
self.readme = Some(content);
162+
self.source_file("README.md", content.as_bytes())
163+
}
164+
156165
/// Returns the release_id
157166
pub(crate) fn create(self) -> Result<i32, Error> {
158167
use std::collections::HashSet;
@@ -223,10 +232,14 @@ impl<'a> FakeRelease<'a> {
223232
}
224233
}
225234

235+
let crate_dir = tempdir.path();
236+
if let Some(markdown) = self.readme {
237+
fs::write(crate_dir.join("README.md"), markdown)?;
238+
}
226239
let release_id = crate::db::add_package_into_database(
227240
&db.conn(),
228241
&package,
229-
tempdir.path(),
242+
crate_dir,
230243
&self.build_result,
231244
self.default_target.unwrap_or("x86_64-unknown-linux-gnu"),
232245
source_meta,

src/web/rustdoc.rs

+22
Original file line numberDiff line numberDiff line change
@@ -1445,4 +1445,26 @@ mod test {
14451445
Ok(())
14461446
})
14471447
}
1448+
1449+
#[test]
1450+
fn test_readme_rendered_as_html() {
1451+
wrapper(|env| {
1452+
let db = env.db();
1453+
let readme = "# Overview";
1454+
db.fake_release()
1455+
.name("strum")
1456+
.version("0.18.0")
1457+
.readme(readme)
1458+
.create()?;
1459+
let page = kuchiki::parse_html()
1460+
.one(env.frontend().get("/crate/strum/0.18.0").send()?.text()?);
1461+
let rendered = page.select_first("#main").expect("missing readme");
1462+
println!("{}", rendered.text_contents());
1463+
rendered
1464+
.as_node()
1465+
.select_first("h1")
1466+
.expect("`# Overview` was not rendered as HTML");
1467+
Ok(())
1468+
})
1469+
}
14481470
}

0 commit comments

Comments
 (0)