63 lines
1.3 KiB
JavaScript
63 lines
1.3 KiB
JavaScript
|
#!/usr/bin/env node
|
||
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
||
|
/*
|
||
|
* Copyright 2011 Mozilla Foundation and contributors
|
||
|
* Licensed under the New BSD license. See LICENSE or:
|
||
|
* http://opensource.org/licenses/BSD-3-Clause
|
||
|
*/
|
||
|
var assert = require('assert');
|
||
|
var fs = require('fs');
|
||
|
var path = require('path');
|
||
|
var util = require('./source-map/util');
|
||
|
|
||
|
function run(tests) {
|
||
|
var total = 0;
|
||
|
var passed = 0;
|
||
|
|
||
|
for (var i = 0; i < tests.length; i++) {
|
||
|
for (var k in tests[i].testCase) {
|
||
|
if (/^test/.test(k)) {
|
||
|
total++;
|
||
|
try {
|
||
|
tests[i].testCase[k](assert, util);
|
||
|
passed++;
|
||
|
}
|
||
|
catch (e) {
|
||
|
console.log('FAILED ' + tests[i].name + ': ' + k + '!');
|
||
|
console.log(e.stack);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
console.log('');
|
||
|
console.log(passed + ' / ' + total + ' tests passed.');
|
||
|
console.log('');
|
||
|
|
||
|
return total - passed;
|
||
|
}
|
||
|
|
||
|
function isTestFile(f) {
|
||
|
var testToRun = process.argv[2];
|
||
|
return testToRun
|
||
|
? path.basename(testToRun) === f
|
||
|
: /^test\-.*?\.js/.test(f);
|
||
|
}
|
||
|
|
||
|
function toModule(f) {
|
||
|
return './source-map/' + f.replace(/\.js$/, '');
|
||
|
}
|
||
|
|
||
|
var requires = fs.readdirSync(path.join(__dirname, 'source-map'))
|
||
|
.filter(isTestFile)
|
||
|
.map(toModule);
|
||
|
|
||
|
var code = run(requires.map(require).map(function (mod, i) {
|
||
|
return {
|
||
|
name: requires[i],
|
||
|
testCase: mod
|
||
|
};
|
||
|
}));
|
||
|
|
||
|
process.exit(code);
|