@brillout/test-e2e 0.4.7 → 0.4.9
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/dist/setup.js
CHANGED
|
@@ -314,22 +314,32 @@ function execRunScript({ onStdout, onFailure, onExit, }) {
|
|
|
314
314
|
});
|
|
315
315
|
proc.stdout.on('data', (chunk) => {
|
|
316
316
|
const data = String(chunk);
|
|
317
|
-
assertNotExited(data);
|
|
318
|
-
(0, utils_2.assert)(getRunInfo().cmd === cmd);
|
|
319
317
|
Logs_1.Logs.add({
|
|
320
318
|
logSource: 'stdout',
|
|
321
319
|
logText: data,
|
|
322
320
|
});
|
|
321
|
+
/* These assertions sometimes fails, see comments in assertNotExited()
|
|
322
|
+
assertNotExited(data)
|
|
323
|
+
assert(getRunInfo().cmd === cmd)
|
|
324
|
+
/*/
|
|
325
|
+
if (procExited)
|
|
326
|
+
return undefined;
|
|
327
|
+
//*/
|
|
323
328
|
onStdout?.(data);
|
|
324
329
|
});
|
|
325
330
|
proc.stderr.on('data', async (chunk) => {
|
|
326
331
|
const data = String(chunk);
|
|
327
|
-
assertNotExited(data);
|
|
328
|
-
(0, utils_2.assert)(getRunInfo().cmd === cmd);
|
|
329
332
|
Logs_1.Logs.add({
|
|
330
333
|
logSource: 'stderr',
|
|
331
334
|
logText: data,
|
|
332
335
|
});
|
|
336
|
+
/* These assertions sometimes fails, see comments in assertNotExited()
|
|
337
|
+
assertNotExited(data)
|
|
338
|
+
assert(getRunInfo().cmd === cmd)
|
|
339
|
+
/*/
|
|
340
|
+
if (procExited)
|
|
341
|
+
return undefined;
|
|
342
|
+
//*/
|
|
333
343
|
if (data.includes('EADDRINUSE')) {
|
|
334
344
|
await exitAndFail(new Error('Port conflict? Port already in use EADDRINUSE.'));
|
|
335
345
|
}
|
|
@@ -359,14 +369,15 @@ function execRunScript({ onStdout, onFailure, onExit, }) {
|
|
|
359
369
|
exitPromiseResolve();
|
|
360
370
|
});
|
|
361
371
|
return { terminate, processHasExited };
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
372
|
+
/* Node.js seems to occasionally emit 'data' events after having the emitted 'exit' event, for example:
|
|
373
|
+
* - `{"data":"[0] npm run serve:cdn exited with code SIGTERM\n","dataLength":48}`.
|
|
374
|
+
function assertNotExited(data: string) {
|
|
375
|
+
if (!procExited) return
|
|
376
|
+
// Sometimes, a single white space is emitted after 'exit' has been emitted.
|
|
377
|
+
if (data.trim().length === 0) return
|
|
378
|
+
assert(false, { data, dataLength: data.length })
|
|
369
379
|
}
|
|
380
|
+
*/
|
|
370
381
|
function processHasExited() {
|
|
371
382
|
return procExited;
|
|
372
383
|
}
|
package/dist/utils/assert.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.projectErrorPrefix = exports.getProjectError = exports.assertInfo = exports.assertWarning = exports.assertUsage = exports.assert = void 0;
|
|
4
4
|
const runTests_1 = require("../runTests");
|
|
5
|
-
const createErrorWithCleanStackTrace_1 = require("./createErrorWithCleanStackTrace");
|
|
6
5
|
const projectInfo_1 = require("./projectInfo");
|
|
7
6
|
const Logs_1 = require("../Logs");
|
|
8
7
|
const getCurrentTest_1 = require("../getCurrentTest");
|
|
@@ -26,13 +25,13 @@ function assert(condition, debugInfo) {
|
|
|
26
25
|
const debugInfoSerialized = typeof debugInfo === 'string' ? debugInfo : '`' + JSON.stringify(debugInfo) + '`';
|
|
27
26
|
return `Debug info (this is for the ${projectInfo_1.projectInfo.projectName} maintainers; you can ignore this): ${debugInfoSerialized}.`;
|
|
28
27
|
})();
|
|
29
|
-
const internalError =
|
|
28
|
+
const internalError = new Error([
|
|
30
29
|
`${internalErrorPrefix} You stumbled upon a bug in ${projectInfo_1.projectInfo.projectName}'s source code.`,
|
|
31
30
|
`Reach out at ${projectInfo_1.projectInfo.githubRepository}/issues/new and include this error stack (the error stack is usually enough to fix the problem).`,
|
|
32
31
|
'A maintainer will fix the bug (usually under 24 hours).',
|
|
33
32
|
`Do not hesitate to reach out as it makes ${projectInfo_1.projectInfo.projectName} more robust.`,
|
|
34
33
|
debugStr,
|
|
35
|
-
].join(' ')
|
|
34
|
+
].join(' '));
|
|
36
35
|
(0, runTests_1.logFailure)('a bug occurred in @brillout/test-e2e');
|
|
37
36
|
(0, logError_1.logError)(internalError, 'BUG');
|
|
38
37
|
logDebugInfo();
|
|
@@ -46,13 +45,12 @@ function assertUsage(condition, errorMessage) {
|
|
|
46
45
|
return;
|
|
47
46
|
}
|
|
48
47
|
const whiteSpace = errorMessage.startsWith('[') ? '' : ' ';
|
|
49
|
-
|
|
50
|
-
throw usageError;
|
|
48
|
+
throw new Error(`${usageErrorPrefix}${whiteSpace}${errorMessage}`);
|
|
51
49
|
}
|
|
52
50
|
exports.assertUsage = assertUsage;
|
|
53
51
|
function getProjectError(errorMessage) {
|
|
54
|
-
const
|
|
55
|
-
return
|
|
52
|
+
const projectError = new Error(`${errorPrefix} ${errorMessage}`);
|
|
53
|
+
return projectError;
|
|
56
54
|
}
|
|
57
55
|
exports.getProjectError = getProjectError;
|
|
58
56
|
let loggedWarnings = new Set();
|
package/package.json
CHANGED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createErrorWithCleanStackTrace = void 0;
|
|
4
|
-
function createErrorWithCleanStackTrace(errorMessage, numberOfStackTraceLinesToRemove) {
|
|
5
|
-
let err;
|
|
6
|
-
{
|
|
7
|
-
var stackTraceLimit__original = Error.stackTraceLimit;
|
|
8
|
-
Error.stackTraceLimit = Infinity;
|
|
9
|
-
err = new Error(errorMessage);
|
|
10
|
-
Error.stackTraceLimit = stackTraceLimit__original;
|
|
11
|
-
}
|
|
12
|
-
err.stack = clean(err.stack, numberOfStackTraceLinesToRemove);
|
|
13
|
-
return err;
|
|
14
|
-
}
|
|
15
|
-
exports.createErrorWithCleanStackTrace = createErrorWithCleanStackTrace;
|
|
16
|
-
function clean(errStack, numberOfStackTraceLinesToRemove) {
|
|
17
|
-
if (!errStack) {
|
|
18
|
-
return errStack;
|
|
19
|
-
}
|
|
20
|
-
const stackLines = splitByLine(errStack);
|
|
21
|
-
let linesRemoved = 0;
|
|
22
|
-
const stackLine__cleaned = stackLines
|
|
23
|
-
.filter((line) => {
|
|
24
|
-
// Remove internal stack traces
|
|
25
|
-
if (line.includes(' (internal/') || line.includes(' (node:internal')) {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
if (linesRemoved < numberOfStackTraceLinesToRemove && isStackTraceLine(line)) {
|
|
29
|
-
linesRemoved++;
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
return true;
|
|
33
|
-
})
|
|
34
|
-
.join('\n');
|
|
35
|
-
return stackLine__cleaned;
|
|
36
|
-
}
|
|
37
|
-
function isStackTraceLine(line) {
|
|
38
|
-
return line.startsWith(' at ');
|
|
39
|
-
}
|
|
40
|
-
function splitByLine(str) {
|
|
41
|
-
// https://stackoverflow.com/questions/21895233/how-in-node-to-split-string-by-newline-n
|
|
42
|
-
return str.split(/\r?\n/);
|
|
43
|
-
}
|