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.rs68
1 files changed, 40 insertions, 28 deletions
diff --git a/crates/project-model/src/tests.rs b/crates/project-model/src/tests.rs
index fd09dff503..3d5a934fc9 100644
--- a/crates/project-model/src/tests.rs
+++ b/crates/project-model/src/tests.rs
@@ -1,6 +1,7 @@
use std::ops::Deref;
use base_db::{CrateGraph, FileId, ProcMacroPaths};
+use cargo_metadata::Metadata;
use cfg::{CfgAtom, CfgDiff};
use expect_test::{expect_file, ExpectFile};
use paths::{AbsPath, AbsPathBuf, Utf8Path, Utf8PathBuf};
@@ -9,8 +10,8 @@ use serde::de::DeserializeOwned;
use triomphe::Arc;
use crate::{
- CargoWorkspace, CfgOverrides, ProjectJson, ProjectJsonData, ProjectWorkspace, Sysroot,
- WorkspaceBuildScripts,
+ workspace::ProjectWorkspaceKind, CargoWorkspace, CfgOverrides, ManifestPath, ProjectJson,
+ ProjectJsonData, ProjectWorkspace, Sysroot, WorkspaceBuildScripts,
};
fn load_cargo(file: &str) -> (CrateGraph, ProcMacroPaths) {
@@ -21,18 +22,22 @@ 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 {
- cargo: cargo_workspace,
- build_scripts: WorkspaceBuildScripts::default(),
+ 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);
+ let project_workspace = ProjectWorkspace {
+ kind: ProjectWorkspaceKind::Cargo {
+ cargo: cargo_workspace,
+ build_scripts: WorkspaceBuildScripts::default(),
+ rustc: Err(None),
+ cargo_config_extra_env: Default::default(),
+ },
+ cfg_overrides,
sysroot: Err(None),
- rustc: Err(None),
rustc_cfg: Vec::new(),
- cfg_overrides,
toolchain: None,
target_layout: Err("target_data_layout not loaded".into()),
- cargo_config_extra_env: Default::default(),
};
to_crate_graph(project_workspace)
}
@@ -41,18 +46,22 @@ fn load_cargo_with_fake_sysroot(
file_map: &mut FxHashMap<AbsPathBuf, FileId>,
file: &str,
) -> (CrateGraph, ProcMacroPaths) {
- let meta = get_test_json_file(file);
- let cargo_workspace = CargoWorkspace::new(meta);
- let project_workspace = ProjectWorkspace::Cargo {
- cargo: cargo_workspace,
- build_scripts: WorkspaceBuildScripts::default(),
+ 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);
+ let project_workspace = ProjectWorkspace {
+ kind: ProjectWorkspaceKind::Cargo {
+ cargo: cargo_workspace,
+ build_scripts: WorkspaceBuildScripts::default(),
+ rustc: Err(None),
+ cargo_config_extra_env: Default::default(),
+ },
sysroot: Ok(get_fake_sysroot()),
- rustc: Err(None),
rustc_cfg: Vec::new(),
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 +78,8 @@ 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,
+ let project_workspace = ProjectWorkspace {
+ kind: ProjectWorkspaceKind::Json(project),
sysroot,
rustc_cfg: Vec::new(),
toolchain: None,
@@ -143,7 +152,7 @@ fn rooted_project_json(data: ProjectJsonData) -> ProjectJson {
replace_root(&mut root, true);
let path = Utf8Path::new(&root);
let base = AbsPath::assert(path);
- ProjectJson::new(base, data)
+ ProjectJson::new(None, base, data)
}
fn to_crate_graph(project_workspace: ProjectWorkspace) -> (CrateGraph, ProcMacroPaths) {
@@ -268,9 +277,10 @@ fn smoke_test_real_sysroot_cargo() {
return;
}
let file_map = &mut FxHashMap::<AbsPathBuf, FileId>::default();
- let meta = get_test_json_file("hello-world-metadata.json");
-
- let cargo_workspace = CargoWorkspace::new(meta);
+ 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);
let sysroot = Ok(Sysroot::discover(
AbsPath::assert(Utf8Path::new(env!("CARGO_MANIFEST_DIR"))),
&Default::default(),
@@ -278,16 +288,18 @@ fn smoke_test_real_sysroot_cargo() {
)
.unwrap());
- let project_workspace = ProjectWorkspace::Cargo {
- cargo: cargo_workspace,
- build_scripts: WorkspaceBuildScripts::default(),
+ let project_workspace = ProjectWorkspace {
+ kind: ProjectWorkspaceKind::Cargo {
+ cargo: cargo_workspace,
+ build_scripts: WorkspaceBuildScripts::default(),
+ rustc: Err(None),
+ cargo_config_extra_env: Default::default(),
+ },
sysroot,
- rustc: Err(None),
rustc_cfg: Vec::new(),
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 {