blob: 8c18734a5415fdc03d5410a312f4f56521251f2b [file] [log] [blame]
var parser = require('../');
var test = require('tap').test;
var path = require('path');
var fs = require('fs');
var files = {
foo: path.join(__dirname, '/files/foo.js'),
bar: path.join(__dirname, '/files/bar.js')
};
test('uses persistent cache', function (t) {
t.plan(1);
var p = parser({
persistentCache: function (file, id, pkg, fallback, cb) {
if (file === files.bar) {
return fallback(null, cb)
}
cb(null, {
source: 'file at ' + file + '@' + id,
package: pkg,
deps: { './bar': files.bar }
})
}
});
p.end({ id: 'foo', file: files.foo, entry: false });
var rows = [];
p.on('data', function (row) { rows.push(row) });
p.on('end', function () {
t.same(rows.sort(cmp), [
{
id: files.bar,
file: files.bar,
source: fs.readFileSync(files.bar, 'utf8'),
deps: {}
},
{
id: 'foo',
file: files.foo,
source: 'file at ' + files.foo + '@' + files.foo,
deps: { './bar': files.bar }
}
].sort(cmp));
});
});
test('passes persistent cache error through', function (t) {
t.plan(1);
var p = parser({
persistentCache: function (file, id, pkg, fallback, cb) {
cb(new Error('foo'))
}
});
p.end({ id: 'foo', file: files.foo, entry: false });
p.on('error', function (err) { t.equals(err.message, 'foo') });
});
test('allow passing of the raw source as string', function (t) {
t.plan(1);
var p = parser({
persistentCache: function (file, id, pkg, fallback, cb) {
fallback(fs.readFileSync(files.bar, 'utf8'), cb)
}
});
p.end({ id: 'foo', file: files.foo, entry: false });
var rows = [];
p.on('data', function (row) { rows.push(row) });
p.on('end', function () {
t.same(rows.sort(cmp), [
{
id: 'foo',
file: files.foo,
source: fs.readFileSync(files.bar, 'utf8'),
deps: {}
}
].sort(cmp));
});
});
function cmp (a, b) { return a.id < b.id ? -1 : 1 }