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.
- package/lib/Discover.d.ts +25 -0
- package/lib/Discover.js +4 -0
- package/lib/OptionsDefinitions.d.ts +16 -0
- package/lib/OptionsDefinitions.js +61 -0
- package/lib/StackTrace.d.ts +1 -0
- package/lib/StackTrace.js +44 -0
- package/lib/Suite.d.ts +46 -0
- package/lib/Suite.js +113 -0
- package/lib/SuiteProvider.d.ts +9 -0
- package/lib/SuiteProvider.js +88 -0
- package/lib/Test.d.ts +10 -6
- package/lib/Test.js +24 -12
- package/lib/TestStage.d.ts +1 -1
- package/lib/TestStage.js +2 -1
- package/lib/code-position-resolution.d.ts +2 -0
- package/lib/code-position-resolution.js +50 -0
- package/lib/examples/dir-suite/@test-suite +0 -0
- package/lib/examples/dir-suite/child-dir-suite/@test-suite +0 -0
- package/lib/{exampleTestFile.test.d.ts → examples/dir-suite/child-dir-suite/childDirTests.test.d.ts} +0 -0
- package/lib/examples/dir-suite/child-dir-suite/childDirTests.test.js +9 -0
- package/lib/examples/dir-suite/inDirSuite.test.d.ts +2 -0
- package/lib/examples/dir-suite/inDirSuite.test.js +9 -0
- package/lib/examples/dir-suite/just-a-folder/inJustAFolderTest.d.ts +2 -0
- package/lib/examples/dir-suite/just-a-folder/inJustAFolderTest.js +9 -0
- package/lib/examples/exampleTestFile.test.d.ts +2 -0
- package/lib/examples/exampleTestFile.test.js +60 -0
- package/lib/help.d.ts +1 -1
- package/lib/help.js +2 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +118 -54
- package/lib/reporters/JsonReporter.d.ts +20 -0
- package/lib/reporters/JsonReporter.js +39 -0
- package/lib/reporters/Reporter.d.ts +4 -0
- package/lib/reporters/Reporter.js +4 -0
- package/lib/reporters/SpecReporter.d.ts +14 -0
- package/lib/reporters/SpecReporter.js +85 -0
- package/lib/reporters/index.d.ts +3 -0
- package/lib/reporters/index.js +17 -0
- package/lib/run-results/SuiteRunResult.d.ts +11 -0
- package/lib/run-results/SuiteRunResult.js +19 -0
- package/lib/run-results/TestRunResult.d.ts +9 -0
- package/lib/run-results/TestRunResult.js +15 -0
- package/lib/run-results/index.d.ts +2 -0
- package/lib/run-results/index.js +16 -0
- package/package.json +69 -64
- package/lib/OptionsDefinition.d.ts +0 -5
- package/lib/OptionsDefinition.js +0 -29
- package/lib/PerformancePolyfill.d.ts +0 -1
- package/lib/PerformancePolyfill.js +0 -16
- package/lib/SpecReporter.d.ts +0 -12
- package/lib/SpecReporter.js +0 -76
- package/lib/TestRunResult.d.ts +0 -9
- package/lib/TestRunResult.js +0 -13
- package/lib/TestSuiteClass.d.ts +0 -28
- package/lib/TestSuiteClass.js +0 -78
- package/lib/exampleTestFile.test.js +0 -59
package/package.json
CHANGED
|
@@ -1,64 +1,69 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "just-test-node",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "just-test on node.",
|
|
5
|
-
"main": "./lib/index.js",
|
|
6
|
-
"typings": "./lib/index.d.ts",
|
|
7
|
-
"files": [
|
|
8
|
-
"lib/"
|
|
9
|
-
],
|
|
10
|
-
"scripts": {
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"url": "https://gitlab.com/itayronen
|
|
23
|
-
},
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "just-test-node",
|
|
3
|
+
"version": "2.0.0-alpha.3",
|
|
4
|
+
"description": "just-test on node.",
|
|
5
|
+
"main": "./lib/index.js",
|
|
6
|
+
"typings": "./lib/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"lib/"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "gulp build",
|
|
12
|
+
"prepublishOnly": "gulp clean && gulp build",
|
|
13
|
+
"test": "gulp build && node ./lib/index.js --directorySuitesGlob=./lib/**/@test-suite",
|
|
14
|
+
"test-json": "npm run test -- --reporter=json",
|
|
15
|
+
"test-json-partial": "npm run test -- --reporter=json \"Simple test\"",
|
|
16
|
+
"test-discover": "npm run test -- --discover",
|
|
17
|
+
"test-ts": "gulp build && ts-node ./src/index.ts --glob=./src/**/*.test.ts --directorySuitesGlob=./src/**/@test-suite",
|
|
18
|
+
"test-ts-discover": "npm run test-ts -- --discover"
|
|
19
|
+
},
|
|
20
|
+
"author": {
|
|
21
|
+
"name": "Itay Ronen",
|
|
22
|
+
"url": "https://gitlab.com/itayronen"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://gitlab.com/itayronen/just-test-node",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://gitlab.com/itayronen/just-test-node.git"
|
|
28
|
+
},
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"keywords": [
|
|
31
|
+
"test",
|
|
32
|
+
"testing",
|
|
33
|
+
"unit",
|
|
34
|
+
"unit-test",
|
|
35
|
+
"unittest",
|
|
36
|
+
"just-test",
|
|
37
|
+
"es",
|
|
38
|
+
"es6",
|
|
39
|
+
"node",
|
|
40
|
+
"typescript"
|
|
41
|
+
],
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"registry": "https://registry.npmjs.org/"
|
|
44
|
+
},
|
|
45
|
+
"bin": {
|
|
46
|
+
"just-test": "./lib/index.js",
|
|
47
|
+
"just-test-node": "./lib/index.js"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"chalk": "^4.1.2",
|
|
51
|
+
"command-line-args": "^5.2.0",
|
|
52
|
+
"glob": "^7.2.0",
|
|
53
|
+
"itay-events": "^3.0.1",
|
|
54
|
+
"just-test-api": "^2.0.1"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/chalk": "^2.2.0",
|
|
58
|
+
"@types/command-line-args": "^5.2.0",
|
|
59
|
+
"@types/glob": "^7.2.0",
|
|
60
|
+
"del": "^6.0.0",
|
|
61
|
+
"gulp": "^4.0.2",
|
|
62
|
+
"gulp-read": "^1.0.1",
|
|
63
|
+
"gulp-sourcemaps": "^3.0.0",
|
|
64
|
+
"gulp-typescript": "^5.0.1",
|
|
65
|
+
"itay-gulp-changed": "^1.2.0",
|
|
66
|
+
"merge2": "^1.4.1",
|
|
67
|
+
"typescript": "^4.5.2"
|
|
68
|
+
}
|
|
69
|
+
}
|
package/lib/OptionsDefinition.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.optionsDefinitions = [
|
|
4
|
-
{
|
|
5
|
-
name: 'glob', alias: 'g',
|
|
6
|
-
type: String,
|
|
7
|
-
defaultValue: "./!(node_modules)/**/*.test.js",
|
|
8
|
-
description: "Test files glob pattern."
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
name: "filter", alias: "f",
|
|
12
|
-
type: String,
|
|
13
|
-
defaultOption: true,
|
|
14
|
-
defaultValue: "",
|
|
15
|
-
description: "Filters tests."
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: 'help', alias: 'h',
|
|
19
|
-
type: Boolean,
|
|
20
|
-
description: "Show help."
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: 'debug',
|
|
24
|
-
type: Boolean,
|
|
25
|
-
description: "Debug mode. Will disable timeouts."
|
|
26
|
-
}
|
|
27
|
-
];
|
|
28
|
-
|
|
29
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk9wdGlvbnNEZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTWEsUUFBQSxrQkFBa0IsR0FBdUI7SUFDckQ7UUFDQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHO1FBQ3hCLElBQUksRUFBRSxNQUFNO1FBQ1osWUFBWSxFQUFFLGdDQUFnQztRQUM5QyxXQUFXLEVBQUUsMEJBQTBCO0tBQ3ZDO0lBQ0Q7UUFDQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHO1FBQzFCLElBQUksRUFBRSxNQUFNO1FBQ1osYUFBYSxFQUFFLElBQUk7UUFDbkIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsV0FBVyxFQUFFLGdCQUFnQjtLQUM3QjtJQUNEO1FBQ0MsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRztRQUN4QixJQUFJLEVBQUUsT0FBTztRQUNiLFdBQVcsRUFBRSxZQUFZO0tBQ3pCO0lBQ0Q7UUFDQyxJQUFJLEVBQUUsT0FBTztRQUNiLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLG9DQUFvQztLQUNqRDtDQUNELENBQUMiLCJmaWxlIjoiT3B0aW9uc0RlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiLi5cXHNyYyJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function polyfillPerformance(): void;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function polyfillPerformance() {
|
|
4
|
-
if (global && !global.performance) {
|
|
5
|
-
const start = process.hrtime();
|
|
6
|
-
global.performance = {
|
|
7
|
-
now: function () {
|
|
8
|
-
const end = process.hrtime(start);
|
|
9
|
-
return Math.round((end[0] * 1000) + (end[1] / 1000000));
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.polyfillPerformance = polyfillPerformance;
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBlcmZvcm1hbmNlUG9seWZpbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTtJQUNDLElBQUksTUFBTSxJQUFJLENBQUUsTUFBYyxDQUFDLFdBQVcsRUFBRTtRQUMzQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFOUIsTUFBYyxDQUFDLFdBQVcsR0FBRztZQUM3QixHQUFHLEVBQUU7Z0JBQ0osTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDekQsQ0FBQztTQUNELENBQUM7S0FDRjtBQUNGLENBQUM7QUFYRCxrREFXQyIsImZpbGUiOiJQZXJmb3JtYW5jZVBvbHlmaWxsLmpzIiwic291cmNlUm9vdCI6Ii4uXFxzcmMifQ==
|
package/lib/SpecReporter.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { TestSuiteClass } from "./TestSuiteClass";
|
|
2
|
-
export declare class SpecReporter {
|
|
3
|
-
private output;
|
|
4
|
-
private symbols;
|
|
5
|
-
private indentation;
|
|
6
|
-
private passedCount;
|
|
7
|
-
private errors;
|
|
8
|
-
constructor(output: Console);
|
|
9
|
-
listenTo(suite: TestSuiteClass): void;
|
|
10
|
-
private onEnd();
|
|
11
|
-
private getTestFullTitle(test);
|
|
12
|
-
}
|
package/lib/SpecReporter.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const chalk_1 = require("chalk");
|
|
4
|
-
class SpecReporter {
|
|
5
|
-
constructor(output) {
|
|
6
|
-
this.output = output;
|
|
7
|
-
this.symbols = {
|
|
8
|
-
ok: '✓',
|
|
9
|
-
err: '✖',
|
|
10
|
-
};
|
|
11
|
-
this.indentation = " ";
|
|
12
|
-
this.passedCount = 0;
|
|
13
|
-
this.errors = [];
|
|
14
|
-
}
|
|
15
|
-
listenTo(suite) {
|
|
16
|
-
let indent = "";
|
|
17
|
-
suite.onSuiteStart.add(suite => {
|
|
18
|
-
if (!suite.title)
|
|
19
|
-
return;
|
|
20
|
-
this.output.log();
|
|
21
|
-
this.output.info(indent + suite.title);
|
|
22
|
-
indent += this.indentation;
|
|
23
|
-
});
|
|
24
|
-
suite.onSuiteEnd.add(endedSuite => {
|
|
25
|
-
indent = indent.substr(0, indent.length - this.indentation.length);
|
|
26
|
-
if (endedSuite == suite) {
|
|
27
|
-
this.onEnd();
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
suite.onTestEnd.add(result => {
|
|
31
|
-
if (result.passed) {
|
|
32
|
-
this.passedCount++;
|
|
33
|
-
this.output.log(chalk_1.default.green(`${indent}${this.symbols.ok} ${result.test.title}`));
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
this.errors.push(result);
|
|
37
|
-
this.output.log(chalk_1.default.red(`${indent}${this.symbols.err} ${result.test.title}`));
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
onEnd() {
|
|
42
|
-
for (let result of this.errors) {
|
|
43
|
-
this.output.log();
|
|
44
|
-
let title = this.getTestFullTitle(result.test);
|
|
45
|
-
this.output.log(title);
|
|
46
|
-
let isError = result.reason instanceof Error;
|
|
47
|
-
let message = isError ?
|
|
48
|
-
result.reason.message :
|
|
49
|
-
JSON.stringify(result.reason);
|
|
50
|
-
this.output.log(this.indentation + chalk_1.default.red(`${message}`));
|
|
51
|
-
isError && this.output.log(this.indentation + `${result.reason.stack}`);
|
|
52
|
-
}
|
|
53
|
-
this.output.log();
|
|
54
|
-
this.output.log(chalk_1.default.green(`${this.passedCount} passing`));
|
|
55
|
-
if (this.errors.length > 0) {
|
|
56
|
-
this.output.log(chalk_1.default.red(`${this.errors.length} failing`));
|
|
57
|
-
}
|
|
58
|
-
this.output.log();
|
|
59
|
-
}
|
|
60
|
-
getTestFullTitle(test) {
|
|
61
|
-
let titles = [test.title];
|
|
62
|
-
let parent = test.parent;
|
|
63
|
-
while (parent && parent.title) {
|
|
64
|
-
titles.push(parent.title);
|
|
65
|
-
parent = parent.parent;
|
|
66
|
-
}
|
|
67
|
-
let title = titles.pop();
|
|
68
|
-
while (titles.length > 0) {
|
|
69
|
-
title += " -> " + titles.pop();
|
|
70
|
-
}
|
|
71
|
-
return title;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.SpecReporter = SpecReporter;
|
|
75
|
-
|
|
76
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,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
|
package/lib/TestRunResult.d.ts
DELETED
package/lib/TestRunResult.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class TestRunResult {
|
|
4
|
-
constructor(test, stage, passed, reason) {
|
|
5
|
-
this.test = test;
|
|
6
|
-
this.stage = stage;
|
|
7
|
-
this.passed = passed;
|
|
8
|
-
this.reason = reason;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.TestRunResult = TestRunResult;
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlc3RSdW5SZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQTtJQUNDLFlBQW1CLElBQVUsRUFBUyxLQUFnQixFQUFTLE1BQWUsRUFBUyxNQUFZO1FBQWhGLFNBQUksR0FBSixJQUFJLENBQU07UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUFTLFdBQU0sR0FBTixNQUFNLENBQU07SUFDbkcsQ0FBQztDQUNEO0FBSEQsc0NBR0MiLCJmaWxlIjoiVGVzdFJ1blJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIuLlxcc3JjIn0=
|
package/lib/TestSuiteClass.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { TestSuite, TestParams } from "just-test-api";
|
|
2
|
-
import { Event1 } from "itay-events";
|
|
3
|
-
import { Test } from "./Test";
|
|
4
|
-
import { TestRunResult } from "./TestRunResult";
|
|
5
|
-
export interface RunParams {
|
|
6
|
-
filter?: string;
|
|
7
|
-
debug: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare class TestSuiteClass implements TestSuite {
|
|
10
|
-
title: string;
|
|
11
|
-
parent?: TestSuiteClass;
|
|
12
|
-
childrenSuites: TestSuiteClass[];
|
|
13
|
-
tests: Test[];
|
|
14
|
-
onSuiteStart: Event1<TestSuiteClass>;
|
|
15
|
-
onSuiteEnd: Event1<TestSuiteClass>;
|
|
16
|
-
onTestStart: Event1<Test>;
|
|
17
|
-
onTestEnd: Event1<TestRunResult>;
|
|
18
|
-
constructor();
|
|
19
|
-
describe(title: string | {
|
|
20
|
-
name: string;
|
|
21
|
-
}, suiteFunction: (suite: TestSuiteClass) => void): void;
|
|
22
|
-
test(title: string, testFunction: (test: TestParams) => Promise<void> | void): void;
|
|
23
|
-
run(params: RunParams): Promise<boolean>;
|
|
24
|
-
private getFilteredTests(params);
|
|
25
|
-
countTotalTests(params: RunParams): number;
|
|
26
|
-
private createLocalParams(params);
|
|
27
|
-
private isPassingFilter(filter);
|
|
28
|
-
}
|
package/lib/TestSuiteClass.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const itay_events_1 = require("itay-events");
|
|
4
|
-
const Test_1 = require("./Test");
|
|
5
|
-
class TestSuiteClass {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.title = "";
|
|
8
|
-
this.childrenSuites = [];
|
|
9
|
-
this.tests = [];
|
|
10
|
-
this.onSuiteStart = new itay_events_1.Event1();
|
|
11
|
-
this.onSuiteEnd = new itay_events_1.Event1();
|
|
12
|
-
this.onTestStart = new itay_events_1.Event1();
|
|
13
|
-
this.onTestEnd = new itay_events_1.Event1();
|
|
14
|
-
}
|
|
15
|
-
describe(title, suiteFunction) {
|
|
16
|
-
let childSuite = new TestSuiteClass();
|
|
17
|
-
childSuite.title = typeof (title) === "string" ? title : title.name;
|
|
18
|
-
childSuite.onTestStart.add(t => this.onTestStart.trigger(t));
|
|
19
|
-
childSuite.onTestEnd.add(result => this.onTestEnd.trigger(result));
|
|
20
|
-
childSuite.onSuiteStart.add(s => this.onSuiteStart.trigger(s));
|
|
21
|
-
childSuite.onSuiteEnd.add(s => this.onSuiteEnd.trigger(s));
|
|
22
|
-
childSuite.parent = this;
|
|
23
|
-
this.childrenSuites.push(childSuite);
|
|
24
|
-
suiteFunction(childSuite);
|
|
25
|
-
}
|
|
26
|
-
test(title, testFunction) {
|
|
27
|
-
this.tests.push(new Test_1.Test(title, testFunction, this));
|
|
28
|
-
}
|
|
29
|
-
async run(params) {
|
|
30
|
-
params = this.createLocalParams(params);
|
|
31
|
-
let filteredTests = this.getFilteredTests(params);
|
|
32
|
-
this.onSuiteStart.trigger(this);
|
|
33
|
-
let passed = true;
|
|
34
|
-
let testRunOptions = { debug: params.debug };
|
|
35
|
-
for (let test of filteredTests) {
|
|
36
|
-
this.onTestStart.trigger(test);
|
|
37
|
-
let result = await test.run(testRunOptions);
|
|
38
|
-
passed = passed && result.passed;
|
|
39
|
-
this.onTestEnd.trigger(result);
|
|
40
|
-
}
|
|
41
|
-
for (let suite of this.childrenSuites) {
|
|
42
|
-
if (suite.countTotalTests(params) > 0) {
|
|
43
|
-
let suitePassed = await suite.run(params);
|
|
44
|
-
passed = passed && suitePassed;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
this.onSuiteEnd.trigger(this);
|
|
48
|
-
return passed;
|
|
49
|
-
}
|
|
50
|
-
getFilteredTests(params) {
|
|
51
|
-
if (!params.filter)
|
|
52
|
-
return this.tests;
|
|
53
|
-
let filter = params.filter.toLowerCase();
|
|
54
|
-
return this.tests.filter(t => t.title.toLowerCase().indexOf(filter) >= 0);
|
|
55
|
-
}
|
|
56
|
-
countTotalTests(params) {
|
|
57
|
-
params = this.createLocalParams(params);
|
|
58
|
-
let filteredTests = this.getFilteredTests(params);
|
|
59
|
-
let count = filteredTests.length;
|
|
60
|
-
for (let childSuite of this.childrenSuites) {
|
|
61
|
-
count += childSuite.countTotalTests(params);
|
|
62
|
-
}
|
|
63
|
-
return count;
|
|
64
|
-
}
|
|
65
|
-
createLocalParams(params) {
|
|
66
|
-
params = Object.assign({}, params);
|
|
67
|
-
if (this.isPassingFilter(params.filter)) {
|
|
68
|
-
params.filter = undefined;
|
|
69
|
-
}
|
|
70
|
-
return params;
|
|
71
|
-
}
|
|
72
|
-
isPassingFilter(filter) {
|
|
73
|
-
return !filter || this.title.toLowerCase().indexOf(filter.toLowerCase()) >= 0;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
exports.TestSuiteClass = TestSuiteClass;
|
|
77
|
-
|
|
78
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,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O1lBQ3RDLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RDLElBQUksV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxXQUFXLENBQUM7YUFDL0I7U0FDRDtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlCLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQWlCO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV0QyxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQWlCO1FBQ3ZDLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEMsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxELElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFFakMsS0FBSyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzNDLEtBQUssSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBaUI7UUFDMUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7U0FDMUI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFFTyxlQUFlLENBQUMsTUFBMEI7UUFDakQsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0UsQ0FBQztDQUNEO0FBckdELHdDQXFHQyIsImZpbGUiOiJUZXN0U3VpdGVDbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIuLlxcc3JjIn0=
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function someFunction() { }
|
|
4
|
-
function default_1(suite) {
|
|
5
|
-
suite.describe("Some suite title", suite => {
|
|
6
|
-
suite.describe("Pass suite", suite => {
|
|
7
|
-
suite.test("Nothing", t => {
|
|
8
|
-
});
|
|
9
|
-
suite.test("Async", async (t) => {
|
|
10
|
-
await Promise.resolve("Hi");
|
|
11
|
-
});
|
|
12
|
-
suite.describe(someFunction, suite => {
|
|
13
|
-
suite.test("Nothing", t => {
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
suite.describe("Fail suite", suite => {
|
|
18
|
-
suite.test("No stage error", t => {
|
|
19
|
-
throw "asdf";
|
|
20
|
-
});
|
|
21
|
-
suite.test("Arrage error", t => {
|
|
22
|
-
t.arrange();
|
|
23
|
-
throw "asdf";
|
|
24
|
-
});
|
|
25
|
-
suite.test("Act error", t => {
|
|
26
|
-
t.act();
|
|
27
|
-
throw "asdf";
|
|
28
|
-
});
|
|
29
|
-
suite.test("Assert error", t => {
|
|
30
|
-
t.assert();
|
|
31
|
-
throw "asdf";
|
|
32
|
-
});
|
|
33
|
-
suite.test("Throw Error", t => {
|
|
34
|
-
t.assert();
|
|
35
|
-
throw new Error("Some error message.");
|
|
36
|
-
});
|
|
37
|
-
suite.test("Throws after await", async (t) => {
|
|
38
|
-
await new Promise(r => setTimeout(r, 1));
|
|
39
|
-
t.assert();
|
|
40
|
-
throw "error";
|
|
41
|
-
});
|
|
42
|
-
suite.test("Timeout reached.", async (t) => {
|
|
43
|
-
t.timeout = 1;
|
|
44
|
-
await new Promise(r => setTimeout(r, 100));
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
suite.describe("Pass suite 2", suite => {
|
|
48
|
-
suite.test("Nothing", t => {
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
suite.describe("Some suite title2", suite => {
|
|
53
|
-
suite.test("Nothing", t => {
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
exports.default = default_1;
|
|
58
|
-
|
|
59
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4YW1wbGVUZXN0RmlsZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsMEJBQTBCLENBQUM7QUFFM0IsbUJBQXlCLEtBQWdCO0lBQ3hDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFFMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFFcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFFSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQzdCLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFFcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxNQUFNLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ1osTUFBTSxNQUFNLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUMzQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxNQUFNLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxNQUFNLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1lBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQzFDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXpDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLE9BQU8sQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQ3hDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBRXRDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUosQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFyRUQsNEJBcUVDIiwiZmlsZSI6ImV4YW1wbGVUZXN0RmlsZS50ZXN0LmpzIiwic291cmNlUm9vdCI6Ii4uXFxzcmMifQ==
|