refactor: preliminary cleanup of Deno.runTests() (#4237)

* refactor: preliminary cleanup of Deno.runTests()

* Change time measurement to use new Date() instead of
  performance.now(). Because there is no guarantee that tests are
  run with "--allow-hr" using new Date() guarantees higher
  precision of 1ms instead of 2ms.

* Support String type filter in "skip" and "only".

* Split "exitOnFail" into "exitOnFail" and "failFast".
  Former tells if "runTests()" should exit with code 1 on test
  failure, while latter tells if "runTests()" should stop
  running tests on first failure.

* Use "defer" to wait for unhandled promise rejection - this bit
  is funky and doesn't seem right, but for now it's just a rewrite
  from using "setTimeout". Intended to be fixed in later commits.

* Remove global "__DENO_TEST_REGISTRY", don't expose list of
  registered tests (to be addressed in follow up commits)

* Remove arbitrary slow test threshold; use uniform coloring
  instead
This commit is contained in:
Bartek Iwańczuk 2020-03-05 11:52:18 +01:00 committed by GitHub
parent 52b96fc22a
commit 20dad3659c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 119 additions and 65 deletions

View file

@ -33,15 +33,17 @@ declare namespace Deno {
export function test(name: string, fn: TestFunction): void;
export interface RunTestsOptions {
/** If `true`, Deno will exit upon a failure after logging that failure to
* the console. Defaults to `false`. */
/** If `true`, Deno will exit with status code 1 if there was
* test failure. Defaults to `true`. */
exitOnFail?: boolean;
/** Provide a regular expression of which only tests that match the regular
* expression are run. */
only?: RegExp;
/** Provide a regular expression of which tests that match the regular
* expression are skipped. */
skip?: RegExp;
/** If `true`, Deno will exit upon first test failure Defaults to `false`. */
failFast?: boolean;
/** String or RegExp used to filter test to run. Only test with names
* matching provided `String` or `RegExp` will be run. */
only?: string | RegExp;
/** String or RegExp used to skip tests to run. Tests with names
* matching provided `String` or `RegExp` will not be run. */
skip?: string | RegExp;
/** Disable logging of the results. Defaults to `false`. */
disableLog?: boolean;
}