1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-24 08:09:08 -05:00

fix(test/coverage): exclude test files (#18748)

Fixes: #18454
This commit is contained in:
Levente Kurusa 2023-04-19 23:30:52 +02:00 committed by GitHub
parent a8ca09f78a
commit c336755881
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 81 additions and 2 deletions

View file

@ -26,6 +26,13 @@ fn no_snaps() {
no_snaps_included("no_snaps_included", "ts");
}
#[test]
fn no_tests() {
no_tests_included("foo", "mts");
no_tests_included("foo", "ts");
no_tests_included("foo", "js");
}
#[test]
fn error_if_invalid_cache() {
let context = TestContextBuilder::new().use_temp_cwd().build();
@ -277,6 +284,53 @@ fn no_snaps_included(test_name: &str, extension: &str) {
output.assert_exit_code(0);
}
fn no_tests_included(test_name: &str, extension: &str) {
let context = TestContext::default();
let tempdir = context.deno_dir();
let tempdir = tempdir.path().join("cov");
let output = context
.new_command()
.args_vec(vec![
"test".to_string(),
"--quiet".to_string(),
"--allow-read".to_string(),
format!("--coverage={}", tempdir.to_str().unwrap()),
format!("coverage/no_tests_included/{test_name}.test.{extension}"),
])
.run();
output.assert_exit_code(0);
output.skip_output_check();
let output = context
.new_command()
.args_vec(vec![
"coverage".to_string(),
format!("{}/", tempdir.to_str().unwrap()),
])
.split_output()
.run();
// Verify there's no "Check" being printed
assert!(output.stderr().is_empty());
let actual = util::strip_ansi_codes(output.stdout()).to_string();
let expected = fs::read_to_string(
util::testdata_path().join("coverage/no_tests_included/expected.out"),
)
.unwrap();
if !util::wildcard_match(&expected, &actual) {
println!("OUTPUT\n{actual}\nOUTPUT");
println!("EXPECTED\n{expected}\nEXPECTED");
panic!("pattern match failed");
}
output.assert_exit_code(0);
}
#[test]
fn no_npm_cache_coverage() {
let context = TestContext::default();

View file

@ -0,0 +1 @@
cover [WILDCARD]/no_tests_included/foo.ts ... 100.000% (3/3)

View file

@ -0,0 +1,6 @@
import { addNumbers } from "./foo.ts";
import { assertEquals } from "https://deno.land/std@0.183.0/testing/asserts.ts";
Deno.test("addNumbers works", () => {
assertEquals(addNumbers(1, 2), 3);
});

View file

@ -0,0 +1,6 @@
import { addNumbers } from './foo.ts';
import { assertEquals } from "https://deno.land/std@0.183.0/testing/asserts.ts";
Deno.test("addNumbers works", () => {
assertEquals(addNumbers(1, 2), 3);
});

View file

@ -0,0 +1,6 @@
import { addNumbers } from "./foo.ts";
import { assertEquals } from "https://deno.land/std@0.183.0/testing/asserts.ts";
Deno.test("addNumbers works", () => {
assertEquals(addNumbers(1, 2), 3);
});

View file

@ -0,0 +1,3 @@
export function addNumbers(a: number, b: number): number {
return a + b;
}

View file

@ -6,6 +6,7 @@ use crate::args::Flags;
use crate::colors;
use crate::proc_state::ProcState;
use crate::tools::fmt::format_json;
use crate::tools::test::is_supported_test_path;
use crate::util::fs::FileCollector;
use crate::util::text_encoding::source_map_from_code;
@ -27,6 +28,7 @@ use std::io::BufWriter;
use std::io::Error;
use std::io::Write;
use std::io::{self};
use std::path::Path;
use std::path::PathBuf;
use text_lines::TextLines;
use uuid::Uuid;
@ -602,7 +604,8 @@ fn filter_coverages(
|| e.url.starts_with(npm_root_dir)
|| e.url.ends_with("__anonymous__")
|| e.url.ends_with("$deno$test.js")
|| e.url.ends_with(".snap");
|| e.url.ends_with(".snap")
|| is_supported_test_path(Path::new(e.url.as_str()));
let is_included = include.iter().any(|p| p.is_match(&e.url));
let is_excluded = exclude.iter().any(|p| p.is_match(&e.url));

View file

@ -1518,7 +1518,7 @@ async fn test_specifiers(
}
/// Checks if the path has a basename and extension Deno supports for tests.
fn is_supported_test_path(path: &Path) -> bool {
pub(crate) fn is_supported_test_path(path: &Path) -> bool {
if let Some(name) = path.file_stem() {
let basename = name.to_string_lossy();
(basename.ends_with("_test")