Skip to content

Commit e15df1f

Browse files
committed
Add back tests removed in #18080
1 parent 6043412 commit e15df1f

File tree

6 files changed

+19629
-0
lines changed

6 files changed

+19629
-0
lines changed

crates/project-model/src/tests.rs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,39 @@ fn load_cargo_with_overrides(
4646
to_crate_graph(project_workspace)
4747
}
4848

49+
fn load_cargo_with_fake_sysroot(
50+
file_map: &mut FxHashMap<AbsPathBuf, FileId>,
51+
file: &str,
52+
) -> (CrateGraph, ProcMacroPaths) {
53+
let meta: Metadata = get_test_json_file(file);
54+
let manifest_path =
55+
ManifestPath::try_from(AbsPathBuf::try_from(meta.workspace_root.clone()).unwrap()).unwrap();
56+
let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default());
57+
let project_workspace = ProjectWorkspace {
58+
kind: ProjectWorkspaceKind::Cargo {
59+
cargo: cargo_workspace,
60+
build_scripts: WorkspaceBuildScripts::default(),
61+
rustc: Err(None),
62+
error: None,
63+
set_test: true,
64+
},
65+
sysroot: get_fake_sysroot(),
66+
rustc_cfg: Vec::new(),
67+
cfg_overrides: Default::default(),
68+
toolchain: None,
69+
target_layout: Err("target_data_layout not loaded".into()),
70+
};
71+
project_workspace.to_crate_graph(
72+
&mut {
73+
|path| {
74+
let len = file_map.len();
75+
Some(*file_map.entry(path.to_path_buf()).or_insert(FileId::from_raw(len as u32)))
76+
}
77+
},
78+
&Default::default(),
79+
)
80+
}
81+
4982
fn load_rust_project(file: &str) -> (CrateGraph, ProcMacroPaths) {
5083
let data = get_test_json_file(file);
5184
let project = rooted_project_json(data);
@@ -221,6 +254,34 @@ fn rust_project_is_proc_macro_has_proc_macro_dep() {
221254
crate_data.dependencies.iter().find(|&dep| dep.name.deref() == "proc_macro").unwrap();
222255
}
223256

257+
#[test]
258+
fn crate_graph_dedup_identical() {
259+
let (mut crate_graph, proc_macros) =
260+
load_cargo_with_fake_sysroot(&mut Default::default(), "regex-metadata.json");
261+
crate_graph.sort_deps();
262+
263+
let (d_crate_graph, mut d_proc_macros) = (crate_graph.clone(), proc_macros.clone());
264+
265+
crate_graph.extend(d_crate_graph.clone(), &mut d_proc_macros);
266+
assert!(crate_graph.iter().eq(d_crate_graph.iter()));
267+
assert_eq!(proc_macros, d_proc_macros);
268+
}
269+
270+
#[test]
271+
fn crate_graph_dedup() {
272+
let path_map = &mut Default::default();
273+
let (mut crate_graph, _proc_macros) =
274+
load_cargo_with_fake_sysroot(path_map, "ripgrep-metadata.json");
275+
assert_eq!(crate_graph.iter().count(), 81);
276+
crate_graph.sort_deps();
277+
let (regex_crate_graph, mut regex_proc_macros) =
278+
load_cargo_with_fake_sysroot(path_map, "regex-metadata.json");
279+
assert_eq!(regex_crate_graph.iter().count(), 60);
280+
281+
crate_graph.extend(regex_crate_graph, &mut regex_proc_macros);
282+
assert_eq!(crate_graph.iter().count(), 118);
283+
}
284+
224285
#[test]
225286
fn smoke_test_real_sysroot_cargo() {
226287
let file_map = &mut FxHashMap::<AbsPathBuf, FileId>::default();

0 commit comments

Comments
 (0)