Auto merge of #16847 - HKalbasi:test-explorer, r=HKalbasi
Distinguish integration tests from crates in test explorer Fix part of #16827
This commit is contained in:
commit
d7ec7a5441
@ -11,7 +11,7 @@
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum TestItemKind {
|
||||
Crate,
|
||||
Crate(CrateId),
|
||||
Module,
|
||||
Function,
|
||||
}
|
||||
@ -32,15 +32,17 @@ pub(crate) fn discover_test_roots(db: &RootDatabase) -> Vec<TestItem> {
|
||||
crate_graph
|
||||
.iter()
|
||||
.filter(|&id| crate_graph[id].origin.is_local())
|
||||
.filter_map(|id| Some(crate_graph[id].display_name.as_ref()?.to_string()))
|
||||
.map(|id| TestItem {
|
||||
kind: TestItemKind::Crate,
|
||||
label: id.clone(),
|
||||
id,
|
||||
parent: None,
|
||||
file: None,
|
||||
text_range: None,
|
||||
runnable: None,
|
||||
.filter_map(|id| {
|
||||
let test_id = crate_graph[id].display_name.as_ref()?.to_string();
|
||||
Some(TestItem {
|
||||
kind: TestItemKind::Crate(id),
|
||||
label: test_id.clone(),
|
||||
id: test_id,
|
||||
parent: None,
|
||||
file: None,
|
||||
text_range: None,
|
||||
runnable: None,
|
||||
})
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
@ -118,12 +120,13 @@ pub(crate) fn discover_tests_in_crate(db: &RootDatabase, crate_id: CrateId) -> V
|
||||
let Some(crate_test_id) = &crate_graph[crate_id].display_name else {
|
||||
return vec![];
|
||||
};
|
||||
let kind = TestItemKind::Crate(crate_id);
|
||||
let crate_test_id = crate_test_id.to_string();
|
||||
let crate_id: Crate = crate_id.into();
|
||||
let module = crate_id.root_module();
|
||||
let mut r = vec![TestItem {
|
||||
id: crate_test_id.clone(),
|
||||
kind: TestItemKind::Crate,
|
||||
kind,
|
||||
label: crate_test_id.clone(),
|
||||
parent: None,
|
||||
file: None,
|
||||
|
@ -1519,13 +1519,28 @@ pub(crate) fn test_item(
|
||||
id: test_item.id,
|
||||
label: test_item.label,
|
||||
kind: match test_item.kind {
|
||||
ide::TestItemKind::Crate => lsp_ext::TestItemKind::Package,
|
||||
ide::TestItemKind::Crate(id) => 'b: {
|
||||
let Some((cargo_ws, target)) = snap.cargo_target_for_crate_root(id) else {
|
||||
break 'b lsp_ext::TestItemKind::Package;
|
||||
};
|
||||
let target = &cargo_ws[target];
|
||||
match target.kind {
|
||||
project_model::TargetKind::Bin
|
||||
| project_model::TargetKind::Lib { .. }
|
||||
| project_model::TargetKind::Example
|
||||
| project_model::TargetKind::BuildScript
|
||||
| project_model::TargetKind::Other => lsp_ext::TestItemKind::Package,
|
||||
project_model::TargetKind::Test | project_model::TargetKind::Bench => {
|
||||
lsp_ext::TestItemKind::Test
|
||||
}
|
||||
}
|
||||
}
|
||||
ide::TestItemKind::Module => lsp_ext::TestItemKind::Module,
|
||||
ide::TestItemKind::Function => lsp_ext::TestItemKind::Test,
|
||||
},
|
||||
can_resolve_children: matches!(
|
||||
test_item.kind,
|
||||
ide::TestItemKind::Crate | ide::TestItemKind::Module
|
||||
ide::TestItemKind::Crate(_) | ide::TestItemKind::Module
|
||||
),
|
||||
parent: test_item.parent,
|
||||
text_document: test_item
|
||||
|
Loading…
Reference in New Issue
Block a user