From 6a6098d4c31f6b54c8768e32f24182645ac077d6 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 22 Jun 2020 17:30:23 +0200 Subject: [PATCH] Remove RelativePathBuf from fixture The paths in fixture are not really relative (the default one is `/main.rs`), so it doesn't make sense to use `RelativePathBuf` here. --- .../src/handlers/add_from_impl_for_enum.rs | 2 +- .../extract_struct_from_enum_variant.rs | 2 +- .../src/handlers/fill_match_arms.rs | 2 +- crates/ra_db/src/fixture.rs | 10 ++-- .../ra_hir_ty/src/tests/method_resolution.rs | 2 +- crates/ra_ide/src/mock_analysis.rs | 10 ++-- .../rust-analyzer/tests/heavy_tests/main.rs | 54 +++++++++---------- .../tests/heavy_tests/support.rs | 2 +- crates/test_utils/src/lib.rs | 10 ++-- 9 files changed, 47 insertions(+), 47 deletions(-) diff --git a/crates/ra_assists/src/handlers/add_from_impl_for_enum.rs b/crates/ra_assists/src/handlers/add_from_impl_for_enum.rs index 776bddf918..b0e56e1b5a 100644 --- a/crates/ra_assists/src/handlers/add_from_impl_for_enum.rs +++ b/crates/ra_assists/src/handlers/add_from_impl_for_enum.rs @@ -128,7 +128,7 @@ impl From for A { fn check_not_applicable(ra_fixture: &str) { let fixture = - format!("//- main.rs crate:main deps:core\n{}\n{}", ra_fixture, FamousDefs::FIXTURE); + format!("//- /main.rs crate:main deps:core\n{}\n{}", ra_fixture, FamousDefs::FIXTURE); check_assist_not_applicable(add_from_impl_for_enum, &fixture) } diff --git a/crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs index 44db7917a6..43b4584b45 100644 --- a/crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs +++ b/crates/ra_assists/src/handlers/extract_struct_from_enum_variant.rs @@ -301,7 +301,7 @@ fn another_fn() { fn check_not_applicable(ra_fixture: &str) { let fixture = - format!("//- main.rs crate:main deps:core\n{}\n{}", ra_fixture, FamousDefs::FIXTURE); + format!("//- /main.rs crate:main deps:core\n{}\n{}", ra_fixture, FamousDefs::FIXTURE); check_assist_not_applicable(extract_struct_from_enum_variant, &fixture) } diff --git a/crates/ra_assists/src/handlers/fill_match_arms.rs b/crates/ra_assists/src/handlers/fill_match_arms.rs index 569efb7687..3c12c1daa4 100644 --- a/crates/ra_assists/src/handlers/fill_match_arms.rs +++ b/crates/ra_assists/src/handlers/fill_match_arms.rs @@ -765,7 +765,7 @@ fn foo(opt: Option) { } }"#; let before = - &format!("//- main.rs crate:main deps:core\n{}{}", before, FamousDefs::FIXTURE); + &format!("//- /main.rs crate:main deps:core\n{}{}", before, FamousDefs::FIXTURE); check_assist( fill_match_arms, diff --git a/crates/ra_db/src/fixture.rs b/crates/ra_db/src/fixture.rs index 482a2f3e65..af8fe11ec6 100644 --- a/crates/ra_db/src/fixture.rs +++ b/crates/ra_db/src/fixture.rs @@ -164,7 +164,7 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option Option Option, deps: Vec, cfg: CfgOptions, diff --git a/crates/ra_hir_ty/src/tests/method_resolution.rs b/crates/ra_hir_ty/src/tests/method_resolution.rs index 804297315c..a98efb1ccd 100644 --- a/crates/ra_hir_ty/src/tests/method_resolution.rs +++ b/crates/ra_hir_ty/src/tests/method_resolution.rs @@ -933,7 +933,7 @@ fn method_resolution_overloaded_method() { test_utils::mark::check!(impl_self_type_match_without_receiver); let t = type_at( r#" -//- main.rs +//- /main.rs struct Wrapper(T); struct Foo(T); struct Bar(T); diff --git a/crates/ra_ide/src/mock_analysis.rs b/crates/ra_ide/src/mock_analysis.rs index ad78d2d93f..76910d09bd 100644 --- a/crates/ra_ide/src/mock_analysis.rs +++ b/crates/ra_ide/src/mock_analysis.rs @@ -4,7 +4,7 @@ use std::str::FromStr; use std::sync::Arc; use ra_cfg::CfgOptions; -use ra_db::{CrateName, Env, RelativePathBuf}; +use ra_db::{CrateName, Env}; use test_utils::{extract_offset, extract_range, parse_fixture, FixtureEntry, CURSOR_MARKER}; use crate::{ @@ -28,7 +28,7 @@ impl MockFileData { fn path(&self) -> &str { match self { MockFileData::Plain { path, .. } => path.as_str(), - MockFileData::Fixture(f) => f.meta.path().as_str(), + MockFileData::Fixture(f) => f.meta.path(), } } @@ -167,7 +167,6 @@ impl MockAnalysis { for (i, data) in self.files.into_iter().enumerate() { let path = data.path(); assert!(path.starts_with('/')); - let path = RelativePathBuf::from_path(&path[1..]).unwrap(); let cfg_options = data.cfg_options(); let file_id = FileId(i as u32 + 1); let edition = data.edition(); @@ -183,7 +182,8 @@ impl MockAnalysis { Default::default(), )); } else if path.ends_with("/lib.rs") { - let crate_name = path.parent().unwrap().file_name().unwrap(); + let base = &path[..path.len() - "/lib.rs".len()]; + let crate_name = &base[base.rfind('/').unwrap() + '/'.len_utf8()..]; let other_crate = crate_graph.add_crate_root( file_id, edition, @@ -199,7 +199,7 @@ impl MockAnalysis { .unwrap(); } } - change.add_file(source_root, file_id, path, Arc::new(data.content().to_owned())); + change.add_file(source_root, file_id, path.into(), Arc::new(data.content().to_owned())); } change.set_crate_graph(crate_graph); host.apply_change(change); diff --git a/crates/rust-analyzer/tests/heavy_tests/main.rs b/crates/rust-analyzer/tests/heavy_tests/main.rs index 0e2a83c6a0..48ce831af7 100644 --- a/crates/rust-analyzer/tests/heavy_tests/main.rs +++ b/crates/rust-analyzer/tests/heavy_tests/main.rs @@ -29,12 +29,12 @@ fn completes_items_from_standard_library() { let project_start = Instant::now(); let server = Project::with_fixture( r#" -//- Cargo.toml +//- /Cargo.toml [package] name = "foo" version = "0.0.0" -//- src/lib.rs +//- /src/lib.rs use std::collections::Spam; "#, ) @@ -63,24 +63,24 @@ fn test_runnables_project() { } let code = r#" -//- foo/Cargo.toml +//- /foo/Cargo.toml [package] name = "foo" version = "0.0.0" -//- foo/src/lib.rs +//- /foo/src/lib.rs pub fn foo() {} -//- foo/tests/spam.rs +//- /foo/tests/spam.rs #[test] fn test_eggs() {} -//- bar/Cargo.toml +//- /bar/Cargo.toml [package] name = "bar" version = "0.0.0" -//- bar/src/main.rs +//- /bar/src/main.rs fn main() {} "#; @@ -140,12 +140,12 @@ fn test_format_document() { let server = project( r#" -//- Cargo.toml +//- /Cargo.toml [package] name = "foo" version = "0.0.0" -//- src/lib.rs +//- /src/lib.rs mod bar; fn main() { @@ -200,13 +200,13 @@ fn test_format_document_2018() { let server = project( r#" -//- Cargo.toml +//- /Cargo.toml [package] name = "foo" version = "0.0.0" edition = "2018" -//- src/lib.rs +//- /src/lib.rs mod bar; async fn test() { @@ -266,12 +266,12 @@ fn test_missing_module_code_action() { let server = project( r#" -//- Cargo.toml +//- /Cargo.toml [package] name = "foo" version = "0.0.0" -//- src/lib.rs +//- /src/lib.rs mod bar; fn main() {} @@ -335,10 +335,10 @@ fn test_missing_module_code_action_in_json_project() { let code = format!( r#" -//- rust-project.json +//- /rust-project.json {PROJECT} -//- src/lib.rs +//- /src/lib.rs mod bar; fn main() {{}} @@ -391,15 +391,15 @@ fn diagnostics_dont_block_typing() { } let librs: String = (0..10).map(|i| format!("mod m{};", i)).collect(); - let libs: String = (0..10).map(|i| format!("//- src/m{}.rs\nfn foo() {{}}\n\n", i)).collect(); + let libs: String = (0..10).map(|i| format!("//- /src/m{}.rs\nfn foo() {{}}\n\n", i)).collect(); let server = Project::with_fixture(&format!( r#" -//- Cargo.toml +//- /Cargo.toml [package] name = "foo" version = "0.0.0" -//- src/lib.rs +//- /src/lib.rs {} {} @@ -449,12 +449,12 @@ fn preserves_dos_line_endings() { let server = Project::with_fixture( &" -//- Cargo.toml +//- /Cargo.toml [package] name = \"foo\" version = \"0.0.0\" -//- src/main.rs +//- /src/main.rs /// Some Docs\r\nfn main() {} ", ) @@ -484,12 +484,12 @@ fn out_dirs_check() { let server = Project::with_fixture( r###" -//- Cargo.toml +//- /Cargo.toml [package] name = "foo" version = "0.0.0" -//- build.rs +//- /build.rs use std::{env, fs, path::Path}; fn main() { @@ -504,7 +504,7 @@ fn main() { println!("cargo:rustc-cfg=featlike=\"set\""); println!("cargo:rerun-if-changed=build.rs"); } -//- src/main.rs +//- /src/main.rs #[rustc_builtin_macro] macro_rules! include {} #[rustc_builtin_macro] macro_rules! concat {} #[rustc_builtin_macro] macro_rules! env {} @@ -599,7 +599,7 @@ fn resolve_proc_macro() { } let server = Project::with_fixture( r###" -//- foo/Cargo.toml +//- /foo/Cargo.toml [package] name = "foo" version = "0.0.0" @@ -607,7 +607,7 @@ edition = "2018" [dependencies] bar = {path = "../bar"} -//- foo/src/main.rs +//- /foo/src/main.rs use bar::Bar; trait Bar { fn bar(); @@ -618,7 +618,7 @@ fn main() { Foo::bar(); } -//- bar/Cargo.toml +//- /bar/Cargo.toml [package] name = "bar" version = "0.0.0" @@ -627,7 +627,7 @@ edition = "2018" [lib] proc-macro = true -//- bar/src/lib.rs +//- /bar/src/lib.rs extern crate proc_macro; use proc_macro::{Delimiter, Group, Ident, Span, TokenStream, TokenTree}; macro_rules! t { diff --git a/crates/rust-analyzer/tests/heavy_tests/support.rs b/crates/rust-analyzer/tests/heavy_tests/support.rs index 30d03b622b..f58790ded7 100644 --- a/crates/rust-analyzer/tests/heavy_tests/support.rs +++ b/crates/rust-analyzer/tests/heavy_tests/support.rs @@ -69,7 +69,7 @@ impl<'a> Project<'a> { let mut paths = vec![]; for entry in parse_fixture(self.fixture) { - let path = tmp_dir.path().join(entry.meta.path().as_str()); + let path = tmp_dir.path().join(&entry.meta.path()['/'.len_utf8()..]); fs::create_dir_all(path.parent().unwrap()).unwrap(); fs::write(path.as_path(), entry.text.as_bytes()).unwrap(); paths.push((path, entry.text)); diff --git a/crates/test_utils/src/lib.rs b/crates/test_utils/src/lib.rs index 981565cd74..b1333cf157 100644 --- a/crates/test_utils/src/lib.rs +++ b/crates/test_utils/src/lib.rs @@ -168,13 +168,13 @@ pub struct FixtureEntry { #[derive(Debug, Eq, PartialEq)] pub enum FixtureMeta { - Root { path: RelativePathBuf }, + Root { path: String }, File(FileMeta), } #[derive(Debug, Eq, PartialEq)] pub struct FileMeta { - pub path: RelativePathBuf, + pub path: String, pub crate_name: Option, pub deps: Vec, pub cfg: CfgOptions, @@ -183,7 +183,7 @@ pub struct FileMeta { } impl FixtureMeta { - pub fn path(&self) -> &RelativePath { + pub fn path(&self) -> &str { match self { FixtureMeta::Root { path } => &path, FixtureMeta::File(f) => &f.path, @@ -292,12 +292,12 @@ fn parse_meta(meta: &str) -> FixtureMeta { let components = meta.split_ascii_whitespace().collect::>(); if components[0] == "root" { - let path: RelativePathBuf = components[1].into(); + let path = components[1].to_string(); assert!(path.starts_with("/") && path.ends_with("/")); return FixtureMeta::Root { path }; } - let path: RelativePathBuf = components[0].into(); + let path = components[0].to_string(); assert!(path.starts_with("/")); let mut krate = None;