mediawiki-extensions-Popups/tests/node-qunit/run.js
Ed Sanders 883c8c1aca build: Update eslint-config-wikimedia to 0.22.1
Change-Id: I055517998ed06fccdf50ec31251ea6aa9040abb5
2022-02-28 13:18:24 +00:00

58 lines
1.3 KiB
JavaScript
Executable file

#!/usr/bin/env node
const fs = require( 'fs' ),
mwNodeQunit = require( '@wikimedia/mw-node-qunit' ),
sinon = mwNodeQunit.sinon,
QUnitModule = QUnit.module,
svgInlineLoader = require( 'svg-inline-loader' );
require( '@babel/register' )( {
presets: [
[ '@babel/preset-env', {
targets: {
node: 6
}
} ]
]
} );
require.extensions[ '.svg' ] = ( module, filename ) => {
const svg = fs.readFileSync( filename, { encoding: 'utf8' } );
// eslint-disable-next-line no-underscore-dangle
module._compile( svgInlineLoader( svg ), filename );
};
sinon.config = {
injectIntoThis: true,
injectInto: null,
useFakeTimers: false,
useFakeServer: false,
properties: [ 'spy', 'stub', 'mock', 'sandbox' ]
};
mwNodeQunit.setUp();
// Override Qunit.module to set up a sinon sandbox automatically
QUnit.module = function ( name, localEnv ) {
localEnv = localEnv || {};
QUnitModule( name, {
beforeEach: function () {
const config = Object.assign( {}, sinon.config, {
injectInto: this
} );
this.sandbox = sinon.createSandbox( config );
if ( localEnv.beforeEach ) {
localEnv.beforeEach.call( this );
}
},
afterEach: function () {
// Interop with old teardown config on mediawiki codebases
this.sandbox.restore();
if ( localEnv.afterEach ) {
localEnv.afterEach.call( this );
}
}
} );
};