67 lines
2.0 KiB
Rust
67 lines
2.0 KiB
Rust
use super::{Fixture, app, command};
|
|
|
|
#[test]
|
|
fn locked_documentation_uses_verified_assets_and_retains_source_links() {
|
|
let mut fixture = Fixture::new(&["numbers@1.0.0"]);
|
|
fixture.package(
|
|
"numbers",
|
|
&[],
|
|
&[
|
|
("module/numbers/value/app.dever", &app("input + 1")),
|
|
("module/numbers/value/api.dever", &command()),
|
|
(
|
|
"module/numbers/value/doc/value.md",
|
|
"# 值\n\n## numbers.value.value\n\n返回输入加一。\n",
|
|
),
|
|
],
|
|
);
|
|
let mut reads = 0;
|
|
let project = dever::compiler::project::Project::load_with_artifacts(
|
|
&fixture.directory.0,
|
|
|sha256, _| {
|
|
reads += 1;
|
|
fixture
|
|
.assets
|
|
.get(sha256)
|
|
.cloned()
|
|
.ok_or_else(|| "missing test asset".into())
|
|
},
|
|
)
|
|
.unwrap();
|
|
assert_eq!(reads, 1);
|
|
fixture.assets.clear();
|
|
let mut index = project.inspect().unwrap();
|
|
assert_eq!(reads, 1);
|
|
assert!(
|
|
index.documentation_errors.is_empty(),
|
|
"{:?}",
|
|
index.documentation_errors
|
|
);
|
|
index.select("numbers.value.value", 1).unwrap();
|
|
let description = index
|
|
.documentation
|
|
.iter()
|
|
.find(|value| value.symbol == "numbers.value.value")
|
|
.unwrap();
|
|
assert_eq!(description.markdown, "返回输入加一。");
|
|
assert_eq!(index.documentation_files.len(), 1);
|
|
let file = &index.documentation_files[description.file];
|
|
assert!(
|
|
file.path
|
|
.ends_with("package/module/numbers/value/doc/value.md")
|
|
);
|
|
assert!(
|
|
file.text
|
|
.as_ref()
|
|
.unwrap()
|
|
.contains("## numbers.value.value")
|
|
);
|
|
let symbol = index
|
|
.symbols
|
|
.iter()
|
|
.find(|value| value.name == "numbers.value.value")
|
|
.unwrap();
|
|
let source = &index.files[symbol.declarations[0].file];
|
|
assert!(source.text.as_ref().unwrap().contains("input + 1"));
|
|
}
|