Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/tests.rs')
-rw-r--r--crates/project-model/src/tests.rs71
1 files changed, 14 insertions, 57 deletions
diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs
index 74042e925e..b9b1b701f6 100644
--- a/crates/project-model/src/tests.rs
+++ b/crates/project-model/src/tests.rs
@@ -9,6 +9,7 @@ use expect_test::{expect_file, ExpectFile};
use paths::{AbsPath, AbsPathBuf};
use rustc_hash::FxHashMap;
use serde::de::DeserializeOwned;
+use triomphe::Arc;
use crate::{
CargoWorkspace, CfgOverrides, ProjectJson, ProjectJsonData, ProjectWorkspace, Sysroot,
@@ -34,6 +35,7 @@ fn load_cargo_with_overrides(
cfg_overrides,
toolchain: None,
target_layout: Err("target_data_layout not loaded".into()),
+ cargo_config_extra_env: Default::default(),
};
to_crate_graph(project_workspace)
}
@@ -53,6 +55,7 @@ fn load_cargo_with_fake_sysroot(
cfg_overrides: Default::default(),
toolchain: None,
target_layout: Err("target_data_layout not loaded".into()),
+ cargo_config_extra_env: Default::default(),
};
project_workspace.to_crate_graph(
&mut {
@@ -69,8 +72,13 @@ fn load_rust_project(file: &str) -> (CrateGraph, ProcMacroPaths) {
let data = get_test_json_file(file);
let project = rooted_project_json(data);
let sysroot = Ok(get_fake_sysroot());
- let project_workspace =
- ProjectWorkspace::Json { project, sysroot, rustc_cfg: Vec::new(), toolchain: None };
+ let project_workspace = ProjectWorkspace::Json {
+ project,
+ sysroot,
+ rustc_cfg: Vec::new(),
+ toolchain: None,
+ target_layout: Err(Arc::from("test has no data layout")),
+ };
to_crate_graph(project_workspace)
}
@@ -125,7 +133,7 @@ fn get_fake_sysroot() -> Sysroot {
// fake sysroot, so we give them both the same path:
let sysroot_dir = AbsPathBuf::assert(sysroot_path);
let sysroot_src_dir = sysroot_dir.clone();
- Sysroot::load(sysroot_dir, sysroot_src_dir, false)
+ Sysroot::load(sysroot_dir, Some(Ok(sysroot_src_dir)), false)
}
fn rooted_project_json(data: ProjectJsonData) -> ProjectJson {
@@ -230,7 +238,7 @@ fn crate_graph_dedup_identical() {
let (d_crate_graph, mut d_proc_macros) = (crate_graph.clone(), proc_macros.clone());
- crate_graph.extend(d_crate_graph.clone(), &mut d_proc_macros, |_| ());
+ crate_graph.extend(d_crate_graph.clone(), &mut d_proc_macros, |(_, a), (_, b)| a == b);
assert!(crate_graph.iter().eq(d_crate_graph.iter()));
assert_eq!(proc_macros, d_proc_macros);
}
@@ -246,63 +254,11 @@ fn crate_graph_dedup() {
load_cargo_with_fake_sysroot(path_map, "regex-metadata.json");
assert_eq!(regex_crate_graph.iter().count(), 60);
- crate_graph.extend(regex_crate_graph, &mut regex_proc_macros, |_| ());
+ crate_graph.extend(regex_crate_graph, &mut regex_proc_macros, |(_, a), (_, b)| a == b);
assert_eq!(crate_graph.iter().count(), 118);
}
#[test]
-fn test_deduplicate_origin_dev() {
- let path_map = &mut Default::default();
- let (mut crate_graph, _proc_macros) =
- load_cargo_with_fake_sysroot(path_map, "deduplication_crate_graph_A.json");
- crate_graph.sort_deps();
- let (crate_graph_1, mut _proc_macros_2) =
- load_cargo_with_fake_sysroot(path_map, "deduplication_crate_graph_B.json");
-
- crate_graph.extend(crate_graph_1, &mut _proc_macros_2, |_| ());
-
- let mut crates_named_p2 = vec![];
- for id in crate_graph.iter() {
- let krate = &crate_graph[id];
- if let Some(name) = krate.display_name.as_ref() {
- if name.to_string() == "p2" {
- crates_named_p2.push(krate);
- }
- }
- }
-
- assert!(crates_named_p2.len() == 1);
- let p2 = crates_named_p2[0];
- assert!(p2.origin.is_local());
-}
-
-#[test]
-fn test_deduplicate_origin_dev_rev() {
- let path_map = &mut Default::default();
- let (mut crate_graph, _proc_macros) =
- load_cargo_with_fake_sysroot(path_map, "deduplication_crate_graph_B.json");
- crate_graph.sort_deps();
- let (crate_graph_1, mut _proc_macros_2) =
- load_cargo_with_fake_sysroot(path_map, "deduplication_crate_graph_A.json");
-
- crate_graph.extend(crate_graph_1, &mut _proc_macros_2, |_| ());
-
- let mut crates_named_p2 = vec![];
- for id in crate_graph.iter() {
- let krate = &crate_graph[id];
- if let Some(name) = krate.display_name.as_ref() {
- if name.to_string() == "p2" {
- crates_named_p2.push(krate);
- }
- }
- }
-
- assert!(crates_named_p2.len() == 1);
- let p2 = crates_named_p2[0];
- assert!(p2.origin.is_local());
-}
-
-#[test]
fn smoke_test_real_sysroot_cargo() {
if std::env::var("SYSROOT_CARGO_METADATA").is_err() {
return;
@@ -327,6 +283,7 @@ fn smoke_test_real_sysroot_cargo() {
cfg_overrides: Default::default(),
toolchain: None,
target_layout: Err("target_data_layout not loaded".into()),
+ cargo_config_extra_env: Default::default(),
};
project_workspace.to_crate_graph(
&mut {