EAsy Test runnER
eater v3
has the following changes.
previous eater, every test files were running in isolated process, but every subtest is not isolated process. for example,
const test = require('eater/runner').test;
test('abc', (done, fail) => {
global.mock = 1;
console.log(global.mock); // 1
done();
});
test('def', (done, fail) => {
console.log(global.mock); // 1 because previous test mock is still alive.
done();
});
after v3.0.0, eater can run every tests in isolated process
const test = require('eater/runner').test;
test('abc', (done, fail) => {
global.mock = 1;
console.log(global.mock); // 1
done();
});
test('def', (done, fail) => {
console.log(global.mock); // undefined
done();
});
before v3.0, we need to use done
method to finish the subtest.
const test = require('eater/runner').test;
test('abc', (done, fail) => {
global.mock = 1;
console.log(global.mock); // 1
done();
});
after v3.0, we need not to call done
.
const test = require('eater/runner').test;
test('abc', () => {
global.mock = 1;
console.log(global.mock); // 1
});
Every subtest process is an isolated.
Reporter counts success/failure test count. And show duration time.
eater v3.0 will be released soon.
eater
has the following changes.
previous eater, every test files were running in isolated process, but every subtest is not isolated process. for example,
const test = require('eater/runner').test;
test('abc', (done, fail) => {
global.mock = 1;
console.log(global.mock); // 1
done();
});
test('def', (done, fail) => {
console.log(global.mock); // 1 because previous test mock is still alive.
done();
});
after v3.0.0, eater can run every tests in isolated process
const test = require('eater/runner').test;
test('abc', (done, fail) => {
global.mock = 1;
console.log(global.mock); // 1
done();
});
test('def', (done, fail) => {
console.log(global.mock); // undefined
done();
});
before v3.0, we need to use done
method to finish the subtest.
const test = require('eater/runner').test;
test('abc', (done, fail) => {
global.mock = 1;
console.log(global.mock); // 1
done();
});
after v3.0, we need not to call done
.
const test = require('eater/runner').test;
test('abc', () => {
global.mock = 1;
console.log(global.mock); // 1
});
Every subtest process is an isolated. But currently, we need to make the mode to be stable and improve performance. so we will pre-release this as v3.0.0-0.
features
--glob
mode to find test filesRemove --mode tap option, use --reporter eater-tap-reporter instead
Direct test mode
$ eater test/foo/bar/buz.js hoge.spec.js
test
functions// test/some/func.js
const test = require('eater/runner').test;
const assert = require('power-assert');
test('foo', (resolve, reject) => {
assert(alice == bob);
resolve();
});
test('bar', (resolve, reject) => {
assert(alice !== bob); // fail here
resolve();
});
test('buz', (resolve, reject) => {
assert(alice !== bob);
if (alwaysTrue) {
resolve('pass'):
}
reject('should not be reached here');
});
Testing... : foo
✓ success foo
✗ failure bar
✓ success buz
✓ test/some/func.js
read test settings from package.json
and .eaterrc
--procs
option is concurrent process numbers--require
option is pre-require option--reporter
option for custom reporterDevelopers can create custom reporter like this.
'use strict';
const Reporter = require('eater').Reporter;
class DotReporter extends Reporter {
reportFileNumber(num) {
}
reportTestName(name) {
}
setChildProc(child) {
child.stdout.on('data', () => {process.stdout.emit('data', '')});
child.stderr.on('data', () => {process.stderr.emit('data', '')});
}
reportFailure(name) {
console.log('F');
}
reportSuccess(name) {
console.log('.');
}
}
module.exports = DotReporter;
$ eater --reporter dotreporter