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