feat(test): Add support for regex in filter flag (#6343)

Currently, the documentation makes it sound like the test subcommand's filter
flag could accept some kind of pattern matching value like a glob or a regex,
although the function "createFilterFn" accepts a regex as an argument, there's
no way to pass an actual regex value from the CLI.

This commit makes it possible to pass a string that could be cast as regex 
when string matches "^/.*/$".

With this change, a user can use the filter flag as follow:

deno test --filter "/test-.+/"

Also tested that `\` get escaped properly, on MacOS at least, and this is 
also a valid flag:

deno test --filter "/test-\d+/"
This commit is contained in:
Sebastien Filion 2020-07-07 09:13:38 -04:00 committed by GitHub
parent 14a44464a6
commit 4534db656d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 84 additions and 3 deletions

View file

@ -308,6 +308,9 @@ function createFilterFn(
if (filter) {
if (filter instanceof RegExp) {
passes = passes && filter.test(def.name);
} else if (filter.startsWith("/") && filter.endsWith("/")) {
const filterAsRegex = new RegExp(filter.slice(1, filter.length - 1));
passes = passes && filterAsRegex.test(def.name);
} else {
passes = passes && def.name.includes(filter);
}
@ -325,6 +328,8 @@ function createFilterFn(
};
}
exposeForTest("createFilterFn", createFilterFn);
interface RunTestsOptions {
exitOnFail?: boolean;
failFast?: boolean;