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

37
cli/js/testing_test.ts Normal file
View file

@ -0,0 +1,37 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
import { assertThrows, unitTest } from "./test_util.ts";
unitTest(function testFnOverloading(): void {
// just verifying that you can use this test definition syntax
Deno.test("test fn overloading", (): void => {});
});
unitTest(function nameOfTestCaseCantBeEmpty(): void {
assertThrows(
() => {
Deno.test("", () => {});
},
Error,
"The name of test case can't be empty"
);
assertThrows(
() => {
Deno.test({
name: "",
fn: () => {}
});
},
Error,
"The name of test case can't be empty"
);
});
unitTest(function testFnCantBeAnonymous(): void {
assertThrows(
() => {
Deno.test(function() {});
},
Error,
"Test function can't be anonymous"
);
});