required
Version:
traverse your script and identify dependencies from requires
61 lines (43 loc) • 1.44 kB
JavaScript
// builtin
var fs = require('fs');
var assert = require('assert');
var cycle = require('cycle');
// local
var required = require('..');
suite('default');
function fix_path(key, value) {
if (key !== 'filename') {
return value;
}
return value.replace(__dirname + '/fixtures/', '');
}
function add_test(filename) {
test(filename, function(done) {
var entry_path = __dirname + '/fixtures/' + filename;
var dep_path = __dirname + '/fixtures/' + filename + '.dep';
required(entry_path, function(err, actual) {
assert.ok(!err, err);
// decycle for json stringification
actual = cycle.decycle(actual);
if (process.env.GENERATE) {
fs.writeFileSync(dep_path, JSON.stringify(actual, fix_path, ' '), 'utf8');
return done();
}
var expected = JSON.parse(fs.readFileSync(dep_path, 'utf8'));
// to normalize all paths
actual = JSON.parse(JSON.stringify(actual, fix_path));
assert.deepEqual(actual, expected);
done();
});
});
}
fs.readdirSync(__dirname + '/fixtures').forEach(function(fixture) {
// skip directories and vim swap files
if (fixture.indexOf('.js') < 0 || fixture.indexOf('.swp') >= 0) {
return;
}
if (fixture.indexOf('.dep') >= 0) {
return;
}
add_test(fixture);
});