130 lines
4.4 KiB
JavaScript
130 lines
4.4 KiB
JavaScript
var expect = require('chai').expect,
|
|
through = require('through2'),
|
|
Vinyl = require('vinyl'),
|
|
fs = require('fs'),
|
|
path = require('path'),
|
|
concatCss = require('../');
|
|
|
|
|
|
function expected(file) {
|
|
var base = path.join(process.cwd(), 'test/expected');
|
|
var filepath = path.resolve(base, file);
|
|
return new Vinyl({
|
|
path: filepath,
|
|
cwd: process.cwd(),
|
|
base: base,
|
|
contents: fs.readFileSync(filepath)
|
|
});
|
|
}
|
|
|
|
function fixture(file) {
|
|
var base = path.join(process.cwd(), 'test/fixtures');
|
|
var filepath = path.join(base, file);
|
|
return new Vinyl({
|
|
path: filepath,
|
|
cwd: process.cwd(),
|
|
base: base,
|
|
contents: fs.readFileSync(filepath)
|
|
});
|
|
}
|
|
|
|
describe('gulp-concat-css', function() {
|
|
it('should only bubble up imports', function(done) {
|
|
var now = Date.now();
|
|
var stream = concatCss('build/bundle-bubbleonly.css', {inlineImports: false, rebaseUrls: false});
|
|
var expectedFile = expected('build/bundle-bubbleonly.css');
|
|
stream
|
|
.pipe(through.obj(function(file, enc, cb) {
|
|
//fs.writeFileSync("bundle.css", file.contents);
|
|
|
|
expect(String(file.contents)).to.be.equal(String(expectedFile.contents));
|
|
expect(path.basename(file.path)).to.be.equal(path.basename(expectedFile.path));
|
|
expect(file.cwd, "cwd").to.be.equal(expectedFile.cwd);
|
|
expect(file.relative, "relative").to.be.equal(expectedFile.relative);
|
|
console.log('Execution time: ' + (Date.now() - now) + 'ms');
|
|
done();
|
|
}));
|
|
|
|
stream.write(fixture('main.css'));
|
|
stream.write(fixture('vendor/vendor.css'));
|
|
stream.end();
|
|
});
|
|
|
|
it('should only rebase urls', function(done) {
|
|
var now = Date.now();
|
|
var stream = concatCss('build/bundle-rebase.css', {inlineImports: false});
|
|
var expectedFile = expected('build/bundle-rebase.css');
|
|
stream
|
|
.pipe(through.obj(function(file, enc, cb) {
|
|
//fs.writeFileSync("bundle.css", file.contents);
|
|
|
|
expect(String(file.contents)).to.be.equal(String(expectedFile.contents));
|
|
expect(path.basename(file.path)).to.be.equal(path.basename(expectedFile.path));
|
|
expect(file.cwd, "cwd").to.be.equal(expectedFile.cwd);
|
|
expect(file.relative, "relative").to.be.equal(expectedFile.relative);
|
|
console.log('Execution time: ' + (Date.now() - now) + 'ms');
|
|
done();
|
|
}));
|
|
|
|
stream.write(fixture('main.css'));
|
|
stream.write(fixture('vendor/vendor.css'));
|
|
stream.end();
|
|
});
|
|
|
|
|
|
it('should only inline imports', function(done) {
|
|
var now = Date.now();
|
|
var stream = concatCss('build/bundle-import.css', {inlineImports: true, rebaseUrls: false});
|
|
var expectedFile = expected('build/bundle-import.css');
|
|
stream
|
|
.pipe(through.obj(function(file, enc, cb) {
|
|
//fs.writeFileSync("bundle.css", file.contents);
|
|
|
|
expect(String(file.contents)).to.be.equal(String(expectedFile.contents));
|
|
expect(path.basename(file.path)).to.be.equal(path.basename(expectedFile.path));
|
|
expect(file.cwd, "cwd").to.be.equal(expectedFile.cwd);
|
|
expect(file.relative, "relative").to.be.equal(expectedFile.relative);
|
|
console.log('Execution time: ' + (Date.now() - now) + 'ms');
|
|
done();
|
|
}));
|
|
|
|
stream.write(fixture('main.css'));
|
|
stream.write(fixture('vendor/vendor.css'));
|
|
stream.end();
|
|
});
|
|
|
|
it('should concat, rebase urls, inline imports and bubble up external imports', function(done) {
|
|
var now = Date.now();
|
|
var stream = concatCss('build/bundle-all.css');
|
|
var expectedFile = expected('build/bundle-all.css');
|
|
stream
|
|
.pipe(through.obj(function(file, enc, cb) {
|
|
//fs.writeFileSync("bundle.css", file.contents);
|
|
expect(String(file.contents)).to.be.equal(String(expectedFile.contents));
|
|
expect(path.basename(file.path)).to.be.equal(path.basename(expectedFile.path));
|
|
expect(file.cwd, "cwd").to.be.equal(expectedFile.cwd);
|
|
expect(file.relative, "relative").to.be.equal(expectedFile.relative);
|
|
console.log('Execution time: ' + (Date.now() - now) + 'ms');
|
|
done();
|
|
}));
|
|
|
|
stream.write(fixture('main.css'));
|
|
stream.write(fixture('vendor/vendor.css'));
|
|
stream.end();
|
|
});
|
|
|
|
it('should not crash if no file is provided', function(done) {
|
|
var stream = concatCss('build/bundle-all.css');
|
|
stream
|
|
.on('error', function() {
|
|
done(false);
|
|
})
|
|
.pipe(through.obj(function(file, enc, cb) {
|
|
done(false);
|
|
}, function() {
|
|
done();
|
|
}));
|
|
|
|
stream.end();
|
|
});
|
|
});
|