232 lines
7.0 KiB
JavaScript
Executable File
232 lines
7.0 KiB
JavaScript
Executable File
var assert = require('assert'),
|
|
fs = require('fs'),
|
|
path = require('path'),
|
|
nodeunit = require('../lib/nodeunit');
|
|
|
|
|
|
var setup = function (fn) {
|
|
return function (test) {
|
|
process.chdir(__dirname);
|
|
var env = {
|
|
mock_module1: require(__dirname + '/fixtures/mock_module1'),
|
|
mock_module2: require(__dirname + '/fixtures/mock_module2'),
|
|
mock_module3: require(__dirname + '/fixtures/dir/mock_module3'),
|
|
mock_module4: require(__dirname + '/fixtures/dir/mock_module4')
|
|
};
|
|
fn.call(env, test);
|
|
};
|
|
};
|
|
|
|
|
|
exports.testRunFiles = setup(function (test) {
|
|
test.expect(28);
|
|
var runModule_copy = nodeunit.runModule;
|
|
|
|
var runModule_calls = [];
|
|
var modules = [];
|
|
|
|
var opts = {
|
|
moduleStart: function () {
|
|
return 'moduleStart';
|
|
},
|
|
testDone: function () {
|
|
return 'testDone';
|
|
},
|
|
testReady: function () {
|
|
return 'testReady';
|
|
},
|
|
testStart: function () {
|
|
return 'testStart';
|
|
},
|
|
log: function () {
|
|
return 'log';
|
|
},
|
|
done: function (assertions) {
|
|
test.equals(assertions.failures(), 0, 'failures');
|
|
test.equals(assertions.length, 4, 'length');
|
|
test.ok(typeof assertions.duration === "number");
|
|
|
|
var called_with = function (name) {
|
|
return runModule_calls.some(function (m) {
|
|
return m.name === name;
|
|
});
|
|
};
|
|
test.ok(called_with('mock_module1'), 'mock_module1 ran');
|
|
test.ok(called_with('mock_module2'), 'mock_module2 ran');
|
|
test.ok(called_with('mock_module3'), 'mock_module3 ran');
|
|
test.ok(called_with('mock_module4'), 'mock_module4 ran');
|
|
test.equals(runModule_calls.length, 4);
|
|
|
|
nodeunit.runModule = runModule_copy;
|
|
test.done();
|
|
}
|
|
};
|
|
|
|
nodeunit.runModule = function (name, mod, options, callback) {
|
|
test.equals(options.testDone, opts.testDone);
|
|
test.equals(options.testReady, opts.testReady);
|
|
test.equals(options.testStart, opts.testStart);
|
|
test.equals(options.log, opts.log);
|
|
test.ok(typeof name === "string");
|
|
runModule_calls.push(mod);
|
|
var m = [{failed: function () {
|
|
return false;
|
|
}}];
|
|
modules.push(m);
|
|
callback(null, m);
|
|
};
|
|
|
|
nodeunit.runFiles(
|
|
[__dirname + '/fixtures/mock_module1.js',
|
|
__dirname + '/fixtures/mock_module2.js',
|
|
__dirname + '/fixtures/dir'],
|
|
opts
|
|
);
|
|
});
|
|
|
|
exports.testRunFilesEmpty = function (test) {
|
|
test.expect(3);
|
|
nodeunit.runFiles([], {
|
|
moduleStart: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
testDone: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
testReady: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
testStart: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
log: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
done: function (assertions) {
|
|
test.equals(assertions.failures(), 0, 'failures');
|
|
test.equals(assertions.length, 0, 'length');
|
|
test.ok(typeof assertions.duration === "number");
|
|
test.done();
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
exports.testEmptyDir = function (test) {
|
|
var dir2 = __dirname + '/fixtures/dir2';
|
|
|
|
// git doesn't like empty directories, so we have to create one
|
|
path.exists(dir2, function (exists) {
|
|
if (!exists) {
|
|
fs.mkdirSync(dir2, 0777);
|
|
}
|
|
|
|
// runFiles on empty directory:
|
|
nodeunit.runFiles([dir2], {
|
|
moduleStart: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
testDone: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
testReady: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
testStart: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
log: function () {
|
|
test.ok(false, 'should not be called');
|
|
},
|
|
done: function (assertions) {
|
|
test.equals(assertions.failures(), 0, 'failures');
|
|
test.equals(assertions.length, 0, 'length');
|
|
test.ok(typeof assertions.duration === "number");
|
|
test.done();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
var CoffeeScript;
|
|
try {
|
|
CoffeeScript = require('coffee-script');
|
|
if (CoffeeScript.register != null) {
|
|
CoffeeScript.register();
|
|
}
|
|
} catch (e) {
|
|
}
|
|
|
|
if (CoffeeScript) {
|
|
exports.testCoffeeScript = function (test) {
|
|
process.chdir(__dirname);
|
|
var env = {
|
|
mock_coffee_module: require(__dirname +
|
|
'/fixtures/coffee/mock_coffee_module')
|
|
};
|
|
|
|
test.expect(10);
|
|
var runModule_copy = nodeunit.runModule;
|
|
|
|
var runModule_calls = [];
|
|
var modules = [];
|
|
|
|
var opts = {
|
|
moduleStart: function () {
|
|
return 'moduleStart';
|
|
},
|
|
testDone: function () {
|
|
return 'testDone';
|
|
},
|
|
testReady: function () {
|
|
return 'testReady';
|
|
},
|
|
testStart: function () {
|
|
return 'testStart';
|
|
},
|
|
log: function () {
|
|
return 'log';
|
|
},
|
|
done: function (assertions) {
|
|
test.equals(assertions.failures(), 0, 'failures');
|
|
test.equals(assertions.length, 1, 'length');
|
|
test.ok(typeof assertions.duration === "number");
|
|
|
|
var called_with = function (name) {
|
|
return runModule_calls.some(function (m) {
|
|
return m.name === name;
|
|
});
|
|
};
|
|
test.ok(
|
|
called_with('mock_coffee_15'),
|
|
'mock_coffee_module ran'
|
|
);
|
|
test.equals(runModule_calls.length, 1);
|
|
|
|
nodeunit.runModule = runModule_copy;
|
|
test.done();
|
|
}
|
|
};
|
|
|
|
nodeunit.runModule = function (name, mod, options, callback) {
|
|
test.equals(options.testDone, opts.testDone);
|
|
test.equals(options.testReady, opts.testReady);
|
|
test.equals(options.testStart, opts.testStart);
|
|
test.equals(options.log, opts.log);
|
|
test.ok(typeof name === "string");
|
|
runModule_calls.push(mod);
|
|
var m = [{failed: function () {
|
|
return false;
|
|
}}];
|
|
modules.push(m);
|
|
callback(null, m);
|
|
};
|
|
|
|
nodeunit.runFiles(
|
|
[__dirname + '/fixtures/coffee/mock_coffee_module.coffee'],
|
|
opts
|
|
);
|
|
};
|
|
}
|