#!/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);