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)]
|
#[derive(Debug)]
|
||||||
pub enum TestItemKind {
|
pub enum TestItemKind {
|
||||||
Crate,
|
Crate(CrateId),
|
||||||
Module,
|
Module,
|
||||||
Function,
|
Function,
|
||||||
}
|
}
|
||||||
@ -32,15 +32,17 @@ pub(crate) fn discover_test_roots(db: &RootDatabase) -> Vec<TestItem> {
|
|||||||
crate_graph
|
crate_graph
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|&id| crate_graph[id].origin.is_local())
|
.filter(|&id| crate_graph[id].origin.is_local())
|
||||||
.filter_map(|id| Some(crate_graph[id].display_name.as_ref()?.to_string()))
|
.filter_map(|id| {
|
||||||
.map(|id| TestItem {
|
let test_id = crate_graph[id].display_name.as_ref()?.to_string();
|
||||||
kind: TestItemKind::Crate,
|
Some(TestItem {
|
||||||
label: id.clone(),
|
kind: TestItemKind::Crate(id),
|
||||||
id,
|
label: test_id.clone(),
|
||||||
parent: None,
|
id: test_id,
|
||||||
file: None,
|
parent: None,
|
||||||
text_range: None,
|
file: None,
|
||||||
runnable: None,
|
text_range: None,
|
||||||
|
runnable: None,
|
||||||
|
})
|
||||||
})
|
})
|
||||||
.collect()
|
.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 {
|
let Some(crate_test_id) = &crate_graph[crate_id].display_name else {
|
||||||
return vec![];
|
return vec![];
|
||||||
};
|
};
|
||||||
|
let kind = TestItemKind::Crate(crate_id);
|
||||||
let crate_test_id = crate_test_id.to_string();
|
let crate_test_id = crate_test_id.to_string();
|
||||||
let crate_id: Crate = crate_id.into();
|
let crate_id: Crate = crate_id.into();
|
||||||
let module = crate_id.root_module();
|
let module = crate_id.root_module();
|
||||||
let mut r = vec![TestItem {
|
let mut r = vec![TestItem {
|
||||||
id: crate_test_id.clone(),
|
id: crate_test_id.clone(),
|
||||||
kind: TestItemKind::Crate,
|
kind,
|
||||||
label: crate_test_id.clone(),
|
label: crate_test_id.clone(),
|
||||||
parent: None,
|
parent: None,
|
||||||
file: None,
|
file: None,
|
||||||
|
@ -1519,13 +1519,28 @@ pub(crate) fn test_item(
|
|||||||
id: test_item.id,
|
id: test_item.id,
|
||||||
label: test_item.label,
|
label: test_item.label,
|
||||||
kind: match test_item.kind {
|
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::Module => lsp_ext::TestItemKind::Module,
|
||||||
ide::TestItemKind::Function => lsp_ext::TestItemKind::Test,
|
ide::TestItemKind::Function => lsp_ext::TestItemKind::Test,
|
||||||
},
|
},
|
||||||
can_resolve_children: matches!(
|
can_resolve_children: matches!(
|
||||||
test_item.kind,
|
test_item.kind,
|
||||||
ide::TestItemKind::Crate | ide::TestItemKind::Module
|
ide::TestItemKind::Crate(_) | ide::TestItemKind::Module
|
||||||
),
|
),
|
||||||
parent: test_item.parent,
|
parent: test_item.parent,
|
||||||
text_document: test_item
|
text_document: test_item
|
||||||
|
Loading…
Reference in New Issue
Block a user