diff options
Diffstat (limited to 'src/tools/rust-analyzer/crates/project-model/src/tests.rs')
| -rw-r--r-- | src/tools/rust-analyzer/crates/project-model/src/tests.rs | 56 |
1 files changed, 15 insertions, 41 deletions
diff --git a/src/tools/rust-analyzer/crates/project-model/src/tests.rs b/src/tools/rust-analyzer/crates/project-model/src/tests.rs index 83740622732..c69891b7463 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/tests.rs +++ b/src/tools/rust-analyzer/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(), |
