Files
core/test/rust/native/dependency/documentation.rs
T
2026-11-03 03:32:07 +00:00

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"));
}