mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +00:00
Remove insta for ra_hir_def
This commit is contained in:
parent
798f43da50
commit
19e78020bd
4 changed files with 168 additions and 164 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -1111,7 +1111,6 @@ dependencies = [
|
||||||
"expect",
|
"expect",
|
||||||
"fst",
|
"fst",
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"insta",
|
|
||||||
"itertools",
|
"itertools",
|
||||||
"log",
|
"log",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
|
|
|
@ -33,5 +33,4 @@ ra_cfg = { path = "../ra_cfg" }
|
||||||
tt = { path = "../ra_tt", package = "ra_tt" }
|
tt = { path = "../ra_tt", package = "ra_tt" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
insta = "0.16.0"
|
|
||||||
expect = { path = "../expect" }
|
expect = { path = "../expect" }
|
||||||
|
|
|
@ -327,32 +327,14 @@ pub fn search_dependencies<'a>(
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use expect::{expect, Expect};
|
||||||
|
use ra_db::{fixture::WithFixture, SourceDatabase, Upcast};
|
||||||
|
|
||||||
use crate::{test_db::TestDB, AssocContainerId, Lookup};
|
use crate::{test_db::TestDB, AssocContainerId, Lookup};
|
||||||
use insta::assert_snapshot;
|
|
||||||
use itertools::Itertools;
|
|
||||||
use ra_db::fixture::WithFixture;
|
|
||||||
use ra_db::{SourceDatabase, Upcast};
|
|
||||||
|
|
||||||
fn import_map(ra_fixture: &str) -> String {
|
use super::*;
|
||||||
let db = TestDB::with_files(ra_fixture);
|
|
||||||
let crate_graph = db.crate_graph();
|
|
||||||
|
|
||||||
let s = crate_graph
|
fn check_search(ra_fixture: &str, krate_name: &str, query: Query, expect: Expect) {
|
||||||
.iter()
|
|
||||||
.filter_map(|krate| {
|
|
||||||
let cdata = &crate_graph[krate];
|
|
||||||
let name = cdata.display_name.as_ref()?;
|
|
||||||
|
|
||||||
let map = db.import_map(krate);
|
|
||||||
|
|
||||||
Some(format!("{}:\n{:?}", name, map))
|
|
||||||
})
|
|
||||||
.join("\n");
|
|
||||||
s
|
|
||||||
}
|
|
||||||
|
|
||||||
fn search_dependencies_of(ra_fixture: &str, krate_name: &str, query: Query) -> String {
|
|
||||||
let db = TestDB::with_files(ra_fixture);
|
let db = TestDB::with_files(ra_fixture);
|
||||||
let crate_graph = db.crate_graph();
|
let crate_graph = db.crate_graph();
|
||||||
let krate = crate_graph
|
let krate = crate_graph
|
||||||
|
@ -363,7 +345,7 @@ mod tests {
|
||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
search_dependencies(db.upcast(), krate, query)
|
let actual = search_dependencies(db.upcast(), krate, query)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|item| {
|
.filter_map(|item| {
|
||||||
let mark = match item {
|
let mark = match item {
|
||||||
|
@ -376,14 +358,15 @@ mod tests {
|
||||||
let map = db.import_map(krate);
|
let map = db.import_map(krate);
|
||||||
let path = map.path_of(item).unwrap();
|
let path = map.path_of(item).unwrap();
|
||||||
format!(
|
format!(
|
||||||
"{}::{} ({})",
|
"{}::{} ({})\n",
|
||||||
crate_graph[krate].display_name.as_ref().unwrap(),
|
crate_graph[krate].display_name.as_ref().unwrap(),
|
||||||
path,
|
path,
|
||||||
mark
|
mark
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.join("\n")
|
.collect::<String>();
|
||||||
|
expect.assert_eq(&actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn assoc_to_trait(db: &dyn DefDatabase, item: ItemInNs) -> ItemInNs {
|
fn assoc_to_trait(db: &dyn DefDatabase, item: ItemInNs) -> ItemInNs {
|
||||||
|
@ -409,9 +392,28 @@ mod tests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn check(ra_fixture: &str, expect: Expect) {
|
||||||
|
let db = TestDB::with_files(ra_fixture);
|
||||||
|
let crate_graph = db.crate_graph();
|
||||||
|
|
||||||
|
let actual = crate_graph
|
||||||
|
.iter()
|
||||||
|
.filter_map(|krate| {
|
||||||
|
let cdata = &crate_graph[krate];
|
||||||
|
let name = cdata.display_name.as_ref()?;
|
||||||
|
|
||||||
|
let map = db.import_map(krate);
|
||||||
|
|
||||||
|
Some(format!("{}:\n{:?}\n", name, map))
|
||||||
|
})
|
||||||
|
.collect::<String>();
|
||||||
|
|
||||||
|
expect.assert_eq(&actual)
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn smoke() {
|
fn smoke() {
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /main.rs crate:main deps:lib
|
//- /main.rs crate:main deps:lib
|
||||||
|
|
||||||
|
@ -436,9 +438,7 @@ mod tests {
|
||||||
pub struct Pub2; // t + v
|
pub struct Pub2; // t + v
|
||||||
struct Priv;
|
struct Priv;
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
main:
|
main:
|
||||||
- publ1 (t)
|
- publ1 (t)
|
||||||
- real_pu2 (t)
|
- real_pu2 (t)
|
||||||
|
@ -448,12 +448,13 @@ mod tests {
|
||||||
- Pub (t)
|
- Pub (t)
|
||||||
- Pub2 (t)
|
- Pub2 (t)
|
||||||
- Pub2 (v)
|
- Pub2 (v)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn prefers_shortest_path() {
|
fn prefers_shortest_path() {
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /main.rs crate:main
|
//- /main.rs crate:main
|
||||||
|
|
||||||
|
@ -465,21 +466,20 @@ mod tests {
|
||||||
pub use super::sub::subsub::Def;
|
pub use super::sub::subsub::Def;
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
main:
|
main:
|
||||||
- sub (t)
|
- sub (t)
|
||||||
- sub::Def (t)
|
- sub::Def (t)
|
||||||
- sub::subsub (t)
|
- sub::subsub (t)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn type_reexport_cross_crate() {
|
fn type_reexport_cross_crate() {
|
||||||
// Reexports need to be visible from a crate, even if the original crate exports the item
|
// Reexports need to be visible from a crate, even if the original crate exports the item
|
||||||
// at a shorter path.
|
// at a shorter path.
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /main.rs crate:main deps:lib
|
//- /main.rs crate:main deps:lib
|
||||||
pub mod m {
|
pub mod m {
|
||||||
|
@ -488,9 +488,7 @@ mod tests {
|
||||||
//- /lib.rs crate:lib
|
//- /lib.rs crate:lib
|
||||||
pub struct S;
|
pub struct S;
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
main:
|
main:
|
||||||
- m (t)
|
- m (t)
|
||||||
- m::S (t)
|
- m::S (t)
|
||||||
|
@ -498,12 +496,13 @@ mod tests {
|
||||||
lib:
|
lib:
|
||||||
- S (t)
|
- S (t)
|
||||||
- S (v)
|
- S (v)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn macro_reexport() {
|
fn macro_reexport() {
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /main.rs crate:main deps:lib
|
//- /main.rs crate:main deps:lib
|
||||||
pub mod m {
|
pub mod m {
|
||||||
|
@ -515,21 +514,20 @@ mod tests {
|
||||||
() => {};
|
() => {};
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
main:
|
main:
|
||||||
- m (t)
|
- m (t)
|
||||||
- m::pub_macro (m)
|
- m::pub_macro (m)
|
||||||
lib:
|
lib:
|
||||||
- pub_macro (m)
|
- pub_macro (m)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn module_reexport() {
|
fn module_reexport() {
|
||||||
// Reexporting modules from a dependency adds all contents to the import map.
|
// Reexporting modules from a dependency adds all contents to the import map.
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /main.rs crate:main deps:lib
|
//- /main.rs crate:main deps:lib
|
||||||
pub use lib::module as reexported_module;
|
pub use lib::module as reexported_module;
|
||||||
|
@ -538,9 +536,7 @@ mod tests {
|
||||||
pub struct S;
|
pub struct S;
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
main:
|
main:
|
||||||
- reexported_module (t)
|
- reexported_module (t)
|
||||||
- reexported_module::S (t)
|
- reexported_module::S (t)
|
||||||
|
@ -549,13 +545,14 @@ mod tests {
|
||||||
- module (t)
|
- module (t)
|
||||||
- module::S (t)
|
- module::S (t)
|
||||||
- module::S (v)
|
- module::S (v)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cyclic_module_reexport() {
|
fn cyclic_module_reexport() {
|
||||||
// A cyclic reexport does not hang.
|
// A cyclic reexport does not hang.
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /lib.rs crate:lib
|
//- /lib.rs crate:lib
|
||||||
pub mod module {
|
pub mod module {
|
||||||
|
@ -567,36 +564,35 @@ mod tests {
|
||||||
pub use super::module;
|
pub use super::module;
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
lib:
|
lib:
|
||||||
- module (t)
|
- module (t)
|
||||||
- module::S (t)
|
- module::S (t)
|
||||||
- module::S (v)
|
- module::S (v)
|
||||||
- sub (t)
|
- sub (t)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn private_macro() {
|
fn private_macro() {
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /lib.rs crate:lib
|
//- /lib.rs crate:lib
|
||||||
macro_rules! private_macro {
|
macro_rules! private_macro {
|
||||||
() => {};
|
() => {};
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
lib:
|
lib:
|
||||||
"###);
|
|
||||||
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn namespacing() {
|
fn namespacing() {
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /lib.rs crate:lib
|
//- /lib.rs crate:lib
|
||||||
pub struct Thing; // t + v
|
pub struct Thing; // t + v
|
||||||
|
@ -605,16 +601,15 @@ mod tests {
|
||||||
() => {};
|
() => {};
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
lib:
|
lib:
|
||||||
- Thing (m)
|
- Thing (m)
|
||||||
- Thing (t)
|
- Thing (t)
|
||||||
- Thing (v)
|
- Thing (v)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
|
|
||||||
let map = import_map(
|
check(
|
||||||
r"
|
r"
|
||||||
//- /lib.rs crate:lib
|
//- /lib.rs crate:lib
|
||||||
pub mod Thing {} // t
|
pub mod Thing {} // t
|
||||||
|
@ -623,13 +618,12 @@ mod tests {
|
||||||
() => {};
|
() => {};
|
||||||
}
|
}
|
||||||
",
|
",
|
||||||
);
|
expect![[r#"
|
||||||
|
|
||||||
assert_snapshot!(map, @r###"
|
|
||||||
lib:
|
lib:
|
||||||
- Thing (m)
|
- Thing (m)
|
||||||
- Thing (t)
|
- Thing (t)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -658,8 +652,11 @@ mod tests {
|
||||||
}
|
}
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
let res = search_dependencies_of(ra_fixture, "main", Query::new("fmt"));
|
check_search(
|
||||||
assert_snapshot!(res, @r###"
|
ra_fixture,
|
||||||
|
"main",
|
||||||
|
Query::new("fmt"),
|
||||||
|
expect![[r#"
|
||||||
dep::fmt (t)
|
dep::fmt (t)
|
||||||
dep::Fmt (t)
|
dep::Fmt (t)
|
||||||
dep::Fmt (v)
|
dep::Fmt (v)
|
||||||
|
@ -667,16 +664,21 @@ mod tests {
|
||||||
dep::fmt::Display (t)
|
dep::fmt::Display (t)
|
||||||
dep::format (v)
|
dep::format (v)
|
||||||
dep::fmt::Display (t)
|
dep::fmt::Display (t)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
|
|
||||||
let res = search_dependencies_of(ra_fixture, "main", Query::new("fmt").anchor_end());
|
check_search(
|
||||||
assert_snapshot!(res, @r###"
|
ra_fixture,
|
||||||
|
"main",
|
||||||
|
Query::new("fmt").anchor_end(),
|
||||||
|
expect![[r#"
|
||||||
dep::fmt (t)
|
dep::fmt (t)
|
||||||
dep::Fmt (t)
|
dep::Fmt (t)
|
||||||
dep::Fmt (v)
|
dep::Fmt (v)
|
||||||
dep::Fmt (m)
|
dep::Fmt (m)
|
||||||
dep::fmt::Display (t)
|
dep::fmt::Display (t)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -689,26 +691,32 @@ mod tests {
|
||||||
pub struct FMT;
|
pub struct FMT;
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
let res = search_dependencies_of(ra_fixture, "main", Query::new("FMT"));
|
check_search(
|
||||||
|
ra_fixture,
|
||||||
assert_snapshot!(res, @r###"
|
"main",
|
||||||
|
Query::new("FMT"),
|
||||||
|
expect![[r#"
|
||||||
dep::fmt (t)
|
dep::fmt (t)
|
||||||
dep::fmt (v)
|
dep::fmt (v)
|
||||||
dep::FMT (t)
|
dep::FMT (t)
|
||||||
dep::FMT (v)
|
dep::FMT (v)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
|
|
||||||
let res = search_dependencies_of(ra_fixture, "main", Query::new("FMT").case_sensitive());
|
check_search(
|
||||||
|
ra_fixture,
|
||||||
assert_snapshot!(res, @r###"
|
"main",
|
||||||
|
Query::new("FMT").case_sensitive(),
|
||||||
|
expect![[r#"
|
||||||
dep::FMT (t)
|
dep::FMT (t)
|
||||||
dep::FMT (v)
|
dep::FMT (v)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn search_limit() {
|
fn search_limit() {
|
||||||
let res = search_dependencies_of(
|
check_search(
|
||||||
r#"
|
r#"
|
||||||
//- /main.rs crate:main deps:dep
|
//- /main.rs crate:main deps:dep
|
||||||
//- /dep.rs crate:dep
|
//- /dep.rs crate:dep
|
||||||
|
@ -728,10 +736,10 @@ mod tests {
|
||||||
"#,
|
"#,
|
||||||
"main",
|
"main",
|
||||||
Query::new("").limit(2),
|
Query::new("").limit(2),
|
||||||
);
|
expect![[r#"
|
||||||
assert_snapshot!(res, @r###"
|
|
||||||
dep::fmt (t)
|
dep::fmt (t)
|
||||||
dep::Fmt (t)
|
dep::Fmt (t)
|
||||||
"###);
|
"#]],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,9 +686,7 @@ fn unresolved_module_diagnostics() {
|
||||||
|
|
||||||
let crate_def_map = db.crate_def_map(krate);
|
let crate_def_map = db.crate_def_map(krate);
|
||||||
|
|
||||||
insta::assert_debug_snapshot!(
|
expect![[r#"
|
||||||
crate_def_map.diagnostics,
|
|
||||||
@r###"
|
|
||||||
[
|
[
|
||||||
UnresolvedModule {
|
UnresolvedModule {
|
||||||
module: Idx::<ModuleData>(0),
|
module: Idx::<ModuleData>(0),
|
||||||
|
@ -705,8 +703,8 @@ fn unresolved_module_diagnostics() {
|
||||||
candidate: "bar.rs",
|
candidate: "bar.rs",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
"###
|
"#]]
|
||||||
);
|
.assert_debug_eq(&crate_def_map.diagnostics);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Reference in a new issue