just-test-node 1.5.0 → 2.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/lib/Discover.d.ts +25 -0
  2. package/lib/Discover.js +4 -0
  3. package/lib/OptionsDefinitions.d.ts +16 -0
  4. package/lib/OptionsDefinitions.js +61 -0
  5. package/lib/StackTrace.d.ts +1 -0
  6. package/lib/StackTrace.js +44 -0
  7. package/lib/Suite.d.ts +46 -0
  8. package/lib/Suite.js +113 -0
  9. package/lib/SuiteProvider.d.ts +9 -0
  10. package/lib/SuiteProvider.js +88 -0
  11. package/lib/Test.d.ts +10 -6
  12. package/lib/Test.js +24 -12
  13. package/lib/TestStage.d.ts +1 -1
  14. package/lib/TestStage.js +2 -1
  15. package/lib/code-position-resolution.d.ts +2 -0
  16. package/lib/code-position-resolution.js +50 -0
  17. package/lib/examples/dir-suite/@test-suite +0 -0
  18. package/lib/examples/dir-suite/child-dir-suite/@test-suite +0 -0
  19. package/lib/{exampleTestFile.test.d.ts → examples/dir-suite/child-dir-suite/childDirTests.test.d.ts} +0 -0
  20. package/lib/examples/dir-suite/child-dir-suite/childDirTests.test.js +9 -0
  21. package/lib/examples/dir-suite/inDirSuite.test.d.ts +2 -0
  22. package/lib/examples/dir-suite/inDirSuite.test.js +9 -0
  23. package/lib/examples/dir-suite/just-a-folder/inJustAFolderTest.d.ts +2 -0
  24. package/lib/examples/dir-suite/just-a-folder/inJustAFolderTest.js +9 -0
  25. package/lib/examples/exampleTestFile.test.d.ts +2 -0
  26. package/lib/examples/exampleTestFile.test.js +60 -0
  27. package/lib/help.d.ts +1 -1
  28. package/lib/help.js +2 -1
  29. package/lib/index.d.ts +1 -0
  30. package/lib/index.js +118 -54
  31. package/lib/reporters/JsonReporter.d.ts +20 -0
  32. package/lib/reporters/JsonReporter.js +39 -0
  33. package/lib/reporters/Reporter.d.ts +4 -0
  34. package/lib/reporters/Reporter.js +4 -0
  35. package/lib/reporters/SpecReporter.d.ts +14 -0
  36. package/lib/reporters/SpecReporter.js +85 -0
  37. package/lib/reporters/index.d.ts +3 -0
  38. package/lib/reporters/index.js +17 -0
  39. package/lib/run-results/SuiteRunResult.d.ts +11 -0
  40. package/lib/run-results/SuiteRunResult.js +19 -0
  41. package/lib/run-results/TestRunResult.d.ts +9 -0
  42. package/lib/run-results/TestRunResult.js +15 -0
  43. package/lib/run-results/index.d.ts +2 -0
  44. package/lib/run-results/index.js +16 -0
  45. package/package.json +69 -64
  46. package/lib/OptionsDefinition.d.ts +0 -5
  47. package/lib/OptionsDefinition.js +0 -29
  48. package/lib/PerformancePolyfill.d.ts +0 -1
  49. package/lib/PerformancePolyfill.js +0 -16
  50. package/lib/SpecReporter.d.ts +0 -12
  51. package/lib/SpecReporter.js +0 -76
  52. package/lib/TestRunResult.d.ts +0 -9
  53. package/lib/TestRunResult.js +0 -13
  54. package/lib/TestSuiteClass.d.ts +0 -28
  55. package/lib/TestSuiteClass.js +0 -78
  56. package/lib/exampleTestFile.test.js +0 -59
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function default_1(suite) {
4
+ suite.test("test in dir-suite", t => {
5
+ });
6
+ }
7
+ exports.default = default_1;
8
+
9
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4YW1wbGVzL2Rpci1zdWl0ZS9pbkRpclN1aXRlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxtQkFBeUIsS0FBZ0I7SUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNwQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFIRCw0QkFHQyIsImZpbGUiOiJleGFtcGxlcy9kaXItc3VpdGUvaW5EaXJTdWl0ZS50ZXN0LmpzIiwic291cmNlUm9vdCI6Ii4uXFwuLlxcLi5cXHNyYyJ9
@@ -0,0 +1,2 @@
1
+ import { TestSuite } from "just-test-api";
2
+ export default function (suite: TestSuite): void;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function default_1(suite) {
4
+ suite.test("test in just-a-folder", t => {
5
+ });
6
+ }
7
+ exports.default = default_1;
8
+
9
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4YW1wbGVzL2Rpci1zdWl0ZS9qdXN0LWEtZm9sZGVyL2luSnVzdEFGb2xkZXJUZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsbUJBQXlCLEtBQWdCO0lBQ3hDLEtBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBSEQsNEJBR0MiLCJmaWxlIjoiZXhhbXBsZXMvZGlyLXN1aXRlL2p1c3QtYS1mb2xkZXIvaW5KdXN0QUZvbGRlclRlc3QuanMiLCJzb3VyY2VSb290IjoiLi5cXC4uXFwuLlxcLi5cXHNyYyJ9
@@ -0,0 +1,2 @@
1
+ import { TestSuite } from "just-test-api";
2
+ export default function (suite: TestSuite): void;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function someFunction() { }
4
+ console.log("When discovering, or using json reporter - Should not print in module scope");
5
+ function default_1(suite) {
6
+ suite.describe("Passing suite", suite => {
7
+ console.log("When discovering, or using json reporter - Should not print in describe");
8
+ suite.test("Simple test", t => {
9
+ console.log("When discovering, or using json reporter - Should not print in test");
10
+ });
11
+ suite.test("Async", async (t) => {
12
+ await Promise.resolve("Hi");
13
+ });
14
+ suite.describe(someFunction, suite => {
15
+ suite.test("Test", t => {
16
+ });
17
+ });
18
+ });
19
+ suite.describe("Failing suite", suite => {
20
+ suite.test("No stage error", t => {
21
+ throw "asdf";
22
+ });
23
+ suite.test("Arrage error", t => {
24
+ t.arrange();
25
+ throw "asdf";
26
+ });
27
+ suite.test("Act error", t => {
28
+ t.act();
29
+ throw "asdf";
30
+ });
31
+ suite.test("Assert error", t => {
32
+ t.assert();
33
+ throw "asdf";
34
+ });
35
+ suite.test("Throw Error", t => {
36
+ t.assert();
37
+ throw new Error("Some error message.");
38
+ });
39
+ suite.test("Throws after await", async (t) => {
40
+ await new Promise(r => setTimeout(r, 1));
41
+ t.assert();
42
+ throw "error";
43
+ });
44
+ suite.test("Timeout reached.", async (t) => {
45
+ t.timeout = 1;
46
+ await new Promise(r => setTimeout(r, 100));
47
+ });
48
+ });
49
+ suite.describe("Empty suite", suite => {
50
+ });
51
+ suite.describe("Named functions", suite => {
52
+ suite.testFunc(named_function_test_with_spaces);
53
+ suite.testFunc(function inline_function() { });
54
+ });
55
+ }
56
+ exports.default = default_1;
57
+ function named_function_test_with_spaces(t) {
58
+ }
59
+
60
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4YW1wbGVzL2V4YW1wbGVUZXN0RmlsZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsU0FBUyxZQUFZLEtBQUssQ0FBQztBQUUzQixPQUFPLENBQUMsR0FBRyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7QUFFM0YsbUJBQXlCLEtBQWdCO0lBQ3hDLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUVBQXlFLENBQUMsQ0FBQztRQUV2RixLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDN0IsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFFdkMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNoQyxNQUFNLE1BQU0sQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxNQUFNLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQzNCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNSLE1BQU0sTUFBTSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUM5QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLE1BQU0sQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDMUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV6QyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLE9BQU8sQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDeEMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDZCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRTtJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDekMsS0FBSyxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ2hELEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxlQUFlLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBaEVELDRCQWdFQztBQUVELFNBQVMsK0JBQStCLENBQUMsQ0FBYTtBQUN0RCxDQUFDIiwiZmlsZSI6ImV4YW1wbGVzL2V4YW1wbGVUZXN0RmlsZS50ZXN0LmpzIiwic291cmNlUm9vdCI6Ii4uXFwuLlxcc3JjIn0=
package/lib/help.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { OptionDefinition } from "./OptionsDefinition";
1
+ import { OptionDefinition } from "./OptionsDefinitions";
2
2
  export declare function printHelp(optionsDefinitions: OptionDefinition[]): void;
package/lib/help.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printHelp = void 0;
3
4
  function printHelp(optionsDefinitions) {
4
5
  console.log();
5
6
  console.log("Help");
@@ -19,4 +20,4 @@ function printHelp(optionsDefinitions) {
19
20
  }
20
21
  exports.printHelp = printHelp;
21
22
 
22
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxtQkFBMEIsa0JBQXNDO0lBQy9ELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRWQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNaLFlBQVksSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQztRQUVELFlBQVksSUFBSSxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU7WUFDbkIsWUFBWSxJQUFJLGVBQWUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ2hEO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFyQkQsOEJBcUJDIiwiZmlsZSI6ImhlbHAuanMiLCJzb3VyY2VSb290IjoiLi5cXHNyYyJ9
23
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsU0FBZ0IsU0FBUyxDQUFDLGtCQUFzQztJQUMvRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVkLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUM5QixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDWixZQUFZLElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEM7UUFFRCxZQUFZLElBQUksS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQ25CLFlBQVksSUFBSSxlQUFlLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNoRDtRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBckJELDhCQXFCQyIsImZpbGUiOiJoZWxwLmpzIiwic291cmNlUm9vdCI6Ii4uXFxzcmMifQ==
package/lib/index.d.ts CHANGED
@@ -1 +1,2 @@
1
+ #!/usr/bin/env node
1
2
  export {};
package/lib/index.js CHANGED
@@ -1,93 +1,157 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
6
+ }) : (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ o[k2] = m[k];
9
+ }));
10
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
11
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
12
+ }) : function(o, v) {
13
+ o["default"] = v;
14
+ });
15
+ var __importStar = (this && this.__importStar) || function (mod) {
16
+ if (mod && mod.__esModule) return mod;
17
+ var result = {};
18
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
19
+ __setModuleDefault(result, mod);
20
+ return result;
21
+ };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
3
25
  Object.defineProperty(exports, "__esModule", { value: true });
4
- const args = require("command-line-args");
5
- const glob = require("glob");
6
- const path = require("path");
7
- const OptionsDefinition_1 = require("./OptionsDefinition");
26
+ const command_line_args_1 = __importDefault(require("command-line-args"));
27
+ const glob_1 = __importDefault(require("glob"));
28
+ const path_1 = __importDefault(require("path"));
29
+ const OptionsDefinitions_1 = require("./OptionsDefinitions");
8
30
  const help_1 = require("./help");
9
- const TestSuiteClass_1 = require("./TestSuiteClass");
10
- const SpecReporter_1 = require("./SpecReporter");
11
- const PerformancePolyfill_1 = require("./PerformancePolyfill");
31
+ const reporters_1 = require("./reporters");
32
+ const SuiteProvider_1 = require("./SuiteProvider");
12
33
  main();
13
34
  async function main() {
14
35
  try {
15
- PerformancePolyfill_1.polyfillPerformance();
16
- const options = args(OptionsDefinition_1.optionsDefinitions);
36
+ const options = (0, command_line_args_1.default)(OptionsDefinitions_1.optionsDefinitions);
37
+ (0, OptionsDefinitions_1.validateOptions)(options);
17
38
  if (options.help) {
18
- help_1.printHelp(OptionsDefinition_1.optionsDefinitions);
19
- process.exit();
39
+ (0, help_1.printHelp)(OptionsDefinitions_1.optionsDefinitions);
40
+ return;
20
41
  }
21
- let testFiles = await getTestFiles(options);
22
- await test(testFiles, options);
42
+ const { testFiles, suiteProvider } = await resolveFiles(options);
43
+ if (options.discover) {
44
+ await outputDiscoveredTests(testFiles, suiteProvider);
45
+ return;
46
+ }
47
+ const passed = await test(testFiles, suiteProvider, options);
48
+ if (!passed)
49
+ process.exit(options.testFailureExitCode);
23
50
  }
24
51
  catch (error) {
25
52
  console.error(error);
26
- process.exit(1);
53
+ process.exit(-1);
27
54
  }
28
55
  }
29
56
  ;
30
- function getTestFiles(options) {
57
+ async function resolveFiles(options) {
58
+ const restoreConsole = disableConsole();
59
+ try {
60
+ const testFilesPromise = getTestFilesAsync(options);
61
+ const directorySuitesPromise = getDirectorySuitesAsync(options);
62
+ const directorySuites = await directorySuitesPromise;
63
+ const suiteProvider = new SuiteProvider_1.SuiteProvider(directorySuites);
64
+ const testFiles = await testFilesPromise;
65
+ return { testFiles, suiteProvider };
66
+ }
67
+ finally {
68
+ restoreConsole();
69
+ }
70
+ }
71
+ function disableConsole() {
72
+ const original = console;
73
+ console = createFakeConsole();
74
+ return () => { console = original; };
75
+ }
76
+ function createFakeConsole() {
77
+ function nothing() { }
78
+ ;
79
+ return { log: nothing, info: nothing, debug: nothing, warn: nothing, error: nothing };
80
+ }
81
+ async function getTestFilesAsync(options) {
82
+ return await globAsync(options.glob);
83
+ }
84
+ async function getDirectorySuitesAsync(options) {
85
+ return await globAsync(options.directorySuitesGlob);
86
+ }
87
+ function globAsync(pattern) {
31
88
  return new Promise((resolve, reject) => {
32
- glob(options.glob, (error, matches) => {
33
- if (error) {
89
+ (0, glob_1.default)(pattern, (error, matches) => {
90
+ if (error)
34
91
  reject(error);
35
- }
36
- else {
92
+ else
37
93
  resolve(matches);
38
- }
39
94
  });
40
95
  });
41
96
  }
42
- async function test(files, options) {
43
- let suite = await createRootSuite(files, !!options.debug);
44
- let reporter = new SpecReporter_1.SpecReporter(console);
45
- reporter.listenTo(suite);
46
- let passed = await suite.run({ filter: options.filter, debug: !!options.debug });
47
- if (passed) {
48
- process.exit(0);
97
+ async function test(files, suiteProvider, options) {
98
+ const reporter = createReporter(options.reporter, console);
99
+ const restoreConsole = options.reporter == "json" ?
100
+ disableConsole() :
101
+ () => { };
102
+ try {
103
+ const suite = await createTree(files, suiteProvider);
104
+ reporter.listenTo(suite);
105
+ if (options.filter)
106
+ suite.treeShake(options.filter.toLowerCase());
107
+ return await suite.run({ debug: options.debug });
49
108
  }
50
- else {
51
- process.exit(1);
109
+ finally {
110
+ restoreConsole();
52
111
  }
53
112
  }
54
- async function createRootSuite(files, isDebug) {
55
- let rootSuite = new TestSuiteClass_1.TestSuiteClass();
56
- let testFileFunctions = [];
57
- for (let file of files) {
58
- testFileFunctions.push(await getTestFileFunction(file));
113
+ function createReporter(reporter, console) {
114
+ switch (reporter) {
115
+ case "spec":
116
+ return new reporters_1.SpecReporter(console);
117
+ case "json":
118
+ return new reporters_1.JsonReporter(console);
59
119
  }
60
- if (isDebug) {
61
- // VSCode might miss a typescript breakpoint if the file was loaded and executed too fast.
62
- // It looks like it takes vscode some time to:
63
- // Scan the js file.
64
- // Find and process the mapping.
65
- // Load the typescript file and its breakpoints.
66
- // Alert the debugger of the breakpoints.
67
- // This simple await solves it. The 50 millisec is not special just picked to be safe.
68
- await new Promise(r => setTimeout(r, 50));
69
- }
70
- for (let testFunc of testFileFunctions) {
71
- testFunc(rootSuite);
120
+ }
121
+ async function createTree(filesPaths, suiteProvider) {
122
+ for (let filePath of filesPaths) {
123
+ const testFuncPromise = getTestFileFunctionAsync(filePath);
124
+ const suite = suiteProvider.getSuiteForTestFile(filePath);
125
+ const testFunc = await testFuncPromise;
126
+ testFunc(suite);
72
127
  }
73
- return rootSuite;
128
+ return suiteProvider.root;
74
129
  }
75
- async function getTestFileFunction(file) {
130
+ async function getTestFileFunctionAsync(file) {
76
131
  let testFileFunction;
77
132
  try {
78
- testFileFunction = await Promise.resolve().then(() => require(path.resolve(file)));
133
+ testFileFunction = await Promise.resolve().then(() => __importStar(require(path_1.default.resolve(file))));
79
134
  }
80
135
  catch (reason) {
81
- console.error(`The file '${file}' matched the tests glob but failed to be imported. reason:`, reason);
82
- process.exit(1);
136
+ throw `The file '${file}' matched the tests glob but failed to be imported. reason: ${reason}`;
83
137
  }
84
138
  if (typeof testFileFunction != "function")
85
139
  testFileFunction = testFileFunction.default;
86
140
  if (typeof testFileFunction != "function") {
87
- console.error(`The file '${file}' matched the tests glob but did not export a default function.`);
88
- process.exit(1);
141
+ throw `The file '${file}' matched the tests glob but did not export a default function.`;
89
142
  }
90
143
  return testFileFunction;
91
144
  }
145
+ async function outputDiscoveredTests(files, suiteProvider) {
146
+ const restoreConsole = disableConsole();
147
+ let suite;
148
+ try {
149
+ suite = await createTree(files, suiteProvider);
150
+ }
151
+ finally {
152
+ restoreConsole();
153
+ }
154
+ console.log(JSON.stringify(suite.discover()));
155
+ }
92
156
 
93
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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
157
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsS0FBSyxNQUFNO1lBQ1YsT0FBTyxJQUFJLHdCQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDbEM7QUFDRixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxVQUFvQixFQUFFLGFBQTRCO0lBQzNFLEtBQUssSUFBSSxRQUFRLElBQUksVUFBVSxFQUFFO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQztRQUN2QyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDaEI7SUFFRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7QUFDM0IsQ0FBQztBQUVELEtBQUssVUFBVSx3QkFBd0IsQ0FBQyxJQUFZO0lBQ25ELElBQUksZ0JBQXFCLENBQUM7SUFFMUIsSUFBSTtRQUNILGdCQUFnQixHQUFHLHdEQUFhLGNBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUMsQ0FBQztLQUNwRDtJQUNELE9BQU8sTUFBTSxFQUFFO1FBQ2QsTUFBTSxhQUFhLElBQUksK0RBQStELE1BQU0sRUFBRSxDQUFDO0tBQy9GO0lBRUQsSUFBSSxPQUFPLGdCQUFnQixJQUFJLFVBQVU7UUFDeEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO0lBRTdDLElBQUksT0FBTyxnQkFBZ0IsSUFBSSxVQUFVLEVBQUU7UUFDMUMsTUFBTSxhQUFhLElBQUksaUVBQWlFLENBQUM7S0FDekY7SUFFRCxPQUFPLGdCQUFnQixDQUFDO0FBQ3pCLENBQUM7QUFFRCxLQUFLLFVBQVUscUJBQXFCLENBQUMsS0FBZSxFQUFFLGFBQTRCO0lBQ2pGLE1BQU0sY0FBYyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3hDLElBQUksS0FBWSxDQUFDO0lBRWpCLElBQUk7UUFDSCxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQy9DO1lBQ087UUFDUCxjQUFjLEVBQUUsQ0FBQztLQUNqQjtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi5cXHNyYyJ9
@@ -0,0 +1,20 @@
1
+ import { SuiteResultStatus } from "../run-results/SuiteRunResult";
2
+ import { TestRunResult } from "../run-results/TestRunResult";
3
+ import { Suite } from "../Suite";
4
+ import { Reporter } from "./Reporter";
5
+ export interface SuiteResult {
6
+ title: string;
7
+ elapsed: number;
8
+ status: SuiteResultStatus;
9
+ tests: TestRunResult[];
10
+ childrenSuites: SuiteResult[];
11
+ }
12
+ export declare class JsonReporter implements Reporter {
13
+ private output;
14
+ private suiteToResultMap;
15
+ private testToResultMap;
16
+ constructor(output: Console);
17
+ listenTo(rootSuite: Suite): void;
18
+ private outputResultsFor;
19
+ private getResultOfSuite;
20
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonReporter = void 0;
4
+ class JsonReporter {
5
+ constructor(output) {
6
+ this.output = output;
7
+ this.suiteToResultMap = new Map();
8
+ this.testToResultMap = new Map();
9
+ }
10
+ listenTo(rootSuite) {
11
+ rootSuite.onSuiteEnded.add(args => {
12
+ this.suiteToResultMap.set(args.suite, args.result);
13
+ if (args.suite == rootSuite)
14
+ this.outputResultsFor(rootSuite);
15
+ });
16
+ rootSuite.onTestEnded.add(args => {
17
+ this.testToResultMap.set(args.test, args.result);
18
+ });
19
+ }
20
+ outputResultsFor(suite) {
21
+ const result = this.getResultOfSuite(suite);
22
+ this.output.log(JSON.stringify(result));
23
+ }
24
+ getResultOfSuite(suite) {
25
+ const runResult = this.suiteToResultMap.get(suite);
26
+ const tests = suite.tests.map(e => this.testToResultMap.get(e));
27
+ const childrenSuites = suite.childrenSuites.map(e => this.getResultOfSuite(e));
28
+ return {
29
+ title: suite.title,
30
+ status: runResult.status,
31
+ elapsed: runResult.elapsed,
32
+ tests: tests,
33
+ childrenSuites: childrenSuites
34
+ };
35
+ }
36
+ }
37
+ exports.JsonReporter = JsonReporter;
38
+
39
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlcG9ydGVycy9Kc29uUmVwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBY0EsTUFBYSxZQUFZO0lBSXhCLFlBQW9CLE1BQWU7UUFBZixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBSDNCLHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ3BELG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7SUFHekQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxTQUFnQjtRQUMvQixTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRW5ELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO2dCQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQVk7UUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQztRQUNwRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQztRQUVoRixPQUFPO1lBQ04sS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN4QixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsS0FBSyxFQUFFLEtBQUs7WUFDWixjQUFjLEVBQUUsY0FBYztTQUM5QixDQUFDO0lBQ0gsQ0FBQztDQUNEO0FBdkNELG9DQXVDQyIsImZpbGUiOiJyZXBvcnRlcnMvSnNvblJlcG9ydGVyLmpzIiwic291cmNlUm9vdCI6Ii4uXFwuLlxcc3JjIn0=
@@ -0,0 +1,4 @@
1
+ import { Suite } from "../Suite";
2
+ export interface Reporter {
3
+ listenTo(suite: Suite): void;
4
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlcG9ydGVycy9SZXBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InJlcG9ydGVycy9SZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIuLlxcLi5cXHNyYyJ9
@@ -0,0 +1,14 @@
1
+ import { Suite } from "../Suite";
2
+ import { Reporter } from "./Reporter";
3
+ export declare class SpecReporter implements Reporter {
4
+ private output;
5
+ private symbols;
6
+ private indentation;
7
+ private passedCount;
8
+ private errors;
9
+ constructor(output: Console);
10
+ listenTo(rootSuite: Suite): void;
11
+ private onEnd;
12
+ private formatElapsed;
13
+ private getTestFullTitle;
14
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SpecReporter = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ class SpecReporter {
9
+ constructor(output) {
10
+ this.output = output;
11
+ this.symbols = {
12
+ ok: '✓',
13
+ err: '✖',
14
+ };
15
+ this.indentation = " ";
16
+ this.passedCount = 0;
17
+ this.errors = [];
18
+ }
19
+ listenTo(rootSuite) {
20
+ let indent = "";
21
+ rootSuite.onSuiteStarted.add(suite => {
22
+ if (suite == rootSuite)
23
+ return;
24
+ this.output.log();
25
+ this.output.info(indent + suite.title);
26
+ indent += this.indentation;
27
+ });
28
+ rootSuite.onSuiteEnded.add(args => {
29
+ indent = indent.substr(0, indent.length - this.indentation.length);
30
+ if (args.suite == rootSuite) {
31
+ this.onEnd();
32
+ }
33
+ });
34
+ rootSuite.onTestEnded.add(args => {
35
+ const result = args.result;
36
+ const elapsed = this.formatElapsed(result.elapsed);
37
+ if (result.passed) {
38
+ this.passedCount++;
39
+ this.output.log(chalk_1.default.green(`${indent}${this.symbols.ok} ${result.title}`) + ` ${elapsed}`);
40
+ }
41
+ else {
42
+ this.errors.push(args);
43
+ this.output.log(chalk_1.default.red(`${indent}${this.symbols.err} ${result.title}`) + ` ${elapsed}`);
44
+ }
45
+ });
46
+ }
47
+ onEnd() {
48
+ if (!this.errors)
49
+ return;
50
+ this.output.log();
51
+ this.output.log("Failed tests:");
52
+ this.output.log("=============");
53
+ for (let failedTestRun of this.errors) {
54
+ this.output.log();
55
+ let title = this.getTestFullTitle(failedTestRun.test);
56
+ this.output.log(title);
57
+ this.output.log(this.indentation + chalk_1.default.red(`${failedTestRun.result.reason}`));
58
+ }
59
+ this.output.log();
60
+ this.output.log(chalk_1.default.green(`${this.passedCount} passing`));
61
+ if (this.errors.length > 0) {
62
+ this.output.log(chalk_1.default.red(`${this.errors.length} failing`));
63
+ }
64
+ this.output.log();
65
+ }
66
+ formatElapsed(elapsed) {
67
+ return chalk_1.default.grey(`(${elapsed.toFixed(2)}ms)`);
68
+ }
69
+ getTestFullTitle(test) {
70
+ let titles = [test.title];
71
+ let parent = test.parent;
72
+ while (parent && parent.title) {
73
+ titles.push(parent.title);
74
+ parent = parent.parent;
75
+ }
76
+ let title = titles.pop();
77
+ while (titles.length > 0) {
78
+ title += " -> " + titles.pop();
79
+ }
80
+ return title;
81
+ }
82
+ }
83
+ exports.SpecReporter = SpecReporter;
84
+
85
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlcG9ydGVycy9TcGVjUmVwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBSzFCLE1BQWEsWUFBWTtJQVd4QixZQUFvQixNQUFlO1FBQWYsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQVYzQixZQUFPLEdBQUc7WUFDakIsRUFBRSxFQUFFLEdBQUc7WUFDUCxHQUFHLEVBQUUsR0FBRztTQUNSLENBQUM7UUFFTSxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixXQUFNLEdBQW9CLEVBQUUsQ0FBQztJQUdyQyxDQUFDO0lBRU0sUUFBUSxDQUFDLFNBQWdCO1FBQy9CLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVoQixTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQyxJQUFJLEtBQUssSUFBSSxTQUFTO2dCQUNyQixPQUFPO1lBRVIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVuRSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxFQUFFO2dCQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDYjtRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDNUY7aUJBQ0k7Z0JBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQzNGO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNmLE9BQU87UUFFUixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWpDLEtBQUssSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRWxCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDaEY7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRTVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sVUFBVSxDQUFDLENBQUMsQ0FBQztTQUM1RDtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUFlO1FBQ3BDLE9BQU8sZUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFVO1FBQ2xDLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLElBQUksTUFBTSxHQUFzQixJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTVDLE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDdkI7UUFFRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFHLENBQUM7UUFFMUIsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QixLQUFLLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUMvQjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztDQUNEO0FBbEdELG9DQWtHQyIsImZpbGUiOiJyZXBvcnRlcnMvU3BlY1JlcG9ydGVyLmpzIiwic291cmNlUm9vdCI6Ii4uXFwuLlxcc3JjIn0=
@@ -0,0 +1,3 @@
1
+ export * from "./Reporter";
2
+ export * from "./SpecReporter";
3
+ export * from "./JsonReporter";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./Reporter"), exports);
14
+ __exportStar(require("./SpecReporter"), exports);
15
+ __exportStar(require("./JsonReporter"), exports);
16
+
17
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlcG9ydGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkI7QUFDM0IsaURBQStCO0FBQy9CLGlEQUErQiIsImZpbGUiOiJyZXBvcnRlcnMvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi5cXC4uXFxzcmMifQ==
@@ -0,0 +1,11 @@
1
+ export declare enum SuiteResultStatus {
2
+ Passed = "passed",
3
+ Failed = "failed",
4
+ Partial = "partial"
5
+ }
6
+ export declare class SuiteRunResult {
7
+ title: string;
8
+ elapsed: number;
9
+ status: SuiteResultStatus;
10
+ constructor(title: string, elapsed: number, status: SuiteResultStatus);
11
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SuiteRunResult = exports.SuiteResultStatus = void 0;
4
+ var SuiteResultStatus;
5
+ (function (SuiteResultStatus) {
6
+ SuiteResultStatus["Passed"] = "passed";
7
+ SuiteResultStatus["Failed"] = "failed";
8
+ SuiteResultStatus["Partial"] = "partial";
9
+ })(SuiteResultStatus = exports.SuiteResultStatus || (exports.SuiteResultStatus = {}));
10
+ class SuiteRunResult {
11
+ constructor(title, elapsed, status) {
12
+ this.title = title;
13
+ this.elapsed = elapsed;
14
+ this.status = status;
15
+ }
16
+ }
17
+ exports.SuiteRunResult = SuiteRunResult;
18
+
19
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bi1yZXN1bHRzL1N1aXRlUnVuUmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUM1QixzQ0FBaUIsQ0FBQTtJQUNqQixzQ0FBaUIsQ0FBQTtJQUNqQix3Q0FBbUIsQ0FBQTtBQUNwQixDQUFDLEVBSlcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFJNUI7QUFFRCxNQUFhLGNBQWM7SUFDMUIsWUFBbUIsS0FBYSxFQUFTLE9BQWUsRUFBUyxNQUF5QjtRQUF2RSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQW1CO0lBQzFGLENBQUM7Q0FDRDtBQUhELHdDQUdDIiwiZmlsZSI6InJ1bi1yZXN1bHRzL1N1aXRlUnVuUmVzdWx0LmpzIiwic291cmNlUm9vdCI6Ii4uXFwuLlxcc3JjIn0=
@@ -0,0 +1,9 @@
1
+ import { TestStage } from "../TestStage";
2
+ export declare class TestRunResult {
3
+ title: string;
4
+ elapsed: number;
5
+ stage: TestStage;
6
+ passed: boolean;
7
+ reason?: string | undefined;
8
+ constructor(title: string, elapsed: number, stage: TestStage, passed: boolean, reason?: string | undefined);
9
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestRunResult = void 0;
4
+ class TestRunResult {
5
+ constructor(title, elapsed, stage, passed, reason) {
6
+ this.title = title;
7
+ this.elapsed = elapsed;
8
+ this.stage = stage;
9
+ this.passed = passed;
10
+ this.reason = reason;
11
+ }
12
+ }
13
+ exports.TestRunResult = TestRunResult;
14
+
15
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bi1yZXN1bHRzL1Rlc3RSdW5SZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBYSxhQUFhO0lBQ3pCLFlBQW1CLEtBQWEsRUFBUyxPQUFlLEVBQVMsS0FBZ0IsRUFBUyxNQUFlLEVBQVMsTUFBZTtRQUE5RyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQVc7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUNqSSxDQUFDO0NBQ0Q7QUFIRCxzQ0FHQyIsImZpbGUiOiJydW4tcmVzdWx0cy9UZXN0UnVuUmVzdWx0LmpzIiwic291cmNlUm9vdCI6Ii4uXFwuLlxcc3JjIn0=
@@ -0,0 +1,2 @@
1
+ export * from "./SuiteRunResult";
2
+ export * from "./TestRunResult";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./SuiteRunResult"), exports);
14
+ __exportStar(require("./TestRunResult"), exports);
15
+
16
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bi1yZXN1bHRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxrREFBZ0MiLCJmaWxlIjoicnVuLXJlc3VsdHMvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi5cXC4uXFxzcmMifQ==