diff --git a/cli/lsp/testing/definitions.rs b/cli/lsp/testing/definitions.rs index 0e9eb9b4d3..1022fc43a2 100644 --- a/cli/lsp/testing/definitions.rs +++ b/cli/lsp/testing/definitions.rs @@ -158,4 +158,8 @@ impl TestDefinitions { .iter() .find(|td| td.id.as_str() == id.as_ref()) } + + pub fn is_empty(&self) -> bool { + self.discovered.is_empty() && self.injected.is_empty() + } } diff --git a/cli/lsp/testing/execution.rs b/cli/lsp/testing/execution.rs index 6474d73545..28c6a5de9d 100644 --- a/cli/lsp/testing/execution.rs +++ b/cli/lsp/testing/execution.rs @@ -71,11 +71,7 @@ fn as_queue_and_filters( } } } - } - - // if we didn't have any specific include filters, we assume that all modules - // will be tested - if queue.is_empty() { + } else { queue.extend(tests.keys().cloned()); } @@ -97,6 +93,8 @@ fn as_queue_and_filters( } } + queue.retain(|s| !tests.get(s).unwrap().is_empty()); + (queue, filters) } @@ -816,16 +814,28 @@ mod tests { #[test] fn test_as_queue_and_filters() { let specifier = ModuleSpecifier::parse("file:///a/file.ts").unwrap(); + // Regression test for https://github.com/denoland/vscode_deno/issues/890. + let non_test_specifier = + ModuleSpecifier::parse("file:///a/no_tests.ts").unwrap(); let params = lsp_custom::TestRunRequestParams { id: 1, kind: lsp_custom::TestRunKind::Run, - include: Some(vec![lsp_custom::TestIdentifier { - text_document: lsp::TextDocumentIdentifier { - uri: specifier.clone(), + include: Some(vec![ + lsp_custom::TestIdentifier { + text_document: lsp::TextDocumentIdentifier { + uri: specifier.clone(), + }, + id: None, + step_id: None, }, - id: None, - step_id: None, - }]), + lsp_custom::TestIdentifier { + text_document: lsp::TextDocumentIdentifier { + uri: non_test_specifier.clone(), + }, + id: None, + step_id: None, + }, + ]), exclude: vec![lsp_custom::TestIdentifier { text_document: lsp::TextDocumentIdentifier { uri: specifier.clone(), @@ -860,6 +870,7 @@ mod tests { script_version: "1".to_string(), }; tests.insert(specifier.clone(), test_definitions.clone()); + tests.insert(non_test_specifier, Default::default()); let (queue, filters) = as_queue_and_filters(¶ms, &tests); assert_eq!(json!(queue), json!([specifier])); let mut exclude = HashMap::new();