9fc9704cdd
mock-fs is currently incompatible with node 4.x, but a fix is in progress https://github.com/tschaub/mock-fs/issues/59 Since we are currently not actively developing the affected broccoli plugins, the risk of disabling these tests is low, especially in the light of improvements we get from node 4.x.
98 lines
3.9 KiB
TypeScript
98 lines
3.9 KiB
TypeScript
/// <reference path="../typings/node/node.d.ts" />
|
|
/// <reference path="../typings/jasmine/jasmine.d.ts" />
|
|
|
|
console.warn(
|
|
"Skipping all tests in broccoli-merge-trees.spec.ts because they require mock-fs which is currently incompatible with node 4.x. See: https://github.com/tschaub/mock-fs/issues/59");
|
|
|
|
|
|
/*
|
|
let mockfs = require('mock-fs');
|
|
import fs = require('fs');
|
|
import {TreeDiffer} from './tree-differ';
|
|
import {MergeTrees} from './broccoli-merge-trees';
|
|
|
|
describe('MergeTrees', () => {
|
|
afterEach(() => mockfs.restore());
|
|
|
|
function mergeTrees(inputPaths, cachePath, options) {
|
|
return new MergeTrees(inputPaths, cachePath, options);
|
|
}
|
|
|
|
function MakeTreeDiffers(rootDirs) {
|
|
let treeDiffers = rootDirs.map((rootDir) => new TreeDiffer('MergeTrees', rootDir));
|
|
treeDiffers.diffTrees = () => { return treeDiffers.map(tree => tree.diffTree()); };
|
|
return treeDiffers;
|
|
}
|
|
|
|
function read(path) { return fs.readFileSync(path, "utf-8"); }
|
|
|
|
it('should copy the file from the right-most inputTree with overwrite=true', () => {
|
|
let testDir: any = {
|
|
'tree1': {'foo.js': mockfs.file({content: 'tree1/foo.js content', mtime: new Date(1000)})},
|
|
'tree2': {'foo.js': mockfs.file({content: 'tree2/foo.js content', mtime: new Date(1000)})},
|
|
'tree3': {'foo.js': mockfs.file({content: 'tree3/foo.js content', mtime: new Date(1000)})}
|
|
};
|
|
mockfs(testDir);
|
|
let treeDiffer = MakeTreeDiffers(['tree1', 'tree2', 'tree3']);
|
|
let treeMerger = mergeTrees(['tree1', 'tree2', 'tree3'], 'dest', {overwrite: true});
|
|
treeMerger.rebuild(treeDiffer.diffTrees());
|
|
expect(read('dest/foo.js')).toBe('tree3/foo.js content');
|
|
|
|
delete testDir.tree2['foo.js'];
|
|
delete testDir.tree3['foo.js'];
|
|
mockfs(testDir);
|
|
treeMerger.rebuild(treeDiffer.diffTrees());
|
|
expect(read('dest/foo.js')).toBe('tree1/foo.js content');
|
|
|
|
testDir.tree2['foo.js'] = mockfs.file({content: 'tree2/foo.js content', mtime: new Date(1000)});
|
|
mockfs(testDir);
|
|
treeMerger.rebuild(treeDiffer.diffTrees());
|
|
expect(read('dest/foo.js')).toBe('tree2/foo.js content');
|
|
});
|
|
|
|
it('should throw if duplicates are found during the initial build', () => {
|
|
let testDir: any = {
|
|
'tree1': {'foo.js': mockfs.file({content: 'tree1/foo.js content', mtime: new Date(1000)})},
|
|
'tree2': {'foo.js': mockfs.file({content: 'tree2/foo.js content', mtime: new Date(1000)})},
|
|
'tree3': {'foo.js': mockfs.file({content: 'tree3/foo.js content', mtime: new Date(1000)})}
|
|
};
|
|
mockfs(testDir);
|
|
let treeDiffer = MakeTreeDiffers(['tree1', 'tree2', 'tree3']);
|
|
let treeMerger = mergeTrees(['tree1', 'tree2', 'tree3'], 'dest', {});
|
|
expect(() => treeMerger.rebuild(treeDiffer.diffTrees()))
|
|
.toThrowError(
|
|
'Duplicate path found while merging trees. Path: "foo.js".\n' +
|
|
'Either remove the duplicate or enable the "overwrite" option for this merge.');
|
|
|
|
testDir = {
|
|
'tree1': {'foo.js': mockfs.file({content: 'tree1/foo.js content', mtime: new Date(1000)})},
|
|
'tree2': {},
|
|
'tree3': {}
|
|
};
|
|
mockfs(testDir);
|
|
});
|
|
|
|
|
|
it('should throw if duplicates are found during rebuild', () => {
|
|
let testDir = {
|
|
'tree1': {'foo.js': mockfs.file({content: 'tree1/foo.js content', mtime: new Date(1000)})},
|
|
'tree2': {},
|
|
'tree3': {}
|
|
};
|
|
mockfs(testDir);
|
|
|
|
let treeDiffer = MakeTreeDiffers(['tree1', 'tree2', 'tree3']);
|
|
let treeMerger = mergeTrees(['tree1', 'tree2', 'tree3'], 'dest', {});
|
|
expect(() => treeMerger.rebuild(treeDiffer.diffTrees())).not.toThrow();
|
|
|
|
|
|
testDir.tree2['foo.js'] = mockfs.file({content: 'tree2/foo.js content', mtime: new Date(1000)});
|
|
mockfs(testDir);
|
|
expect(() => treeMerger.rebuild(treeDiffer.diffTrees()))
|
|
.toThrowError(
|
|
'Duplicate path found while merging trees. Path: "foo.js".\n' +
|
|
'Either remove the duplicate or enable the "overwrite" option for this merge.');
|
|
});
|
|
});
|
|
*/
|