Better display methods in expect tests

This commit is contained in:
Kirill Bulatov 2020-12-28 16:13:37 +02:00
parent 8600cf807e
commit eecbb51cb3

View file

@ -432,7 +432,7 @@ mod tests {
use base_db::{fixture::WithFixture, SourceDatabase, Upcast}; use base_db::{fixture::WithFixture, SourceDatabase, Upcast};
use expect_test::{expect, Expect}; use expect_test::{expect, Expect};
use crate::{test_db::TestDB, AssocContainerId, Lookup}; use crate::{data::FunctionData, test_db::TestDB, AssocContainerId, Lookup};
use super::*; use super::*;
@ -451,14 +451,31 @@ mod tests {
.into_iter() .into_iter()
.filter_map(|item| { .filter_map(|item| {
let mark = match item { let mark = match item {
ItemInNs::Types(ModuleDefId::FunctionId(_))
| ItemInNs::Values(ModuleDefId::FunctionId(_)) => "f",
ItemInNs::Types(_) => "t", ItemInNs::Types(_) => "t",
ItemInNs::Values(_) => "v", ItemInNs::Values(_) => "v",
ItemInNs::Macros(_) => "m", ItemInNs::Macros(_) => "m",
}; };
let item = assoc_to_trait(&db, item);
item.krate(db.upcast()).map(|krate| { item.krate(db.upcast()).map(|krate| {
let map = db.import_map(krate); let map = db.import_map(krate);
let path = map.path_of(item).unwrap();
let path = match assoc_to_trait(&db, item) {
Some(trait_) => {
let mut full_path = map.path_of(trait_).unwrap().to_string();
if let ItemInNs::Types(ModuleDefId::FunctionId(function_id))
| ItemInNs::Values(ModuleDefId::FunctionId(function_id)) = item
{
full_path += &format!(
"::{}",
FunctionData::fn_data_query(&db, function_id).name
);
}
full_path
}
None => map.path_of(item).unwrap().to_string(),
};
format!( format!(
"{}::{} ({})\n", "{}::{} ({})\n",
crate_graph[krate].display_name.as_ref().unwrap(), crate_graph[krate].display_name.as_ref().unwrap(),
@ -471,15 +488,15 @@ mod tests {
expect.assert_eq(&actual) expect.assert_eq(&actual)
} }
fn assoc_to_trait(db: &dyn DefDatabase, item: ItemInNs) -> ItemInNs { fn assoc_to_trait(db: &dyn DefDatabase, item: ItemInNs) -> Option<ItemInNs> {
let assoc: AssocItemId = match item { let assoc: AssocItemId = match item {
ItemInNs::Types(it) | ItemInNs::Values(it) => match it { ItemInNs::Types(it) | ItemInNs::Values(it) => match it {
ModuleDefId::TypeAliasId(it) => it.into(), ModuleDefId::TypeAliasId(it) => it.into(),
ModuleDefId::FunctionId(it) => it.into(), ModuleDefId::FunctionId(it) => it.into(),
ModuleDefId::ConstId(it) => it.into(), ModuleDefId::ConstId(it) => it.into(),
_ => return item, _ => return None,
}, },
_ => return item, _ => return None,
}; };
let container = match assoc { let container = match assoc {
@ -489,8 +506,8 @@ mod tests {
}; };
match container { match container {
AssocContainerId::TraitId(it) => ItemInNs::Types(it.into()), AssocContainerId::TraitId(it) => Some(ItemInNs::Types(it.into())),
_ => item, _ => None,
} }
} }
@ -764,8 +781,8 @@ mod tests {
dep::Fmt (v) dep::Fmt (v)
dep::Fmt (m) dep::Fmt (m)
dep::fmt::Display (t) dep::fmt::Display (t)
dep::format (v) dep::format (f)
dep::fmt::Display (t) dep::fmt::Display::fmt (f)
"#]], "#]],
); );
@ -778,7 +795,7 @@ mod tests {
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::fmt (f)
"#]], "#]],
); );
@ -792,7 +809,7 @@ mod tests {
dep::Fmt (v) dep::Fmt (v)
dep::Fmt (m) dep::Fmt (m)
dep::fmt::Display (t) dep::fmt::Display (t)
dep::fmt::Display (t) dep::fmt::Display::fmt (f)
"#]], "#]],
); );
} }
@ -833,11 +850,10 @@ mod tests {
dep::Fmt (v) dep::Fmt (v)
dep::Fmt (m) dep::Fmt (m)
dep::fmt::Display (t) dep::fmt::Display (t)
dep::fmt::Display (t) dep::fmt::Display::fmt (f)
"#]], "#]],
); );
// TODO kb where does this duplicate `dep::fmt::Display (t)` come from?
check_search( check_search(
ra_fixture, ra_fixture,
"main", "main",
@ -847,7 +863,7 @@ mod tests {
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::fmt (f)
"#]], "#]],
); );
} }