Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/project-model/src/tests.rs84
1 files changed, 30 insertions, 54 deletions
diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs
index 3034a19e93..73e4cb324a 100644
--- a/crates/project-model/src/tests.rs
+++ b/crates/project-model/src/tests.rs
@@ -18,43 +18,25 @@ use crate::{
};
fn load_cargo(file: &str) -> (CrateGraph, ProcMacroPaths) {
- load_cargo_with_overrides(file, CfgOverrides::default())
+ let project_workspace = load_workspace_from_metadata(file);
+ to_crate_graph(project_workspace, &mut Default::default())
}
fn load_cargo_with_overrides(
file: &str,
cfg_overrides: CfgOverrides,
) -> (CrateGraph, ProcMacroPaths) {
- let meta: Metadata = get_test_json_file(file);
- let manifest_path =
- ManifestPath::try_from(AbsPathBuf::try_from(meta.workspace_root.clone()).unwrap()).unwrap();
- let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default());
- let project_workspace = ProjectWorkspace {
- kind: ProjectWorkspaceKind::Cargo {
- cargo: cargo_workspace,
- build_scripts: WorkspaceBuildScripts::default(),
- rustc: Err(None),
- error: None,
- set_test: true,
- },
- cfg_overrides,
- sysroot: Sysroot::empty(),
- rustc_cfg: Vec::new(),
- toolchain: None,
- target_layout: Err("target_data_layout not loaded".into()),
- };
- to_crate_graph(project_workspace)
+ let project_workspace =
+ ProjectWorkspace { cfg_overrides, ..load_workspace_from_metadata(file) };
+ to_crate_graph(project_workspace, &mut Default::default())
}
-fn load_cargo_with_fake_sysroot(
- file_map: &mut FxHashMap<AbsPathBuf, FileId>,
- file: &str,
-) -> (CrateGraph, ProcMacroPaths) {
+fn load_workspace_from_metadata(file: &str) -> ProjectWorkspace {
let meta: Metadata = get_test_json_file(file);
let manifest_path =
ManifestPath::try_from(AbsPathBuf::try_from(meta.workspace_root.clone()).unwrap()).unwrap();
let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default());
- let project_workspace = ProjectWorkspace {
+ ProjectWorkspace {
kind: ProjectWorkspaceKind::Cargo {
cargo: cargo_workspace,
build_scripts: WorkspaceBuildScripts::default(),
@@ -62,21 +44,12 @@ fn load_cargo_with_fake_sysroot(
error: None,
set_test: true,
},
- sysroot: get_fake_sysroot(),
- rustc_cfg: Vec::new(),
cfg_overrides: Default::default(),
+ sysroot: Sysroot::empty(),
+ rustc_cfg: Vec::new(),
toolchain: None,
target_layout: Err("target_data_layout not loaded".into()),
- };
- project_workspace.to_crate_graph(
- &mut {
- |path| {
- let len = file_map.len();
- Some(*file_map.entry(path.to_path_buf()).or_insert(FileId::from_raw(len as u32)))
- }
- },
- &Default::default(),
- )
+ }
}
fn load_rust_project(file: &str) -> (CrateGraph, ProcMacroPaths) {
@@ -91,7 +64,7 @@ fn load_rust_project(file: &str) -> (CrateGraph, ProcMacroPaths) {
target_layout: Err(Arc::from("test has no data layout")),
cfg_overrides: Default::default(),
};
- to_crate_graph(project_workspace)
+ to_crate_graph(project_workspace, &mut Default::default())
}
fn get_test_json_file<T: DeserializeOwned>(file: &str) -> T {
@@ -160,13 +133,15 @@ fn rooted_project_json(data: ProjectJsonData) -> ProjectJson {
ProjectJson::new(None, base, data)
}
-fn to_crate_graph(project_workspace: ProjectWorkspace) -> (CrateGraph, ProcMacroPaths) {
+fn to_crate_graph(
+ project_workspace: ProjectWorkspace,
+ file_map: &mut FxHashMap<AbsPathBuf, FileId>,
+) -> (CrateGraph, ProcMacroPaths) {
project_workspace.to_crate_graph(
&mut {
- let mut counter = 0;
- move |_path| {
- counter += 1;
- Some(FileId::from_raw(counter))
+ |path| {
+ let len = file_map.len();
+ Some(*file_map.entry(path.to_path_buf()).or_insert(FileId::from_raw(len as u32)))
}
},
&Default::default(),
@@ -256,8 +231,7 @@ fn rust_project_is_proc_macro_has_proc_macro_dep() {
#[test]
fn crate_graph_dedup_identical() {
- let (mut crate_graph, proc_macros) =
- load_cargo_with_fake_sysroot(&mut Default::default(), "regex-metadata.json");
+ let (mut crate_graph, proc_macros) = load_cargo("regex-metadata.json");
crate_graph.sort_deps();
let (d_crate_graph, mut d_proc_macros) = (crate_graph.clone(), proc_macros.clone());
@@ -269,17 +243,19 @@ fn crate_graph_dedup_identical() {
#[test]
fn crate_graph_dedup() {
- let path_map = &mut Default::default();
- let (mut crate_graph, _proc_macros) =
- load_cargo_with_fake_sysroot(path_map, "ripgrep-metadata.json");
- assert_eq!(crate_graph.iter().count(), 81);
- crate_graph.sort_deps();
- let (regex_crate_graph, mut regex_proc_macros) =
- load_cargo_with_fake_sysroot(path_map, "regex-metadata.json");
- assert_eq!(regex_crate_graph.iter().count(), 60);
+ let mut file_map = Default::default();
+
+ let ripgrep_workspace = load_workspace_from_metadata("ripgrep-metadata.json");
+ let (mut crate_graph, _proc_macros) = to_crate_graph(ripgrep_workspace, &mut file_map);
+ assert_eq!(crate_graph.iter().count(), 71);
+ let regex_workspace = load_workspace_from_metadata("regex-metadata.json");
+ let (regex_crate_graph, mut regex_proc_macros) = to_crate_graph(regex_workspace, &mut file_map);
+ assert_eq!(regex_crate_graph.iter().count(), 50);
+
+ crate_graph.sort_deps();
crate_graph.extend(regex_crate_graph, &mut regex_proc_macros);
- assert_eq!(crate_graph.iter().count(), 118);
+ assert_eq!(crate_graph.iter().count(), 108);
}
#[test]