123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- var parser = require('../');
- var test = require('tap').test;
- var fs = require('fs');
- var path = require('path');
- var xtend = require('xtend');
- var files = {
- abc: path.join(__dirname, '/expose/lib/abc.js'),
- xyz: path.join(__dirname, '/expose/lib/xyz.js'),
- foo: path.join(__dirname, '/expose/foo.js'),
- bar: path.join(__dirname, '/expose/bar.js'),
- main: path.join(__dirname, '/expose/main.js')
- };
- var sources = Object.keys(files).reduce(function (acc, file) {
- acc[file] = fs.readFileSync(files[file], 'utf8');
- return acc;
- }, {});
- var cache = {};
- cache[files.abc] = {
- source: sources.abc,
- deps: {}
- };
- cache[files.xyz] = {
- source: sources.xyz,
- deps: {'../foo': files.foo}
- };
- cache[files.foo] = {
- source: sources.foo,
- deps: {'./lib/abc': files.abc}
- };
- cache[files.bar] = {
- source: sources.bar,
- deps: {xyz: files.xyz}
- };
- cache[files.main] = {
- source: sources.main,
- deps: {
- abc: files.abc,
- xyz: files.xyz,
- './bar': files.bar
- }
- };
- test('preserves expose and entry with partial cache', function(t) {
- t.plan(1);
- var partialCache = xtend(cache);
- delete partialCache[files.bar];
- var p = parser({ cache: partialCache });
- p.write({ id: 'abc', file: files.abc, expose: 'abc' });
- p.write({ id: 'xyz', file: files.xyz, expose: 'xyz' });
- p.end({ id: 'main', file: files.main, entry: true });
- 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: sources.bar,
- deps: {xyz: files.xyz}
- },
- {
- file: files.foo,
- id: files.foo,
- source: sources.foo,
- deps: {'./lib/abc': files.abc}
- },
- {
- id: 'abc',
- file: files.abc,
- source: sources.abc,
- deps: {},
- entry: true,
- expose: 'abc'
- },
- {
- id: 'main',
- file: files.main,
- source: sources.main,
- deps: {
- './bar': files.bar,
- abc: files.abc,
- xyz: files.xyz
- },
- entry: true
- },
- {
- id: 'xyz',
- file: files.xyz,
- source: sources.xyz,
- deps: {'../foo': files.foo},
- entry: true,
- expose: 'xyz'
- }
- ].sort(cmp));
- });
- });
- function cmp (a, b) { return a.id < b.id ? -1 : 1 }
|