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.
This commit is contained in:
Aleksey Kladov 2020-06-22 17:30:23 +02:00
parent 5a0331e557
commit 6a6098d4c3
9 changed files with 47 additions and 47 deletions

View file

@ -128,7 +128,7 @@ impl From<foo::bar::baz::Boo> for A {
fn check_not_applicable(ra_fixture: &str) { fn check_not_applicable(ra_fixture: &str) {
let fixture = 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) check_assist_not_applicable(add_from_impl_for_enum, &fixture)
} }

View file

@ -301,7 +301,7 @@ fn another_fn() {
fn check_not_applicable(ra_fixture: &str) { fn check_not_applicable(ra_fixture: &str) {
let fixture = 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) check_assist_not_applicable(extract_struct_from_enum_variant, &fixture)
} }

View file

@ -765,7 +765,7 @@ fn foo(opt: Option<i32>) {
} }
}"#; }"#;
let before = 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( check_assist(
fill_match_arms, fill_match_arms,

View file

@ -164,7 +164,7 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
let mut source_root = SourceRoot::new_local(); let mut source_root = SourceRoot::new_local();
let mut source_root_id = WORKSPACE; let mut source_root_id = WORKSPACE;
let mut source_root_prefix: RelativePathBuf = "/".into(); let mut source_root_prefix = "/".to_string();
let mut file_id = FileId(0); let mut file_id = FileId(0);
let mut file_position = None; let mut file_position = None;
@ -212,9 +212,9 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
}; };
db.set_file_text(file_id, Arc::new(text)); db.set_file_text(file_id, Arc::new(text));
db.set_file_relative_path(file_id, meta.path.clone()); db.set_file_relative_path(file_id, meta.path.clone().into());
db.set_file_source_root(file_id, source_root_id); db.set_file_source_root(file_id, source_root_id);
source_root.insert_file(meta.path, file_id); source_root.insert_file(meta.path.into(), file_id);
file_id.0 += 1; file_id.0 += 1;
} }
@ -245,12 +245,12 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
} }
enum ParsedMeta { enum ParsedMeta {
Root { path: RelativePathBuf }, Root { path: String },
File(FileMeta), File(FileMeta),
} }
struct FileMeta { struct FileMeta {
path: RelativePathBuf, path: String,
krate: Option<String>, krate: Option<String>,
deps: Vec<String>, deps: Vec<String>,
cfg: CfgOptions, cfg: CfgOptions,

View file

@ -933,7 +933,7 @@ fn method_resolution_overloaded_method() {
test_utils::mark::check!(impl_self_type_match_without_receiver); test_utils::mark::check!(impl_self_type_match_without_receiver);
let t = type_at( let t = type_at(
r#" r#"
//- main.rs //- /main.rs
struct Wrapper<T>(T); struct Wrapper<T>(T);
struct Foo<T>(T); struct Foo<T>(T);
struct Bar<T>(T); struct Bar<T>(T);

View file

@ -4,7 +4,7 @@ use std::str::FromStr;
use std::sync::Arc; use std::sync::Arc;
use ra_cfg::CfgOptions; 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 test_utils::{extract_offset, extract_range, parse_fixture, FixtureEntry, CURSOR_MARKER};
use crate::{ use crate::{
@ -28,7 +28,7 @@ impl MockFileData {
fn path(&self) -> &str { fn path(&self) -> &str {
match self { match self {
MockFileData::Plain { path, .. } => path.as_str(), 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() { for (i, data) in self.files.into_iter().enumerate() {
let path = data.path(); let path = data.path();
assert!(path.starts_with('/')); assert!(path.starts_with('/'));
let path = RelativePathBuf::from_path(&path[1..]).unwrap();
let cfg_options = data.cfg_options(); let cfg_options = data.cfg_options();
let file_id = FileId(i as u32 + 1); let file_id = FileId(i as u32 + 1);
let edition = data.edition(); let edition = data.edition();
@ -183,7 +182,8 @@ impl MockAnalysis {
Default::default(), Default::default(),
)); ));
} else if path.ends_with("/lib.rs") { } 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( let other_crate = crate_graph.add_crate_root(
file_id, file_id,
edition, edition,
@ -199,7 +199,7 @@ impl MockAnalysis {
.unwrap(); .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); change.set_crate_graph(crate_graph);
host.apply_change(change); host.apply_change(change);

View file

@ -29,12 +29,12 @@ fn completes_items_from_standard_library() {
let project_start = Instant::now(); let project_start = Instant::now();
let server = Project::with_fixture( let server = Project::with_fixture(
r#" r#"
//- Cargo.toml //- /Cargo.toml
[package] [package]
name = "foo" name = "foo"
version = "0.0.0" version = "0.0.0"
//- src/lib.rs //- /src/lib.rs
use std::collections::Spam; use std::collections::Spam;
"#, "#,
) )
@ -63,24 +63,24 @@ fn test_runnables_project() {
} }
let code = r#" let code = r#"
//- foo/Cargo.toml //- /foo/Cargo.toml
[package] [package]
name = "foo" name = "foo"
version = "0.0.0" version = "0.0.0"
//- foo/src/lib.rs //- /foo/src/lib.rs
pub fn foo() {} pub fn foo() {}
//- foo/tests/spam.rs //- /foo/tests/spam.rs
#[test] #[test]
fn test_eggs() {} fn test_eggs() {}
//- bar/Cargo.toml //- /bar/Cargo.toml
[package] [package]
name = "bar" name = "bar"
version = "0.0.0" version = "0.0.0"
//- bar/src/main.rs //- /bar/src/main.rs
fn main() {} fn main() {}
"#; "#;
@ -140,12 +140,12 @@ fn test_format_document() {
let server = project( let server = project(
r#" r#"
//- Cargo.toml //- /Cargo.toml
[package] [package]
name = "foo" name = "foo"
version = "0.0.0" version = "0.0.0"
//- src/lib.rs //- /src/lib.rs
mod bar; mod bar;
fn main() { fn main() {
@ -200,13 +200,13 @@ fn test_format_document_2018() {
let server = project( let server = project(
r#" r#"
//- Cargo.toml //- /Cargo.toml
[package] [package]
name = "foo" name = "foo"
version = "0.0.0" version = "0.0.0"
edition = "2018" edition = "2018"
//- src/lib.rs //- /src/lib.rs
mod bar; mod bar;
async fn test() { async fn test() {
@ -266,12 +266,12 @@ fn test_missing_module_code_action() {
let server = project( let server = project(
r#" r#"
//- Cargo.toml //- /Cargo.toml
[package] [package]
name = "foo" name = "foo"
version = "0.0.0" version = "0.0.0"
//- src/lib.rs //- /src/lib.rs
mod bar; mod bar;
fn main() {} fn main() {}
@ -335,10 +335,10 @@ fn test_missing_module_code_action_in_json_project() {
let code = format!( let code = format!(
r#" r#"
//- rust-project.json //- /rust-project.json
{PROJECT} {PROJECT}
//- src/lib.rs //- /src/lib.rs
mod bar; mod bar;
fn main() {{}} fn main() {{}}
@ -391,15 +391,15 @@ fn diagnostics_dont_block_typing() {
} }
let librs: String = (0..10).map(|i| format!("mod m{};", i)).collect(); 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!( let server = Project::with_fixture(&format!(
r#" r#"
//- Cargo.toml //- /Cargo.toml
[package] [package]
name = "foo" name = "foo"
version = "0.0.0" version = "0.0.0"
//- src/lib.rs //- /src/lib.rs
{} {}
{} {}
@ -449,12 +449,12 @@ fn preserves_dos_line_endings() {
let server = Project::with_fixture( let server = Project::with_fixture(
&" &"
//- Cargo.toml //- /Cargo.toml
[package] [package]
name = \"foo\" name = \"foo\"
version = \"0.0.0\" version = \"0.0.0\"
//- src/main.rs //- /src/main.rs
/// Some Docs\r\nfn main() {} /// Some Docs\r\nfn main() {}
", ",
) )
@ -484,12 +484,12 @@ fn out_dirs_check() {
let server = Project::with_fixture( let server = Project::with_fixture(
r###" r###"
//- Cargo.toml //- /Cargo.toml
[package] [package]
name = "foo" name = "foo"
version = "0.0.0" version = "0.0.0"
//- build.rs //- /build.rs
use std::{env, fs, path::Path}; use std::{env, fs, path::Path};
fn main() { fn main() {
@ -504,7 +504,7 @@ fn main() {
println!("cargo:rustc-cfg=featlike=\"set\""); println!("cargo:rustc-cfg=featlike=\"set\"");
println!("cargo:rerun-if-changed=build.rs"); println!("cargo:rerun-if-changed=build.rs");
} }
//- src/main.rs //- /src/main.rs
#[rustc_builtin_macro] macro_rules! include {} #[rustc_builtin_macro] macro_rules! include {}
#[rustc_builtin_macro] macro_rules! concat {} #[rustc_builtin_macro] macro_rules! concat {}
#[rustc_builtin_macro] macro_rules! env {} #[rustc_builtin_macro] macro_rules! env {}
@ -599,7 +599,7 @@ fn resolve_proc_macro() {
} }
let server = Project::with_fixture( let server = Project::with_fixture(
r###" r###"
//- foo/Cargo.toml //- /foo/Cargo.toml
[package] [package]
name = "foo" name = "foo"
version = "0.0.0" version = "0.0.0"
@ -607,7 +607,7 @@ edition = "2018"
[dependencies] [dependencies]
bar = {path = "../bar"} bar = {path = "../bar"}
//- foo/src/main.rs //- /foo/src/main.rs
use bar::Bar; use bar::Bar;
trait Bar { trait Bar {
fn bar(); fn bar();
@ -618,7 +618,7 @@ fn main() {
Foo::bar(); Foo::bar();
} }
//- bar/Cargo.toml //- /bar/Cargo.toml
[package] [package]
name = "bar" name = "bar"
version = "0.0.0" version = "0.0.0"
@ -627,7 +627,7 @@ edition = "2018"
[lib] [lib]
proc-macro = true proc-macro = true
//- bar/src/lib.rs //- /bar/src/lib.rs
extern crate proc_macro; extern crate proc_macro;
use proc_macro::{Delimiter, Group, Ident, Span, TokenStream, TokenTree}; use proc_macro::{Delimiter, Group, Ident, Span, TokenStream, TokenTree};
macro_rules! t { macro_rules! t {

View file

@ -69,7 +69,7 @@ impl<'a> Project<'a> {
let mut paths = vec![]; let mut paths = vec![];
for entry in parse_fixture(self.fixture) { 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::create_dir_all(path.parent().unwrap()).unwrap();
fs::write(path.as_path(), entry.text.as_bytes()).unwrap(); fs::write(path.as_path(), entry.text.as_bytes()).unwrap();
paths.push((path, entry.text)); paths.push((path, entry.text));

View file

@ -168,13 +168,13 @@ pub struct FixtureEntry {
#[derive(Debug, Eq, PartialEq)] #[derive(Debug, Eq, PartialEq)]
pub enum FixtureMeta { pub enum FixtureMeta {
Root { path: RelativePathBuf }, Root { path: String },
File(FileMeta), File(FileMeta),
} }
#[derive(Debug, Eq, PartialEq)] #[derive(Debug, Eq, PartialEq)]
pub struct FileMeta { pub struct FileMeta {
pub path: RelativePathBuf, pub path: String,
pub crate_name: Option<String>, pub crate_name: Option<String>,
pub deps: Vec<String>, pub deps: Vec<String>,
pub cfg: CfgOptions, pub cfg: CfgOptions,
@ -183,7 +183,7 @@ pub struct FileMeta {
} }
impl FixtureMeta { impl FixtureMeta {
pub fn path(&self) -> &RelativePath { pub fn path(&self) -> &str {
match self { match self {
FixtureMeta::Root { path } => &path, FixtureMeta::Root { path } => &path,
FixtureMeta::File(f) => &f.path, FixtureMeta::File(f) => &f.path,
@ -292,12 +292,12 @@ fn parse_meta(meta: &str) -> FixtureMeta {
let components = meta.split_ascii_whitespace().collect::<Vec<_>>(); let components = meta.split_ascii_whitespace().collect::<Vec<_>>();
if components[0] == "root" { if components[0] == "root" {
let path: RelativePathBuf = components[1].into(); let path = components[1].to_string();
assert!(path.starts_with("/") && path.ends_with("/")); assert!(path.starts_with("/") && path.ends_with("/"));
return FixtureMeta::Root { path }; return FixtureMeta::Root { path };
} }
let path: RelativePathBuf = components[0].into(); let path = components[0].to_string();
assert!(path.starts_with("/")); assert!(path.starts_with("/"));
let mut krate = None; let mut krate = None;