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.rs104
1 files changed, 15 insertions, 89 deletions
diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs
index 3754accbb0..26c4c89f76 100644
--- a/crates/project-model/src/tests.rs
+++ b/crates/project-model/src/tests.rs
@@ -3,7 +3,7 @@ use std::{
path::{Path, PathBuf},
};
-use base_db::{CrateGraph, FileId};
+use base_db::{CrateGraph, FileId, ProcMacroPaths};
use cfg::{CfgAtom, CfgDiff};
use expect_test::{expect, Expect};
use paths::{AbsPath, AbsPathBuf};
@@ -14,11 +14,14 @@ use crate::{
WorkspaceBuildScripts,
};
-fn load_cargo(file: &str) -> CrateGraph {
+fn load_cargo(file: &str) -> (CrateGraph, ProcMacroPaths) {
load_cargo_with_overrides(file, CfgOverrides::default())
}
-fn load_cargo_with_overrides(file: &str, cfg_overrides: CfgOverrides) -> CrateGraph {
+fn load_cargo_with_overrides(
+ file: &str,
+ cfg_overrides: CfgOverrides,
+) -> (CrateGraph, ProcMacroPaths) {
let meta = get_test_json_file(file);
let cargo_workspace = CargoWorkspace::new(meta);
let project_workspace = ProjectWorkspace::Cargo {
@@ -34,7 +37,7 @@ fn load_cargo_with_overrides(file: &str, cfg_overrides: CfgOverrides) -> CrateGr
to_crate_graph(project_workspace)
}
-fn load_rust_project(file: &str) -> CrateGraph {
+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());
@@ -92,9 +95,8 @@ fn rooted_project_json(data: ProjectJsonData) -> ProjectJson {
ProjectJson::new(base, data)
}
-fn to_crate_graph(project_workspace: ProjectWorkspace) -> CrateGraph {
+fn to_crate_graph(project_workspace: ProjectWorkspace) -> (CrateGraph, ProcMacroPaths) {
project_workspace.to_crate_graph(
- &mut |_, _| Ok(Vec::new()),
&mut {
let mut counter = 0;
move |_path| {
@@ -117,7 +119,8 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() {
let cfg_overrides = CfgOverrides::Wildcard(
CfgDiff::new(Vec::new(), vec![CfgAtom::Flag("test".into())]).unwrap(),
);
- let crate_graph = load_cargo_with_overrides("hello-world-metadata.json", cfg_overrides);
+ let (crate_graph, _proc_macros) =
+ load_cargo_with_overrides("hello-world-metadata.json", cfg_overrides);
check_crate_graph(
crate_graph,
expect![[r#"
@@ -184,9 +187,6 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -265,9 +265,6 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -346,9 +343,6 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -427,9 +421,6 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -498,9 +489,6 @@ fn cargo_hello_world_project_model_with_wildcard_overrides() {
},
},
dependencies: [],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: Some(
"https://github.com/rust-lang/libc",
@@ -527,7 +515,8 @@ fn cargo_hello_world_project_model_with_selective_overrides() {
.collect(),
)
};
- let crate_graph = load_cargo_with_overrides("hello-world-metadata.json", cfg_overrides);
+ let (crate_graph, _proc_macros) =
+ load_cargo_with_overrides("hello-world-metadata.json", cfg_overrides);
check_crate_graph(
crate_graph,
expect![[r#"
@@ -596,9 +585,6 @@ fn cargo_hello_world_project_model_with_selective_overrides() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -679,9 +665,6 @@ fn cargo_hello_world_project_model_with_selective_overrides() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -762,9 +745,6 @@ fn cargo_hello_world_project_model_with_selective_overrides() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -845,9 +825,6 @@ fn cargo_hello_world_project_model_with_selective_overrides() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -916,9 +893,6 @@ fn cargo_hello_world_project_model_with_selective_overrides() {
},
},
dependencies: [],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: Some(
"https://github.com/rust-lang/libc",
@@ -936,7 +910,7 @@ fn cargo_hello_world_project_model_with_selective_overrides() {
#[test]
fn cargo_hello_world_project_model() {
- let crate_graph = load_cargo("hello-world-metadata.json");
+ let (crate_graph, _proc_macros) = load_cargo("hello-world-metadata.json");
check_crate_graph(
crate_graph,
expect![[r#"
@@ -1005,9 +979,6 @@ fn cargo_hello_world_project_model() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -1088,9 +1059,6 @@ fn cargo_hello_world_project_model() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -1171,9 +1139,6 @@ fn cargo_hello_world_project_model() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -1254,9 +1219,6 @@ fn cargo_hello_world_project_model() {
prelude: true,
},
],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -1325,9 +1287,6 @@ fn cargo_hello_world_project_model() {
},
},
dependencies: [],
- proc_macro: Err(
- "crate has not (yet) been built",
- ),
origin: CratesIo {
repo: Some(
"https://github.com/rust-lang/libc",
@@ -1345,7 +1304,7 @@ fn cargo_hello_world_project_model() {
#[test]
fn rust_project_hello_world_project_model() {
- let crate_graph = load_rust_project("hello-world-project.json");
+ let (crate_graph, _proc_macros) = load_rust_project("hello-world-project.json");
check_crate_graph(
crate_graph,
expect![[r#"
@@ -1390,9 +1349,6 @@ fn rust_project_hello_world_project_model() {
prelude: true,
},
],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Alloc,
),
@@ -1427,9 +1383,6 @@ fn rust_project_hello_world_project_model() {
entries: {},
},
dependencies: [],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Core,
),
@@ -1464,9 +1417,6 @@ fn rust_project_hello_world_project_model() {
entries: {},
},
dependencies: [],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Other,
),
@@ -1501,9 +1451,6 @@ fn rust_project_hello_world_project_model() {
entries: {},
},
dependencies: [],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Other,
),
@@ -1557,9 +1504,6 @@ fn rust_project_hello_world_project_model() {
prelude: true,
},
],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Other,
),
@@ -1594,9 +1538,6 @@ fn rust_project_hello_world_project_model() {
entries: {},
},
dependencies: [],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Other,
),
@@ -1704,9 +1645,6 @@ fn rust_project_hello_world_project_model() {
prelude: true,
},
],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Std,
),
@@ -1741,9 +1679,6 @@ fn rust_project_hello_world_project_model() {
entries: {},
},
dependencies: [],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Other,
),
@@ -1778,9 +1713,6 @@ fn rust_project_hello_world_project_model() {
entries: {},
},
dependencies: [],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Test,
),
@@ -1815,9 +1747,6 @@ fn rust_project_hello_world_project_model() {
entries: {},
},
dependencies: [],
- proc_macro: Err(
- "no proc macro loaded for sysroot crate",
- ),
origin: Lang(
Other,
),
@@ -1889,9 +1818,6 @@ fn rust_project_hello_world_project_model() {
prelude: false,
},
],
- proc_macro: Err(
- "no proc macro dylib present",
- ),
origin: CratesIo {
repo: None,
name: Some(
@@ -1907,7 +1833,7 @@ fn rust_project_hello_world_project_model() {
#[test]
fn rust_project_is_proc_macro_has_proc_macro_dep() {
- let crate_graph = load_rust_project("is-proc-macro-project.json");
+ let (crate_graph, _proc_macros) = load_rust_project("is-proc-macro-project.json");
// Since the project only defines one crate (outside the sysroot crates),
// it should be the one with the biggest Id.
let crate_id = crate_graph.iter().max().unwrap();