just-test-node 2.0.0-alpha.3 → 2.0.0-alpha.7
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/StackTrace.d.ts +2 -0
- package/lib/StackTrace.js +23 -3
- package/lib/Test.d.ts +1 -1
- package/lib/Test.js +28 -14
- package/lib/index.js +4 -3
- package/lib/reason-stringify.d.ts +1 -0
- package/lib/reason-stringify.js +13 -0
- package/lib/run-results/TestRunResult.d.ts +2 -1
- package/lib/run-results/TestRunResult.js +3 -2
- package/package.json +1 -1
package/lib/StackTrace.d.ts
CHANGED
package/lib/StackTrace.js
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getCallerLocationText = void 0;
|
|
3
|
+
exports.getCallerLocationText = exports.setStackRoot = void 0;
|
|
4
|
+
function setStackRoot(predicate) {
|
|
5
|
+
const original = Error.prepareStackTrace;
|
|
6
|
+
Error.prepareStackTrace = (error, callsites) => {
|
|
7
|
+
const index = callsites.findIndex(predicate);
|
|
8
|
+
callsites = callsites.slice(0, index);
|
|
9
|
+
const callSiteLines = callsites.map(e => formatCallSiteAt(e));
|
|
10
|
+
const callSitesText = callSiteLines.join("\n");
|
|
11
|
+
return `Error: ${error.message}\n${callSitesText}`;
|
|
12
|
+
};
|
|
13
|
+
return () => Error.prepareStackTrace = original;
|
|
14
|
+
}
|
|
15
|
+
exports.setStackRoot = setStackRoot;
|
|
4
16
|
function getCallerLocationText(currentFunction) {
|
|
5
17
|
const originalLimit = Error.stackTraceLimit;
|
|
6
18
|
const originalPrepare = Error.prepareStackTrace;
|
|
@@ -17,11 +29,19 @@ exports.getCallerLocationText = getCallerLocationText;
|
|
|
17
29
|
function getFirstCallLocation(object, stack) {
|
|
18
30
|
const callSite = stack[0];
|
|
19
31
|
if (!object.originalPrepare)
|
|
20
|
-
return
|
|
32
|
+
return formatCallSite(callSite);
|
|
21
33
|
// Support for ts-node
|
|
22
34
|
const formattedByRuntime = object.originalPrepare(object, [new SimplifiedCallSite(callSite)]);
|
|
23
35
|
return formattedByRuntime.slice("Error\n at ".length);
|
|
24
36
|
}
|
|
37
|
+
function formatCallSite(callSite) {
|
|
38
|
+
return `${callSite.getFileName()}:${callSite.getLineNumber()}:${callSite.getColumnNumber()}`;
|
|
39
|
+
}
|
|
40
|
+
function formatCallSiteAt(callSite) {
|
|
41
|
+
const line = (callSite.getLineNumber() ?? 0) + 1;
|
|
42
|
+
const column = (callSite.getColumnNumber() ?? 0) + 1;
|
|
43
|
+
return `\tat ${callSite.getFileName()}:${line}:${column}`;
|
|
44
|
+
}
|
|
25
45
|
class SimplifiedCallSite {
|
|
26
46
|
constructor(callSite) {
|
|
27
47
|
this.callSite = callSite;
|
|
@@ -41,4 +61,4 @@ class SimplifiedCallSite {
|
|
|
41
61
|
isConstructor() { return false; }
|
|
42
62
|
}
|
|
43
63
|
|
|
44
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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
|
package/lib/Test.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare class Test {
|
|
|
13
13
|
constructor(title: string, testFunction: (test: TestParams) => Promise<void> | void, parent: Suite, location: FunctionCodeRange);
|
|
14
14
|
discover(): DiscoveredTest;
|
|
15
15
|
run(options: TestRunOptions): Promise<TestRunResult>;
|
|
16
|
+
private startLogsRecorder;
|
|
16
17
|
private isPromise;
|
|
17
18
|
private withTimeout;
|
|
18
|
-
private stringifyReason;
|
|
19
19
|
}
|
package/lib/Test.js
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Test = void 0;
|
|
4
4
|
const TestRunResult_1 = require("./run-results/TestRunResult");
|
|
5
5
|
const TestStage_1 = require("./TestStage");
|
|
6
|
+
const StackTrace_1 = require("./StackTrace");
|
|
7
|
+
const reason_stringify_1 = require("./reason-stringify");
|
|
6
8
|
class TestParamsClass {
|
|
7
9
|
constructor() {
|
|
8
10
|
this.stage = TestStage_1.TestStage.NoStage;
|
|
@@ -31,23 +33,42 @@ class Test {
|
|
|
31
33
|
async run(options) {
|
|
32
34
|
const testParams = new TestParamsClass();
|
|
33
35
|
const startTime = performance.now();
|
|
36
|
+
const endLogsRecorder = this.startLogsRecorder();
|
|
37
|
+
const restoreStackFunc = (0, StackTrace_1.setStackRoot)(callSite => callSite.getTypeName() == Test.name &&
|
|
38
|
+
callSite.getFunctionName() == this.run.name);
|
|
34
39
|
try {
|
|
35
40
|
let result = this.testFunction(testParams);
|
|
36
|
-
if (
|
|
41
|
+
if (this.isPromise(result)) {
|
|
37
42
|
if (options.debug)
|
|
38
43
|
await result;
|
|
39
44
|
else
|
|
40
45
|
await this.withTimeout(result, testParams.timeout);
|
|
41
46
|
}
|
|
42
|
-
|
|
47
|
+
const logs = endLogsRecorder();
|
|
48
|
+
return Promise.resolve(new TestRunResult_1.TestRunResult(this.title, performance.now() - startTime, testParams.stage, logs, true));
|
|
43
49
|
}
|
|
44
50
|
catch (reason) {
|
|
45
|
-
const
|
|
46
|
-
|
|
51
|
+
const logs = endLogsRecorder();
|
|
52
|
+
const reasonText = (0, reason_stringify_1.stringifyReason)(reason);
|
|
53
|
+
return Promise.resolve(new TestRunResult_1.TestRunResult(this.title, performance.now() - startTime, testParams.stage, logs, false, reasonText));
|
|
47
54
|
}
|
|
55
|
+
finally {
|
|
56
|
+
restoreStackFunc();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
startLogsRecorder() {
|
|
60
|
+
let text = "";
|
|
61
|
+
const originalLog = console.log;
|
|
62
|
+
console.log = (...data) => {
|
|
63
|
+
text += data.map(e => `${e}`).join(" ") + "\n";
|
|
64
|
+
};
|
|
65
|
+
return () => {
|
|
66
|
+
console.log = originalLog;
|
|
67
|
+
return text;
|
|
68
|
+
};
|
|
48
69
|
}
|
|
49
70
|
isPromise(result) {
|
|
50
|
-
return typeof result.then === "function";
|
|
71
|
+
return !!result && typeof result.then === "function";
|
|
51
72
|
}
|
|
52
73
|
async withTimeout(promise, timeout) {
|
|
53
74
|
let timer = undefined;
|
|
@@ -58,20 +79,13 @@ class Test {
|
|
|
58
79
|
})
|
|
59
80
|
]);
|
|
60
81
|
if (typeof firstValue === "string" && firstValue === "timeout") {
|
|
61
|
-
throw
|
|
82
|
+
throw `Timeout (${timeout} milliseconds).`;
|
|
62
83
|
}
|
|
63
84
|
else {
|
|
64
85
|
clearTimeout(timer);
|
|
65
86
|
}
|
|
66
87
|
}
|
|
67
|
-
stringifyReason(reason) {
|
|
68
|
-
if (typeof reason == "string")
|
|
69
|
-
return reason;
|
|
70
|
-
if (reason instanceof Error && reason.stack)
|
|
71
|
-
return reason.stack;
|
|
72
|
-
return String(reason);
|
|
73
|
-
}
|
|
74
88
|
}
|
|
75
89
|
exports.Test = Test;
|
|
76
90
|
|
|
77
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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
|
package/lib/index.js
CHANGED
|
@@ -30,6 +30,7 @@ const OptionsDefinitions_1 = require("./OptionsDefinitions");
|
|
|
30
30
|
const help_1 = require("./help");
|
|
31
31
|
const reporters_1 = require("./reporters");
|
|
32
32
|
const SuiteProvider_1 = require("./SuiteProvider");
|
|
33
|
+
const reason_stringify_1 = require("./reason-stringify");
|
|
33
34
|
main();
|
|
34
35
|
async function main() {
|
|
35
36
|
try {
|
|
@@ -133,12 +134,12 @@ async function getTestFileFunctionAsync(file) {
|
|
|
133
134
|
testFileFunction = await Promise.resolve().then(() => __importStar(require(path_1.default.resolve(file))));
|
|
134
135
|
}
|
|
135
136
|
catch (reason) {
|
|
136
|
-
throw `The file
|
|
137
|
+
throw `The file "${file}" matched the tests glob but failed to be imported. reason: ${(0, reason_stringify_1.stringifyReason)(reason)}`;
|
|
137
138
|
}
|
|
138
139
|
if (typeof testFileFunction != "function")
|
|
139
140
|
testFileFunction = testFileFunction.default;
|
|
140
141
|
if (typeof testFileFunction != "function") {
|
|
141
|
-
throw `The file
|
|
142
|
+
throw `The file "${file}" matched the tests glob but did not export a default function.`;
|
|
142
143
|
}
|
|
143
144
|
return testFileFunction;
|
|
144
145
|
}
|
|
@@ -154,4 +155,4 @@ async function outputDiscoveredTests(files, suiteProvider) {
|
|
|
154
155
|
console.log(JSON.stringify(suite.discover()));
|
|
155
156
|
}
|
|
156
157
|
|
|
157
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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SUFBSSx3QkFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLEtBQUssTUFBTTtZQUNWLE9BQU8sSUFBSSx3QkFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2xDO0FBQ0YsQ0FBQztBQUVELEtBQUssVUFBVSxVQUFVLENBQUMsVUFBb0IsRUFBRSxhQUE0QjtJQUMzRSxLQUFLLElBQUksUUFBUSxJQUFJLFVBQVUsRUFBRTtRQUNoQyxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUM7UUFDdkMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2hCO0lBRUQsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDO0FBQzNCLENBQUM7QUFFRCxLQUFLLFVBQVUsd0JBQXdCLENBQUMsSUFBWTtJQUNuRCxJQUFJLGdCQUFxQixDQUFDO0lBRTFCLElBQUk7UUFDSCxnQkFBZ0IsR0FBRyx3REFBYSxjQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUM7S0FDcEQ7SUFDRCxPQUFPLE1BQU0sRUFBRTtRQUNkLE1BQU0sYUFBYSxJQUFJLCtEQUErRCxJQUFBLGtDQUFlLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztLQUNoSDtJQUVELElBQUksT0FBTyxnQkFBZ0IsSUFBSSxVQUFVO1FBQ3hDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztJQUU3QyxJQUFJLE9BQU8sZ0JBQWdCLElBQUksVUFBVSxFQUFFO1FBQzFDLE1BQU0sYUFBYSxJQUFJLGlFQUFpRSxDQUFDO0tBQ3pGO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQztBQUN6QixDQUFDO0FBRUQsS0FBSyxVQUFVLHFCQUFxQixDQUFDLEtBQWUsRUFBRSxhQUE0QjtJQUNqRixNQUFNLGNBQWMsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEtBQVksQ0FBQztJQUVqQixJQUFJO1FBQ0gsS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztLQUMvQztZQUNPO1FBQ1AsY0FBYyxFQUFFLENBQUM7S0FDakI7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uXFxzcmMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function stringifyReason(reason: unknown): string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stringifyReason = void 0;
|
|
4
|
+
function stringifyReason(reason) {
|
|
5
|
+
if (typeof reason == "string")
|
|
6
|
+
return reason;
|
|
7
|
+
if (reason instanceof Error && reason.stack)
|
|
8
|
+
return reason.stack;
|
|
9
|
+
return String(reason);
|
|
10
|
+
}
|
|
11
|
+
exports.stringifyReason = stringifyReason;
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlYXNvbi1zdHJpbmdpZnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsZUFBZSxDQUFDLE1BQWU7SUFDOUMsSUFBSSxPQUFPLE1BQU0sSUFBSSxRQUFRO1FBQzVCLE9BQU8sTUFBTSxDQUFDO0lBRWYsSUFBSSxNQUFNLFlBQVksS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLO1FBQzFDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztJQUVyQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QixDQUFDO0FBUkQsMENBUUMiLCJmaWxlIjoicmVhc29uLXN0cmluZ2lmeS5qcyIsInNvdXJjZVJvb3QiOiIuLlxcc3JjIn0=
|
|
@@ -3,7 +3,8 @@ export declare class TestRunResult {
|
|
|
3
3
|
title: string;
|
|
4
4
|
elapsed: number;
|
|
5
5
|
stage: TestStage;
|
|
6
|
+
consoleOutput: string;
|
|
6
7
|
passed: boolean;
|
|
7
8
|
reason?: string | undefined;
|
|
8
|
-
constructor(title: string, elapsed: number, stage: TestStage, passed: boolean, reason?: string | undefined);
|
|
9
|
+
constructor(title: string, elapsed: number, stage: TestStage, consoleOutput: string, passed: boolean, reason?: string | undefined);
|
|
9
10
|
}
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TestRunResult = void 0;
|
|
4
4
|
class TestRunResult {
|
|
5
|
-
constructor(title, elapsed, stage, passed, reason) {
|
|
5
|
+
constructor(title, elapsed, stage, consoleOutput, passed, reason) {
|
|
6
6
|
this.title = title;
|
|
7
7
|
this.elapsed = elapsed;
|
|
8
8
|
this.stage = stage;
|
|
9
|
+
this.consoleOutput = consoleOutput;
|
|
9
10
|
this.passed = passed;
|
|
10
11
|
this.reason = reason;
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
exports.TestRunResult = TestRunResult;
|
|
14
15
|
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bi1yZXN1bHRzL1Rlc3RSdW5SZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBYSxhQUFhO0lBQ3pCLFlBQ1EsS0FBYSxFQUNiLE9BQWUsRUFDZixLQUFnQixFQUNoQixhQUFxQixFQUNyQixNQUFlLEVBQ2YsTUFBZTtRQUxmLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUN2QixDQUFDO0NBQ0Q7QUFURCxzQ0FTQyIsImZpbGUiOiJydW4tcmVzdWx0cy9UZXN0UnVuUmVzdWx0LmpzIiwic291cmNlUm9vdCI6Ii4uXFwuLlxcc3JjIn0=
|