Run every single tap test in its own process.
forking tap
takes a single tap-mocha test file:
require('tap').mochaGlobals()
var foo = 'bar';
describe('foo', function () {
function fooHelper() {}
it('foo-1', function () {});
it('foo-2', function () {});
});
describe('bar', function () {
function barHelper() {}
it('bar-1', function () {});
});
And splits it into multiple files with one test each:
require('tap').mochaGlobals();
var foo = 'bar';
describe('foo', function () {
function fooHelper() {}
it('foo-1', function () {});
});
require('tap').mochaGlobals();
var foo = 'bar';
describe('foo', function () {
function fooHelper() {}
it('foo-2', function () {});
});
require('tap').mochaGlobals();
var foo = 'bar';
describe('bar', function () {
function barHelper() {}
it('bar-1', function () {});
});
Notice how all the appropriate helper functions and shared variables make it into each test. tap
already forks and runs each file in a new process, so you just need to run the standard tap
command and pass in the generated files.
$ npm install --save forking-tap
const forkingTap = require('forking-tap');
const results = forkingTap(fs.readFileSync('./all-the-tests.js', 'utf8'));
results.forEach((result, testNum) => {
fs.writeFileSync('./test-number-' + testNum, result.code);
});
*Note: * forking-tap
currently only provides a transform. It does not provide a means of reading in file(s) or writing the results to disk. That may change in the future. (Help wanted!)
Returns testList
an array of testResult
objects that represent the input source
split into individual test files with one test per file.
Type: string
The original source code.
Type: string
The name of the file being split up. Required for source map support.
Type: boolean
Default: true
Forcefully turn off source map support by setting this to false
. Otherwise, source map support is turned on if the filename
option is present.
Type: boolean
Default: false
Automatically attach an inline source map comment to the end of the generated code.
Type: string
The full source code for an individual test
Type: object
The source map descriptor object for the transform (or undefined
if filename
was not provided, or options.sourceMaps === false
).
Type: Array.<string>
A representation of the test name. The last element of the array will always be the string value passed to it(str, fn)
test. The preceding elements of the array represent the names of any enclosing describe
blocks.
For example, the following:
describe('foo', function () {
describe('bar', function () {
it('baz', function () { /* ... */ });
});
});
would produce a nestedName
of`:
['foo', 'bar', 'baz']
MIT © James Talmage