summaryrefslogtreecommitdiff
path: root/cli/js/testing.ts
diff options
context:
space:
mode:
authorSebastien Filion <sebastienfilion@mac.com>2020-07-07 09:13:38 -0400
committerGitHub <noreply@github.com>2020-07-07 15:13:38 +0200
commit4534db656d81f0e33dcbfbaf75c547009c9c31b8 (patch)
tree514b958141446f7a96224b213ad13d9b7429ac4c /cli/js/testing.ts
parent14a44464a6e2c078fd329c26eff2ecfbc9b58603 (diff)
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+/"
Diffstat (limited to 'cli/js/testing.ts')
-rw-r--r--cli/js/testing.ts5
1 files changed, 5 insertions, 0 deletions
diff --git a/cli/js/testing.ts b/cli/js/testing.ts
index e8d42c2eb..0648683a4 100644
--- a/cli/js/testing.ts
+++ b/cli/js/testing.ts
@@ -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;