Skip to content

Commit 5ca4751

Browse files
nipunn1313Turbo87
authored andcommitted
admin::render_readmes: Add tests
1 parent b3776ff commit 5ca4751

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

src/admin/render_readmes.rs

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,3 +257,83 @@ fn find_file_by_path<R: Read>(
257257
.unwrap_or_else(|_| panic!("[{}] Couldn't read file contents", pkg_name));
258258
contents
259259
}
260+
261+
#[cfg(test)]
262+
mod tests {
263+
use std::io::Write;
264+
use tar;
265+
266+
use super::render_pkg_readme;
267+
268+
fn add_file<W: Write>(pkg: &mut tar::Builder<W>, path: &str, content: &[u8]) {
269+
let mut header = tar::Header::new_gnu();
270+
header.set_size(content.len() as u64);
271+
header.set_cksum();
272+
pkg.append_data(&mut header, path, content).unwrap();
273+
}
274+
275+
#[test]
276+
fn test_render_pkg_readme() {
277+
let mut pkg = tar::Builder::new(vec![]);
278+
add_file(
279+
&mut pkg,
280+
"foo-0.0.1/Cargo.toml",
281+
br#"
282+
[package]
283+
readme = "README.md"
284+
"#,
285+
);
286+
add_file(&mut pkg, "foo-0.0.1/README.md", b"readme");
287+
let serialized_archive = pkg.into_inner().unwrap();
288+
let result =
289+
render_pkg_readme(tar::Archive::new(&*serialized_archive), "foo-0.0.1").unwrap();
290+
assert!(result.contains("readme"))
291+
}
292+
293+
#[test]
294+
fn test_render_pkg_readme_w_link() {
295+
let mut pkg = tar::Builder::new(vec![]);
296+
add_file(
297+
&mut pkg,
298+
"foo-0.0.1/Cargo.toml",
299+
br#"
300+
[package]
301+
readme = "README.md"
302+
repository = "https://github.com/foo/foo"
303+
"#,
304+
);
305+
add_file(
306+
&mut pkg,
307+
"foo-0.0.1/README.md",
308+
b"readme [link](./Other.md)",
309+
);
310+
let serialized_archive = pkg.into_inner().unwrap();
311+
let result =
312+
render_pkg_readme(tar::Archive::new(&*serialized_archive), "foo-0.0.1").unwrap();
313+
assert!(result.contains("\"https://github.com/foo/foo/blob/HEAD/./Other.md\""))
314+
}
315+
316+
#[test]
317+
fn test_render_pkg_readme_not_at_root() {
318+
let mut pkg = tar::Builder::new(vec![]);
319+
add_file(
320+
&mut pkg,
321+
"foo-0.0.1/Cargo.toml",
322+
br#"
323+
[package]
324+
readme = "docs/README.md"
325+
repository = "https://github.com/foo/foo"
326+
"#,
327+
);
328+
add_file(
329+
&mut pkg,
330+
"foo-0.0.1/docs/README.md",
331+
b"docs/readme [link](./Other.md)",
332+
);
333+
let serialized_archive = pkg.into_inner().unwrap();
334+
let result =
335+
render_pkg_readme(tar::Archive::new(&*serialized_archive), "foo-0.0.1").unwrap();
336+
assert!(result.contains("docs/readme"));
337+
assert!(result.contains("\"https://github.com/foo/foo/blob/HEAD/docs/./Other.md\""))
338+
}
339+
}

0 commit comments

Comments
 (0)