multi-tape 1.7.1 → 1.8.0
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/AGENTS.md +45 -0
- package/CHANGELOG.md +89 -0
- package/README.md +17 -13
- package/build/index.js +45 -26
- package/build/lib/glob.js +35 -2
- package/build/lib/run-test.d.ts +1 -1
- package/build/lib/run-test.js +42 -7
- package/check-publish +19 -0
- package/package.json +6 -6
- package/Changelog.md +0 -69
package/AGENTS.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Agent Steering Rules
|
|
2
|
+
|
|
3
|
+
## Changelog Maintenance
|
|
4
|
+
|
|
5
|
+
When making changes to the codebase, always update the `Changelog.md` file to reflect the modifications:
|
|
6
|
+
|
|
7
|
+
- Add new entries under the `## [Unreleased]` section
|
|
8
|
+
- Follow the [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) format
|
|
9
|
+
- Use these categories as appropriate:
|
|
10
|
+
- `### Features` - for new features
|
|
11
|
+
- `### Fixes` - for bug fixes
|
|
12
|
+
- `### Breaking Changes` - for breaking API changes
|
|
13
|
+
- `### Deprecated` - for soon-to-be removed features
|
|
14
|
+
- `### Removed` - for removed features
|
|
15
|
+
- `### Security` - for security fixes
|
|
16
|
+
- Use bullet points starting with `-` for each change
|
|
17
|
+
- Keep descriptions concise but clear
|
|
18
|
+
- When a version is released, the maintainer will move unreleased items to a dated version section
|
|
19
|
+
|
|
20
|
+
Example entry:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
## [Unreleased]
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
- Add new --parallel option for concurrent test execution
|
|
28
|
+
|
|
29
|
+
### Fixes
|
|
30
|
+
|
|
31
|
+
- Fix race condition in test output handling
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Making a release
|
|
35
|
+
|
|
36
|
+
To make a new release, perform the following steps:
|
|
37
|
+
|
|
38
|
+
1. Update the package version in package.json
|
|
39
|
+
2. Run npm install to automatically update package-lock.json
|
|
40
|
+
3. Update Changelog.md with the new version
|
|
41
|
+
4. Commit the above changes
|
|
42
|
+
5. Run `./check-publish and make sure that it succeeds
|
|
43
|
+
6. push master
|
|
44
|
+
7. Create a git tag in the format `v1.2.3`
|
|
45
|
+
8. Push the tag
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
6
|
+
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.8.0] 2025-11-14
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- Add -q option for quiet mode that suppresses all output except test results, which are printed immediately as each test completes
|
|
15
|
+
|
|
16
|
+
## [1.7.2] 2025-11-09
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- Update all dependencies to latest versions
|
|
21
|
+
- Upgrade to ESLint 9 and typescript-eslint 8
|
|
22
|
+
- Upgrade glob to v11 and tap-parser to v18
|
|
23
|
+
- Upgrade @types/node to v24
|
|
24
|
+
|
|
25
|
+
### Fixes
|
|
26
|
+
|
|
27
|
+
- Modernize import syntax to use standard ES module imports
|
|
28
|
+
- Add esModuleInterop to TypeScript configuration for better module compatibility
|
|
29
|
+
|
|
30
|
+
## [1.7.1] 2024-07-03
|
|
31
|
+
|
|
32
|
+
- Update dependencies and github actions
|
|
33
|
+
|
|
34
|
+
## [1.7.0] 2022-06-20
|
|
35
|
+
|
|
36
|
+
- Add a --controller argument
|
|
37
|
+
|
|
38
|
+
## [1.6.1] 2021-01-29
|
|
39
|
+
|
|
40
|
+
- Add MT_DEBUG_INTERVAL setting
|
|
41
|
+
- Send SIGKILL if SIGTERM does not cause test to exit
|
|
42
|
+
|
|
43
|
+
## [1.6.0] 2021-01-06
|
|
44
|
+
|
|
45
|
+
- Timeout for test execution
|
|
46
|
+
|
|
47
|
+
## [1.5.0] 2020-12-14
|
|
48
|
+
|
|
49
|
+
- Build with github actions
|
|
50
|
+
- Update dependencies
|
|
51
|
+
- Print execution time for each test in summary and order entries by execution time
|
|
52
|
+
|
|
53
|
+
## [1.4.0] 2020-04-15
|
|
54
|
+
|
|
55
|
+
- Add -j option to generate junit xml with purple-tape
|
|
56
|
+
|
|
57
|
+
## [1.3.1] 2019-12-13
|
|
58
|
+
|
|
59
|
+
### Fixes
|
|
60
|
+
|
|
61
|
+
- Split up output in smaller chunks to avoid overflowing stdout
|
|
62
|
+
buffers which will terminate node with
|
|
63
|
+
`write /dev/stdout: resource temporarily unavailable`
|
|
64
|
+
Fix by @zommarin.
|
|
65
|
+
|
|
66
|
+
## [1.3.0] 2019-06-28
|
|
67
|
+
|
|
68
|
+
Rewritten in typescript using async/await
|
|
69
|
+
|
|
70
|
+
### New features
|
|
71
|
+
|
|
72
|
+
- Show which tests were running if multi-tape is
|
|
73
|
+
terminated with a signal
|
|
74
|
+
|
|
75
|
+
### Fixes
|
|
76
|
+
|
|
77
|
+
- Updated outdated dependencies
|
|
78
|
+
|
|
79
|
+
## [1.2.1] 2018-09-05
|
|
80
|
+
|
|
81
|
+
### Fixes
|
|
82
|
+
|
|
83
|
+
- Fix #3 Hangs with too much output on stdout
|
|
84
|
+
|
|
85
|
+
## [1.2.0] - 2018-04-15
|
|
86
|
+
|
|
87
|
+
### Features
|
|
88
|
+
|
|
89
|
+
- Add support for file globbing on windows. Fixes #1. Patch by @LordScree.
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# multi-tape
|
|
2
2
|
|
|
3
3
|

|
|
4
|
-

|
|
5
5
|

|
|
6
6
|
|
|
7
7
|
A tool for running [tape](https://github.com/substack/tape) tests in multiple files. Goes well together with [purple-tape](https://www.npmjs.com/package/purple-tape)
|
|
@@ -31,22 +31,26 @@ with output sent to stdout and print a summary at the end
|
|
|
31
31
|
|
|
32
32
|
## Options
|
|
33
33
|
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
- -o send output to one file per test-file. The output filename will be the name
|
|
35
|
+
of the test-file with '.tap' appended. The result will still be printed to
|
|
36
|
+
STDOUT.
|
|
37
37
|
|
|
38
|
-
-
|
|
39
|
-
|
|
38
|
+
- --node-arg=--opt Send an option to node when invoking the test-file. Can be
|
|
39
|
+
used more than once.
|
|
40
40
|
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
- -p=X Run X tests in parallel. If X > 1, the output from each test is buffered
|
|
42
|
+
until the test is finished. Without this, the output from different tests would
|
|
43
|
+
be mixed.
|
|
44
44
|
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
- -j Pass in environment variables to purple-tape to make it produce
|
|
46
|
+
a junit xml-file. The output filename will be the name
|
|
47
|
+
of the test-file with '.xml' appended.
|
|
48
48
|
|
|
49
|
-
-
|
|
49
|
+
- -t 10000 Timeout in ms for how long each test-file is allowed to run. Default is no timeout.
|
|
50
|
+
|
|
51
|
+
- -q Quiet mode. Suppresses all output except the final summary of which test-files
|
|
52
|
+
succeeded and which failed. Can be combined with -o to write output to files
|
|
53
|
+
without printing to stdout.
|
|
50
54
|
|
|
51
55
|
- --controller="command with parameters" Run a command before starting the tests. Wait for the command to print something on stdout before starting the tests. Kill the command when all tests are done.
|
|
52
56
|
|
package/build/index.js
CHANGED
|
@@ -9,18 +9,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
10
|
});
|
|
11
11
|
};
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
12
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
16
|
const child_process_1 = require("child_process");
|
|
14
17
|
const glob_1 = require("./lib/glob");
|
|
15
18
|
const run_test_1 = require("./lib/run-test");
|
|
16
|
-
const
|
|
17
|
-
const argv =
|
|
18
|
-
boolean: ['o', 'j'],
|
|
19
|
-
default: {
|
|
20
|
-
p: 1,
|
|
21
|
-
t: 0,
|
|
22
|
-
},
|
|
23
|
-
});
|
|
19
|
+
const minimist_1 = __importDefault(require("minimist"));
|
|
20
|
+
const argv = (0, minimist_1.default)(process.argv.slice(2), { boolean: ['o', 'j', 'q'], default: { p: 1, t: 0 } });
|
|
24
21
|
const results = new Map();
|
|
25
22
|
const nodeArgs = new Array();
|
|
26
23
|
if (argv['node-arg']) {
|
|
@@ -39,14 +36,30 @@ function printInProgress() {
|
|
|
39
36
|
aborted.add(file);
|
|
40
37
|
});
|
|
41
38
|
}
|
|
39
|
+
function printTestResult(file, res) {
|
|
40
|
+
const { exitCode, result: r, executionTime } = res;
|
|
41
|
+
const timeStr = `${(executionTime / 1000).toFixed(1)}s`;
|
|
42
|
+
if (exitCode === 0 && r.ok) {
|
|
43
|
+
console.log(`OK ${file} (${timeStr}) ${r.pass}/${r.count}`);
|
|
44
|
+
}
|
|
45
|
+
else if (!r.ok) {
|
|
46
|
+
console.log(`FAIL ${file} (${timeStr}) ${r.pass || 0}/${r.count || 0}`);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
console.log(`FAIL ${file} exited with error ${exitCode}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
42
52
|
function thread() {
|
|
43
53
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
54
|
let file;
|
|
45
55
|
while ((file = files.shift())) {
|
|
46
56
|
inProgress.add(file);
|
|
47
|
-
const result = yield (0, run_test_1.runTest)(file, nodeArgs, argv.p === 1, argv.o, argv.j, argv.t);
|
|
57
|
+
const result = yield (0, run_test_1.runTest)(file, nodeArgs, argv.p === 1, argv.o, argv.j, argv.t, argv.q);
|
|
48
58
|
inProgress.delete(file);
|
|
49
59
|
results.set(file, result);
|
|
60
|
+
if (argv.q) {
|
|
61
|
+
printTestResult(file, result);
|
|
62
|
+
}
|
|
50
63
|
}
|
|
51
64
|
});
|
|
52
65
|
}
|
|
@@ -62,12 +75,16 @@ function run() {
|
|
|
62
75
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
63
76
|
});
|
|
64
77
|
(_a = controller.stdout) === null || _a === void 0 ? void 0 : _a.on('data', (data) => {
|
|
65
|
-
|
|
78
|
+
if (!argv.q) {
|
|
79
|
+
console.log(`controller: ${data}`);
|
|
80
|
+
}
|
|
66
81
|
controllerRunning = true;
|
|
67
82
|
resolve();
|
|
68
83
|
});
|
|
69
84
|
(_b = controller.stderr) === null || _b === void 0 ? void 0 : _b.on('data', (data) => {
|
|
70
|
-
|
|
85
|
+
if (!argv.q) {
|
|
86
|
+
console.error(`controller: ${data}`);
|
|
87
|
+
}
|
|
71
88
|
});
|
|
72
89
|
controller.on('error', (code) => {
|
|
73
90
|
reject();
|
|
@@ -80,7 +97,9 @@ function run() {
|
|
|
80
97
|
}
|
|
81
98
|
yield Promise.all(new Array(argv.p).fill(0).map(() => thread()));
|
|
82
99
|
if (controller && controllerRunning) {
|
|
83
|
-
|
|
100
|
+
if (!argv.q) {
|
|
101
|
+
console.log('controller: stopping');
|
|
102
|
+
}
|
|
84
103
|
controller.once('close', () => printSummary());
|
|
85
104
|
controller.kill();
|
|
86
105
|
}
|
|
@@ -91,20 +110,20 @@ function run() {
|
|
|
91
110
|
}
|
|
92
111
|
function printSummary() {
|
|
93
112
|
let success = true;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
else if (!r.ok) {
|
|
102
|
-
success = false;
|
|
103
|
-
console.log(`FAIL ${file} (${timeStr}) ${r.pass || 0}/${r.count || 0}`);
|
|
113
|
+
if (!argv.q) {
|
|
114
|
+
console.log('');
|
|
115
|
+
for (const [file, res] of [...results.entries()].sort((a, b) => a[1].executionTime - b[1].executionTime)) {
|
|
116
|
+
printTestResult(file, res);
|
|
117
|
+
if (res.exitCode !== 0 || !res.result.ok) {
|
|
118
|
+
success = false;
|
|
119
|
+
}
|
|
104
120
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
for (const [, res] of results.entries()) {
|
|
124
|
+
if (res.exitCode !== 0 || !res.result.ok) {
|
|
125
|
+
success = false;
|
|
126
|
+
}
|
|
108
127
|
}
|
|
109
128
|
}
|
|
110
129
|
if (aborted.size > 0) {
|
|
@@ -125,4 +144,4 @@ if (process.env.MT_DEBUG_INTERVAL) {
|
|
|
125
144
|
}, parseInt(process.env.MT_DEBUG_INTERVAL)).unref();
|
|
126
145
|
}
|
|
127
146
|
void run();
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFQSxpREFBcUM7QUFDckMscUNBQXFDO0FBQ3JDLDZDQUFnRDtBQUNoRCx3REFBZ0M7QUFFaEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxrQkFBUyxFQU1uQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBRWhGLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0FBRXpDLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUE7QUFFcEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztJQUNuQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFDdEMsQ0FBQztTQUFNLENBQUM7UUFDSixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQ25DLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFRLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0FBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7QUFFcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtBQUVqQyxTQUFTLGVBQWU7SUFDcEIsVUFB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
|
package/build/lib/glob.js
CHANGED
|
@@ -1,7 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.globArgs = globArgs;
|
|
4
|
-
const glob = require("glob");
|
|
37
|
+
const glob = __importStar(require("glob"));
|
|
5
38
|
function globArgs(fileSpecs) {
|
|
6
39
|
let globbedFiles = new Array();
|
|
7
40
|
for (const fileSpec of fileSpecs) {
|
|
@@ -15,4 +48,4 @@ function globArgs(fileSpecs) {
|
|
|
15
48
|
}
|
|
16
49
|
return globbedFiles;
|
|
17
50
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9nbG9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsNEJBYUM7QUFmRCwyQ0FBNEI7QUFFNUIsU0FBZ0IsUUFBUSxDQUFDLFNBQW1CO0lBQ3hDLElBQUksWUFBWSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUE7SUFDdEMsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXRDLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUV4QixZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ0osWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEQsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLFlBQVksQ0FBQTtBQUN2QixDQUFDIn0=
|
package/build/lib/run-test.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ export interface Result {
|
|
|
4
4
|
executionTime: number;
|
|
5
5
|
result: FinalResults;
|
|
6
6
|
}
|
|
7
|
-
export declare function runTest(filename: string, nodeArgs: string[], logConsole: boolean, outputToFile: boolean, junitOutput: boolean, timeout: number): Promise<Result>;
|
|
7
|
+
export declare function runTest(filename: string, nodeArgs: string[], logConsole: boolean, outputToFile: boolean, junitOutput: boolean, timeout: number, quiet?: boolean): Promise<Result>;
|
package/build/lib/run-test.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
36
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
37
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -12,12 +45,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
45
|
exports.runTest = runTest;
|
|
13
46
|
const tap_parser_1 = require("tap-parser");
|
|
14
47
|
const tee = require('tee');
|
|
15
|
-
const streams = require("stream-buffers");
|
|
48
|
+
const streams = __importStar(require("stream-buffers"));
|
|
16
49
|
const child_process_1 = require("child_process");
|
|
17
50
|
const fs_1 = require("fs");
|
|
18
51
|
const path_1 = require("path");
|
|
19
|
-
function runTest(
|
|
20
|
-
return __awaiter(this,
|
|
52
|
+
function runTest(filename_1, nodeArgs_1, logConsole_1, outputToFile_1, junitOutput_1, timeout_1) {
|
|
53
|
+
return __awaiter(this, arguments, void 0, function* (filename, nodeArgs, logConsole, outputToFile, junitOutput, timeout, quiet = false) {
|
|
21
54
|
const extraEnv = {};
|
|
22
55
|
if (junitOutput) {
|
|
23
56
|
extraEnv.PT_XUNIT_FILE = filename + '.xml';
|
|
@@ -47,10 +80,12 @@ function runTest(filename, nodeArgs, logConsole, outputToFile, junitOutput, time
|
|
|
47
80
|
resolve({ exitCode, signal });
|
|
48
81
|
});
|
|
49
82
|
});
|
|
50
|
-
const output = logConsole
|
|
83
|
+
const output = logConsole && !quiet
|
|
51
84
|
? process.stdout
|
|
52
85
|
: new streams.WritableStreamBuffer();
|
|
53
|
-
|
|
86
|
+
if (!quiet) {
|
|
87
|
+
output.write(`\n#\n# ${filename}\n#\n`);
|
|
88
|
+
}
|
|
54
89
|
const parsed = new Promise((resolve) => {
|
|
55
90
|
const p = new tap_parser_1.Parser(resolve);
|
|
56
91
|
if (outputToFile) {
|
|
@@ -71,7 +106,7 @@ function runTest(filename, nodeArgs, logConsole, outputToFile, junitOutput, time
|
|
|
71
106
|
if (aborted) {
|
|
72
107
|
exitCode = exitCode || 1;
|
|
73
108
|
}
|
|
74
|
-
if (!logConsole) {
|
|
109
|
+
if (!logConsole && !quiet) {
|
|
75
110
|
const lines = output.getContentsAsString('utf8');
|
|
76
111
|
if (lines) {
|
|
77
112
|
for (const line of lines.split('\n')) {
|
|
@@ -89,4 +124,4 @@ function runTest(filename, nodeArgs, logConsole, outputToFile, junitOutput, time
|
|
|
89
124
|
};
|
|
90
125
|
});
|
|
91
126
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcnVuLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsMEJBMEdDO0FBM0hELDJDQUFpRDtBQUVqRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUIsd0RBQXlDO0FBQ3pDLGlEQUFxQztBQUNyQywyQkFBc0M7QUFDdEMsK0JBQStCO0FBVy9CLFNBQXNCLE9BQU87eURBQ3pCLFFBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLFVBQW1CLEVBQ25CLFlBQXFCLEVBQ3JCLFdBQW9CLEVBQ3BCLE9BQWUsRUFDZixRQUFpQixLQUFLO1FBRXRCLE1BQU0sUUFBUSxHQUFHLEVBQTRCLENBQUE7UUFDN0MsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLFFBQVEsQ0FBQyxhQUFhLEdBQUcsUUFBUSxHQUFHLE1BQU0sQ0FBQTtZQUMxQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUEsZUFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQy9DLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7UUFFNUIsTUFBTSxJQUFJLEdBQUcsSUFBQSxxQkFBSyxFQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xELEdBQUcsa0NBQ0ksT0FBTyxDQUFDLEdBQUcsR0FDWCxRQUFRLENBQ2Q7U0FDSixDQUFDLENBQUE7UUFFRixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQ3RCLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDUixJQUFJLEtBQUssR0FDTCxPQUFPLEdBQUcsQ0FBQztnQkFDUCxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtv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
|
package/check-publish
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
if [ -n "$(git status --porcelain)" ];
|
|
6
|
+
then
|
|
7
|
+
git status
|
|
8
|
+
echo "Uncommitted changes. Exiting."
|
|
9
|
+
exit 1
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
git clean -fdx
|
|
13
|
+
npm ci
|
|
14
|
+
npm run lint
|
|
15
|
+
npm run build
|
|
16
|
+
npm run test
|
|
17
|
+
|
|
18
|
+
# List files that will be included by running npm pack
|
|
19
|
+
npm pack --dry-run
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "multi-tape",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Runner for tape-tests",
|
|
5
5
|
"bin": {
|
|
6
6
|
"multi-tape": "build/index.js"
|
|
@@ -20,23 +20,23 @@
|
|
|
20
20
|
},
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"glob": "
|
|
23
|
+
"glob": "11.0.3",
|
|
24
24
|
"minimist": "^1.2.8",
|
|
25
25
|
"stream-buffers": "^3.0.3",
|
|
26
|
-
"tap-parser": "
|
|
26
|
+
"tap-parser": "18.0.2",
|
|
27
27
|
"tee": "^0.2.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@eslint/js": "^9.6.0",
|
|
31
31
|
"@types/eslint__js": "^8.42.3",
|
|
32
32
|
"@types/minimist": "^1.2.5",
|
|
33
|
-
"@types/node": "
|
|
33
|
+
"@types/node": "24.10.0",
|
|
34
34
|
"@types/stream-buffers": "^3.0.3",
|
|
35
|
-
"eslint": "
|
|
35
|
+
"eslint": "9.39.1",
|
|
36
36
|
"prettier": "^3.3.2",
|
|
37
37
|
"purple-tape": "^3.9.1",
|
|
38
38
|
"source-map-support": "^0.5.21",
|
|
39
39
|
"typescript": "^5.5.3",
|
|
40
|
-
"typescript-eslint": "
|
|
40
|
+
"typescript-eslint": "8.46.3"
|
|
41
41
|
}
|
|
42
42
|
}
|
package/Changelog.md
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
6
|
-
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [Unreleased]
|
|
9
|
-
|
|
10
|
-
## [1.7.1] 2024-07-03
|
|
11
|
-
|
|
12
|
-
- Update dependencies and github actions
|
|
13
|
-
|
|
14
|
-
## [1.7.0] 2022-06-20
|
|
15
|
-
|
|
16
|
-
- Add a --controller argument
|
|
17
|
-
|
|
18
|
-
## [1.6.1] 2021-01-29
|
|
19
|
-
|
|
20
|
-
- Add MT_DEBUG_INTERVAL setting
|
|
21
|
-
- Send SIGKILL if SIGTERM does not cause test to exit
|
|
22
|
-
|
|
23
|
-
## [1.6.0] 2021-01-06
|
|
24
|
-
|
|
25
|
-
- Timeout for test execution
|
|
26
|
-
|
|
27
|
-
## [1.5.0] 2020-12-14
|
|
28
|
-
|
|
29
|
-
- Build with github actions
|
|
30
|
-
- Update dependencies
|
|
31
|
-
- Print execution time for each test in summary and order entries by execution time
|
|
32
|
-
|
|
33
|
-
## [1.4.0] 2020-04-15
|
|
34
|
-
|
|
35
|
-
- Add -j option to generate junit xml with purple-tape
|
|
36
|
-
|
|
37
|
-
## [1.3.1] 2019-12-13
|
|
38
|
-
|
|
39
|
-
### Fixes
|
|
40
|
-
|
|
41
|
-
- Split up output in smaller chunks to avoid overflowing stdout
|
|
42
|
-
buffers which will terminate node with
|
|
43
|
-
`write /dev/stdout: resource temporarily unavailable`
|
|
44
|
-
Fix by @zommarin.
|
|
45
|
-
|
|
46
|
-
## [1.3.0] 2019-06-28
|
|
47
|
-
|
|
48
|
-
Rewritten in typescript using async/await
|
|
49
|
-
|
|
50
|
-
### New features
|
|
51
|
-
|
|
52
|
-
- Show which tests were running if multi-tape is
|
|
53
|
-
terminated with a signal
|
|
54
|
-
|
|
55
|
-
### Fixes
|
|
56
|
-
|
|
57
|
-
- Updated outdated dependencies
|
|
58
|
-
|
|
59
|
-
## [1.2.1] 2018-09-05
|
|
60
|
-
|
|
61
|
-
### Fixes
|
|
62
|
-
|
|
63
|
-
- Fix #3 Hangs with too much output on stdout
|
|
64
|
-
|
|
65
|
-
## [1.2.0] - 2018-04-15
|
|
66
|
-
|
|
67
|
-
### Features
|
|
68
|
-
|
|
69
|
-
- Add support for file globbing on windows. Fixes #1. Patch by @LordScree.
|