Skip to content

Commit 48d11df

Browse files
committed
Remove load_cargo_with_fake_sysroot
1 parent ccbc3d2 commit 48d11df

File tree

1 file changed

+30
-54
lines changed
  • src/tools/rust-analyzer/crates/project-model/src

1 file changed

+30
-54
lines changed

src/tools/rust-analyzer/crates/project-model/src/tests.rs

Lines changed: 30 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -18,65 +18,38 @@ use crate::{
1818
};
1919

2020
fn load_cargo(file: &str) -> (CrateGraph, ProcMacroPaths) {
21-
load_cargo_with_overrides(file, CfgOverrides::default())
21+
let project_workspace = load_workspace_from_metadata(file);
22+
to_crate_graph(project_workspace, &mut Default::default())
2223
}
2324

2425
fn load_cargo_with_overrides(
2526
file: &str,
2627
cfg_overrides: CfgOverrides,
2728
) -> (CrateGraph, ProcMacroPaths) {
28-
let meta: Metadata = get_test_json_file(file);
29-
let manifest_path =
30-
ManifestPath::try_from(AbsPathBuf::try_from(meta.workspace_root.clone()).unwrap()).unwrap();
31-
let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default());
32-
let project_workspace = ProjectWorkspace {
33-
kind: ProjectWorkspaceKind::Cargo {
34-
cargo: cargo_workspace,
35-
build_scripts: WorkspaceBuildScripts::default(),
36-
rustc: Err(None),
37-
error: None,
38-
set_test: true,
39-
},
40-
cfg_overrides,
41-
sysroot: Sysroot::empty(),
42-
rustc_cfg: Vec::new(),
43-
toolchain: None,
44-
target_layout: Err("target_data_layout not loaded".into()),
45-
};
46-
to_crate_graph(project_workspace)
29+
let project_workspace =
30+
ProjectWorkspace { cfg_overrides, ..load_workspace_from_metadata(file) };
31+
to_crate_graph(project_workspace, &mut Default::default())
4732
}
4833

49-
fn load_cargo_with_fake_sysroot(
50-
file_map: &mut FxHashMap<AbsPathBuf, FileId>,
51-
file: &str,
52-
) -> (CrateGraph, ProcMacroPaths) {
34+
fn load_workspace_from_metadata(file: &str) -> ProjectWorkspace {
5335
let meta: Metadata = get_test_json_file(file);
5436
let manifest_path =
5537
ManifestPath::try_from(AbsPathBuf::try_from(meta.workspace_root.clone()).unwrap()).unwrap();
5638
let cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default());
57-
let project_workspace = ProjectWorkspace {
39+
ProjectWorkspace {
5840
kind: ProjectWorkspaceKind::Cargo {
5941
cargo: cargo_workspace,
6042
build_scripts: WorkspaceBuildScripts::default(),
6143
rustc: Err(None),
6244
error: None,
6345
set_test: true,
6446
},
65-
sysroot: get_fake_sysroot(),
66-
rustc_cfg: Vec::new(),
6747
cfg_overrides: Default::default(),
48+
sysroot: Sysroot::empty(),
49+
rustc_cfg: Vec::new(),
6850
toolchain: None,
6951
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-
)
52+
}
8053
}
8154

8255
fn load_rust_project(file: &str) -> (CrateGraph, ProcMacroPaths) {
@@ -91,7 +64,7 @@ fn load_rust_project(file: &str) -> (CrateGraph, ProcMacroPaths) {
9164
target_layout: Err(Arc::from("test has no data layout")),
9265
cfg_overrides: Default::default(),
9366
};
94-
to_crate_graph(project_workspace)
67+
to_crate_graph(project_workspace, &mut Default::default())
9568
}
9669

9770
fn get_test_json_file<T: DeserializeOwned>(file: &str) -> T {
@@ -160,13 +133,15 @@ fn rooted_project_json(data: ProjectJsonData) -> ProjectJson {
160133
ProjectJson::new(None, base, data)
161134
}
162135

163-
fn to_crate_graph(project_workspace: ProjectWorkspace) -> (CrateGraph, ProcMacroPaths) {
136+
fn to_crate_graph(
137+
project_workspace: ProjectWorkspace,
138+
file_map: &mut FxHashMap<AbsPathBuf, FileId>,
139+
) -> (CrateGraph, ProcMacroPaths) {
164140
project_workspace.to_crate_graph(
165141
&mut {
166-
let mut counter = 0;
167-
move |_path| {
168-
counter += 1;
169-
Some(FileId::from_raw(counter))
142+
|path| {
143+
let len = file_map.len();
144+
Some(*file_map.entry(path.to_path_buf()).or_insert(FileId::from_raw(len as u32)))
170145
}
171146
},
172147
&Default::default(),
@@ -256,8 +231,7 @@ fn rust_project_is_proc_macro_has_proc_macro_dep() {
256231

257232
#[test]
258233
fn crate_graph_dedup_identical() {
259-
let (mut crate_graph, proc_macros) =
260-
load_cargo_with_fake_sysroot(&mut Default::default(), "regex-metadata.json");
234+
let (mut crate_graph, proc_macros) = load_cargo("regex-metadata.json");
261235
crate_graph.sort_deps();
262236

263237
let (d_crate_graph, mut d_proc_macros) = (crate_graph.clone(), proc_macros.clone());
@@ -269,17 +243,19 @@ fn crate_graph_dedup_identical() {
269243

270244
#[test]
271245
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);
246+
let mut file_map = Default::default();
247+
248+
let ripgrep_workspace = load_workspace_from_metadata("ripgrep-metadata.json");
249+
let (mut crate_graph, _proc_macros) = to_crate_graph(ripgrep_workspace, &mut file_map);
250+
assert_eq!(crate_graph.iter().count(), 71);
280251

252+
let regex_workspace = load_workspace_from_metadata("regex-metadata.json");
253+
let (regex_crate_graph, mut regex_proc_macros) = to_crate_graph(regex_workspace, &mut file_map);
254+
assert_eq!(regex_crate_graph.iter().count(), 50);
255+
256+
crate_graph.sort_deps();
281257
crate_graph.extend(regex_crate_graph, &mut regex_proc_macros);
282-
assert_eq!(crate_graph.iter().count(), 118);
258+
assert_eq!(crate_graph.iter().count(), 108);
283259
}
284260

285261
#[test]

0 commit comments

Comments
 (0)