123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- var dedupe = require('../');
- var should = require('should');
- var through = require('through');
- var path = require('path');
- var File = require('gulp-util').File;
- var Buffer = require('buffer').Buffer;
- var fs = require('fs');
- require('mocha');
- describe('gulp-dedupe', function() {
- describe('dedupe()', function() {
- testDedupe(
- undefined,
- [
- 'file1.txt', 'Contents1',
- 'file1.txt', 'Contents1',
- 'file2.txt', 'Contents2',
- 'file1.txt', 'Contents1',
- 'file2.txt', 'Contents2',
- 'file3.txt', 'Contents3',
- 'file4.txt', 'Contents4',
- 'test/file1.txt', 'Contents1',
- 'file4.txt', 'Contents4'
- ],
- [
- 'file1.txt', 'Contents1',
- 'file2.txt', 'Contents2',
- 'file3.txt', 'Contents3',
- 'file4.txt', 'Contents4',
- 'test/file1.txt', 'Contents1'
- ]
- );
- testDedupe(
- {error: true},
- [
- 'file1.txt', 'Contents1',
- 'file1.txt', 'Contents1'
- ],
- [
- 'file1.txt', 'Contents1', 'Duplicate `file1.txt`'
- ]
- );
- testDedupe(
- undefined,
- [
- 'file1.txt', 'Contents1',
- 'file1.txt', 'Contents2'
- ],
- [
- 'file1.txt', 'Contents1', 'Duplicate file `file1.txt` with different contents'
- ]
- );
- testDedupe(
- {diff: true},
- [
- 'file1.txt', 'Contents1',
- 'file1.txt', 'Contents2'
- ],
- [
- 'file1.txt', 'Contents1', 'Duplicate file `file1.txt` with different contents:\n'
- ]
- );
- testDedupe(
- {same: false},
- [
- 'file1.txt', 'Contents1',
- 'file1.txt', 'Contents2'
- ],
- [
- 'file1.txt', 'Contents1'
- ]
- );
- function testDedupe(options, files, results) {
- var stream = dedupe(options);
- it('should dedupe files', function(done) {
- stream.on('data', function (file) {
- var expectedFilename = results.shift(),
- expectedHead = results.shift();
- should.exist(file);
- should.exist(file.relative);
- should.exist(file.contents);
- should.exist(expectedFilename);
- should.exist(expectedHead);
- var retFilename = path.resolve(file.path);
- retFilename.should.equal(path.resolve(expectedFilename));
- file.relative.should.equal(expectedFilename);
- Buffer.isBuffer(file.contents).should.equal(true);
- file.contents.toString().substring(0, expectedHead.length).should.equal(expectedHead);
- if (results && !results.length) {
- results = null;
- done();
- }
- });
- stream.on('error', function(err) {
- var expected = results.shift();
- var msg = (err.message || '').substring(0, expected.length);
- msg.should.equal(expected);
- });
- while (files.length) {
- stream.write(new File({
- path: files.shift(),
- contents: new Buffer(files.shift())
- }));
- }
- stream.end();
- if (results && !results.length) {
- results = null;
- done();
- }
- });
- }
- });
- });
|