41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
var sinon = require('sinon');
|
|
var autoRelease = require('auto-release-sinon');
|
|
|
|
require('babel/register')(require('../src/optimize/babelOptions').node);
|
|
|
|
// hook into the global afterEach variable to allow autoReleaseSinon to register
|
|
// an afterEach handler before mocha has exposed itself to the test files.
|
|
//
|
|
// This works by telling autoReleaseSinon to use a fake "afterEach" function.
|
|
// Rather than actually record an afterEach handler the function tracks all of
|
|
// the calls it received and queues them up in queuedAfterEachArgs.
|
|
//
|
|
// The global "afterEach" variable is also tracked, and once it is assigned by mocha
|
|
// the variable global is reconfigured to point directly to the new value (from mocha)
|
|
// and all of the queued invocations are executed.
|
|
var queuedAfterEachArgs = [];
|
|
Object.defineProperty(global, 'afterEach', {
|
|
configurable: true,
|
|
get() { return undefined; },
|
|
set(afterEach) {
|
|
Object.defineProperty(global, 'afterEach', {
|
|
configurable: true,
|
|
writable: true,
|
|
value: afterEach
|
|
});
|
|
|
|
queuedAfterEachArgs.forEach(function (args) {
|
|
afterEach.apply(null, args);
|
|
});
|
|
|
|
return global.afterEach;
|
|
}
|
|
});
|
|
|
|
autoRelease.setupAutoRelease(sinon, function () {
|
|
if (!global.afterEach) {
|
|
queuedAfterEachArgs.push(Array.prototype.slice.call(arguments));
|
|
} else {
|
|
global.afterEach.apply(this, arguments);
|
|
}
|
|
});
|