wishthis/node_modules/less/test/browser/generator/generate.js
2022-01-21 09:28:41 +01:00

78 lines
2.1 KiB
JavaScript

const template = require('./template')
let config
const fs = require('fs-extra')
const path = require('path')
const globby = require('globby')
const { runner } = require('mocha-headless-chrome')
if (process.argv[2]) {
config = require(`./${process.argv[2]}.config`)
} else {
config = require('./runner.config')
}
/**
* Generate templates and run tests
*/
const tests = []
const cwd = process.cwd()
const tmpDir = path.join(cwd, 'tmp', 'browser')
fs.ensureDirSync(tmpDir)
fs.copySync(path.join(cwd, 'test', 'browser', 'common.js'), path.join(tmpDir, 'common.js'))
let numTests = 0
let passedTests = 0
let failedTests = 0
/** Will run the runners in a series */
function runSerial(tasks) {
var result = Promise.resolve()
start = Date.now()
tasks.forEach(task => {
result = result.then(result => {
if (result && result.result && result.result.stats) {
const stats = result.result.stats
numTests += stats.tests
passedTests += stats.passes
failedTests += stats.failures
}
return task()
}, err => {
console.log(err)
failedTests += 1
})
})
return result
}
Object.entries(config).forEach(entry => {
const test = entry[1]
const paths = globby.sync(test.src)
const templateString = template(paths, test.options.helpers, test.options.specs)
fs.writeFileSync(path.join(cwd, test.options.outfile), templateString)
tests.push(() => {
const file = 'http://localhost:8081/' + test.options.outfile
console.log(file)
return runner({
file,
timeout: 3500,
args: ['disable-web-security']
})
})
})
module.exports = () => runSerial(tests).then(() => {
if (failedTests > 0) {
process.stderr.write(failedTests + ' Failed, ' + passedTests + ' passed\n');
} else {
process.stdout.write('All Passed ' + passedTests + ' run\n');
}
if (failedTests) {
process.on('exit', function() { process.reallyExit(1); });
}
process.exit()
}, err => {
process.stderr.write(err.message);
process.exit()
})