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.rs56
1 files changed, 15 insertions, 41 deletions
diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs
index 8374062273..c69891b746 100644
--- a/crates/project-model/src/tests.rs
+++ b/crates/project-model/src/tests.rs
@@ -1,7 +1,7 @@
-use base_db::{CrateGraph, ProcMacroPaths};
+use base_db::{CrateGraphBuilder, ProcMacroPaths};
use cargo_metadata::Metadata;
use cfg::{CfgAtom, CfgDiff};
-use expect_test::{expect_file, ExpectFile};
+use expect_test::{ExpectFile, expect_file};
use intern::sym;
use paths::{AbsPath, AbsPathBuf, Utf8Path, Utf8PathBuf};
use rustc_hash::FxHashMap;
@@ -10,12 +10,12 @@ use span::FileId;
use triomphe::Arc;
use crate::{
- sysroot::RustLibSrcWorkspace, workspace::ProjectWorkspaceKind, CargoWorkspace, CfgOverrides,
- ManifestPath, ProjectJson, ProjectJsonData, ProjectWorkspace, RustSourceWorkspaceConfig,
- Sysroot, WorkspaceBuildScripts,
+ CargoWorkspace, CfgOverrides, ManifestPath, ProjectJson, ProjectJsonData, ProjectWorkspace,
+ RustSourceWorkspaceConfig, Sysroot, WorkspaceBuildScripts, sysroot::RustLibSrcWorkspace,
+ workspace::ProjectWorkspaceKind,
};
-fn load_cargo(file: &str) -> (CrateGraph, ProcMacroPaths) {
+fn load_cargo(file: &str) -> (CrateGraphBuilder, ProcMacroPaths) {
let project_workspace = load_workspace_from_metadata(file);
to_crate_graph(project_workspace, &mut Default::default())
}
@@ -23,7 +23,7 @@ fn load_cargo(file: &str) -> (CrateGraph, ProcMacroPaths) {
fn load_cargo_with_overrides(
file: &str,
cfg_overrides: CfgOverrides,
-) -> (CrateGraph, ProcMacroPaths) {
+) -> (CrateGraphBuilder, ProcMacroPaths) {
let project_workspace =
ProjectWorkspace { cfg_overrides, ..load_workspace_from_metadata(file) };
to_crate_graph(project_workspace, &mut Default::default())
@@ -33,7 +33,7 @@ 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 cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default(), false);
ProjectWorkspace {
kind: ProjectWorkspaceKind::Cargo {
cargo: cargo_workspace,
@@ -51,10 +51,10 @@ fn load_workspace_from_metadata(file: &str) -> ProjectWorkspace {
}
}
-fn load_rust_project(file: &str) -> (CrateGraph, ProcMacroPaths) {
+fn load_rust_project(file: &str) -> (CrateGraphBuilder, ProcMacroPaths) {
let data = get_test_json_file(file);
let project = rooted_project_json(data);
- let sysroot = get_fake_sysroot();
+ let sysroot = Sysroot::empty();
let project_workspace = ProjectWorkspace {
kind: ProjectWorkspaceKind::Json(project),
sysroot,
@@ -101,36 +101,11 @@ fn replace_root(s: &mut String, direction: bool) {
}
}
-fn replace_fake_sys_root(s: &mut String) {
- let fake_sysroot_path = get_test_path("fake-sysroot");
- let fake_sysroot_path = if cfg!(windows) {
- let normalized_path = fake_sysroot_path.as_str().replace('\\', r#"\\"#);
- format!(r#"{normalized_path}\\"#)
- } else {
- format!("{}/", fake_sysroot_path.as_str())
- };
- *s = s.replace(&fake_sysroot_path, "$FAKESYSROOT$")
-}
-
fn get_test_path(file: &str) -> Utf8PathBuf {
let base = Utf8PathBuf::from(env!("CARGO_MANIFEST_DIR"));
base.join("test_data").join(file)
}
-fn get_fake_sysroot() -> Sysroot {
- let sysroot_path = get_test_path("fake-sysroot");
- // there's no `libexec/` directory with a `proc-macro-srv` binary in that
- // fake sysroot, so we give them both the same path:
- let sysroot_dir = AbsPathBuf::assert(sysroot_path);
- let sysroot_src_dir = sysroot_dir.clone();
- let mut sysroot = Sysroot::new(Some(sysroot_dir), Some(sysroot_src_dir));
- let loaded_sysroot = sysroot.load_workspace(&RustSourceWorkspaceConfig::default_cargo());
- if let Some(loaded_sysroot) = loaded_sysroot {
- sysroot.set_workspace(loaded_sysroot);
- }
- sysroot
-}
-
fn rooted_project_json(data: ProjectJsonData) -> ProjectJson {
let mut root = "$ROOT$".to_owned();
replace_root(&mut root, true);
@@ -142,7 +117,7 @@ fn rooted_project_json(data: ProjectJsonData) -> ProjectJson {
fn to_crate_graph(
project_workspace: ProjectWorkspace,
file_map: &mut FxHashMap<AbsPathBuf, FileId>,
-) -> (CrateGraph, ProcMacroPaths) {
+) -> (CrateGraphBuilder, ProcMacroPaths) {
project_workspace.to_crate_graph(
&mut {
|path| {
@@ -154,19 +129,18 @@ fn to_crate_graph(
)
}
-fn check_crate_graph(crate_graph: CrateGraph, expect: ExpectFile) {
+fn check_crate_graph(crate_graph: CrateGraphBuilder, expect: ExpectFile) {
let mut crate_graph = format!("{crate_graph:#?}");
replace_root(&mut crate_graph, false);
replace_cargo(&mut crate_graph);
- replace_fake_sys_root(&mut crate_graph);
expect.assert_eq(&crate_graph);
}
#[test]
fn cargo_hello_world_project_model_with_wildcard_overrides() {
let cfg_overrides = CfgOverrides {
- global: CfgDiff::new(Vec::new(), vec![CfgAtom::Flag(sym::test.clone())]),
+ global: CfgDiff::new(Vec::new(), vec![CfgAtom::Flag(sym::test)]),
selective: Default::default(),
};
let (crate_graph, _proc_macros) =
@@ -185,7 +159,7 @@ fn cargo_hello_world_project_model_with_selective_overrides() {
global: Default::default(),
selective: std::iter::once((
"libc".to_owned(),
- CfgDiff::new(Vec::new(), vec![CfgAtom::Flag(sym::test.clone())]),
+ CfgDiff::new(Vec::new(), vec![CfgAtom::Flag(sym::test)]),
))
.collect(),
};
@@ -256,7 +230,7 @@ fn smoke_test_real_sysroot_cargo() {
let meta: Metadata = get_test_json_file("hello-world-metadata.json");
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 cargo_workspace = CargoWorkspace::new(meta, manifest_path, Default::default(), false);
let mut sysroot = Sysroot::discover(
AbsPath::assert(Utf8Path::new(env!("CARGO_MANIFEST_DIR"))),
&Default::default(),