authelia/scripts/authelia-scripts-test

60 lines
1.7 KiB
JavaScript
Executable File

#!/usr/bin/env node
var program = require('commander');
var spawn = require('child_process').spawn;
var fs = require('fs');
var execSync = require('child_process').execSync;
program
.option('--headless', 'Run in headless mode.')
.parse(process.argv);
let suite;
let withServer = false;
let args = [];
const ENVIRONMENT_FILENAME = '.suite';
if (fs.existsSync(ENVIRONMENT_FILENAME)) {
const suite = fs.readFileSync(ENVIRONMENT_FILENAME);
console.log('Suite %s detected (dev env running). Running test related to this suite.', suite);
args.push('test/suites/' + suite + '/*.ts');
}
else if (program.args.length > 0) {
console.log('No suite detected. Running selected tests against built server.');
withServer = true;
args = program.args;
// Render the production version of the nginx portal configuration
execSync('./example/compose/nginx/portal/render.js --production');
// Prepare the environment
execSync('./scripts/utils/prepare-environment.sh');
}
else {
console.log('No suite detected but no tests have been selected...');
process.exit(1);
}
mocha = spawn('./node_modules/.bin/mocha', ['--exit', '--colors', '--require', 'ts-node/register', ...args], {
env: {
...process.env,
TS_NODE_PROJECT: 'test/tsconfig.json',
WITH_SERVER: (withServer) ? 'y' : 'n',
HEADLESS: (program.headless) ? 'y' : 'n',
}
});
mocha.stdout.on('data', (data) => {
process.stdout.write(`${data}`);
});
mocha.stderr.on('data', (data) => {
process.stderr.write(`${data}`);
});
mocha.on('exit', function(statusCode) {
if (statusCode != 0) {
console.error("The tests failed... Mocha exited with status code " + statusCode);
}
process.exit(statusCode);
})