This repository has been archived on 2018-10-12. You can view files and clone it, but cannot push or open issues or pull requests.
node-task/node_modules/nodeunit/test/test-runfiles.js
2014-09-18 15:35:58 -04:00

232 lines
7.0 KiB
JavaScript

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
);
};
}