2015-03-24 11:53:01 +01:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var should = require('should');
|
|
|
|
var gutil = require('gulp-util');
|
|
|
|
var path = require('path');
|
|
|
|
var fs = require('fs');
|
|
|
|
var sass = require('../index');
|
2015-10-05 06:11:19 +02:00
|
|
|
var rimraf = require('rimraf');
|
2015-05-09 12:12:13 +02:00
|
|
|
var gulp = require('gulp');
|
|
|
|
var sourcemaps = require('gulp-sourcemaps');
|
|
|
|
var postcss = require('gulp-postcss');
|
|
|
|
var autoprefixer = require('autoprefixer-core');
|
|
|
|
var tap = require('gulp-tap');
|
2015-07-15 20:00:56 +02:00
|
|
|
var globule = require('globule');
|
2015-03-23 23:01:12 +01:00
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
var createVinyl = function createVinyl(filename, contents) {
|
|
|
|
var base = path.join(__dirname, 'scss');
|
2015-03-23 23:01:12 +01:00
|
|
|
var filePath = path.join(base, filename);
|
|
|
|
|
|
|
|
return new gutil.File({
|
2015-03-24 11:53:01 +01:00
|
|
|
'cwd': __dirname,
|
|
|
|
'base': base,
|
|
|
|
'path': filePath,
|
|
|
|
'contents': contents || fs.readFileSync(filePath)
|
2015-03-23 23:01:12 +01:00
|
|
|
});
|
2015-03-24 11:53:01 +01:00
|
|
|
};
|
2015-03-23 23:01:12 +01:00
|
|
|
|
2015-03-27 00:40:09 +01:00
|
|
|
describe('gulp-sass -- async compile', function() {
|
2015-03-24 11:53:01 +01:00
|
|
|
it('should pass file when it isNull()', function(done) {
|
2015-03-23 23:01:12 +01:00
|
|
|
var stream = sass();
|
|
|
|
var emptyFile = {
|
2015-03-24 11:53:01 +01:00
|
|
|
'isNull': function () {
|
|
|
|
return true;
|
|
|
|
}
|
2015-03-23 23:01:12 +01:00
|
|
|
};
|
|
|
|
stream.on('data', function(data) {
|
|
|
|
data.should.equal(emptyFile);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(emptyFile);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should emit error when file isStream()', function (done) {
|
|
|
|
var stream = sass();
|
|
|
|
var streamFile = {
|
2015-03-24 11:53:01 +01:00
|
|
|
'isNull': function () {
|
|
|
|
return false;
|
|
|
|
},
|
|
|
|
'isStream': function () {
|
|
|
|
return true;
|
|
|
|
}
|
2015-03-23 23:01:12 +01:00
|
|
|
};
|
|
|
|
stream.on('error', function(err) {
|
|
|
|
err.message.should.equal('Streaming not supported');
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(streamFile);
|
|
|
|
});
|
|
|
|
|
2015-10-05 04:59:19 +02:00
|
|
|
it('should compile an empty sass file', function(done) {
|
|
|
|
var sassFile = createVinyl('empty.scss');
|
|
|
|
var stream = sass();
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
should.equal(path.basename(cssFile.path), 'empty.css');
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, 'expected/empty.css'), 'utf8')
|
|
|
|
);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
it('should compile a single sass file', function(done) {
|
|
|
|
var sassFile = createVinyl('mixins.scss');
|
2015-03-23 23:01:12 +01:00
|
|
|
var stream = sass();
|
2015-03-24 11:53:01 +01:00
|
|
|
stream.on('data', function(cssFile) {
|
2015-03-23 23:01:12 +01:00
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, 'expected/mixins.css'), 'utf8')
|
|
|
|
);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
it('should compile multiple sass files', function(done) {
|
2015-03-23 23:01:12 +01:00
|
|
|
var files = [
|
|
|
|
createVinyl('mixins.scss'),
|
|
|
|
createVinyl('variables.scss')
|
|
|
|
];
|
|
|
|
var stream = sass();
|
|
|
|
var mustSee = files.length;
|
2015-03-24 11:53:01 +01:00
|
|
|
var expectedPath = 'expected/mixins.css';
|
2015-03-23 23:01:12 +01:00
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
stream.on('data', function(cssFile) {
|
2015-03-23 23:01:12 +01:00
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
2015-03-24 11:53:01 +01:00
|
|
|
if (cssFile.path.indexOf('variables') !== -1) {
|
2015-03-23 23:01:12 +01:00
|
|
|
expectedPath = 'expected/variables.css';
|
|
|
|
}
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, expectedPath), 'utf8')
|
|
|
|
);
|
|
|
|
mustSee--;
|
|
|
|
if (mustSee <= 0) {
|
|
|
|
done();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
files.forEach(function (file) {
|
|
|
|
stream.write(file);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
it('should compile files with partials in another folder', function(done) {
|
|
|
|
var sassFile = createVinyl('inheritance.scss');
|
2015-03-23 23:01:12 +01:00
|
|
|
var stream = sass();
|
2015-03-24 11:53:01 +01:00
|
|
|
stream.on('data', function(cssFile) {
|
2015-03-23 23:01:12 +01:00
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, 'expected/inheritance.css'), 'utf8')
|
|
|
|
);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
it('should handle sass errors', function(done) {
|
|
|
|
var errorFile = createVinyl('error.scss');
|
2015-03-23 23:01:12 +01:00
|
|
|
var stream = sass();
|
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
stream.on('error', function(err) {
|
2015-05-10 11:27:08 +02:00
|
|
|
// Error must include message body
|
2015-03-30 14:11:00 +02:00
|
|
|
err.message.indexOf('property "font" must be followed by a \':\'').should.not.equal(-1);
|
2015-05-10 11:27:08 +02:00
|
|
|
// Error must include file error occurs in
|
|
|
|
err.message.indexOf('test/scss/error.scss').should.not.equal(-1);
|
|
|
|
// Error must include line and column error occurs on
|
2015-10-25 14:54:01 +01:00
|
|
|
err.message.indexOf('on line 2').should.not.equal(-1);
|
2015-03-23 23:01:12 +01:00
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(errorFile);
|
|
|
|
});
|
|
|
|
|
2015-04-01 17:07:33 +02:00
|
|
|
it('should compile a single sass file if the file name has been changed in the stream', function(done) {
|
|
|
|
var sassFile = createVinyl('mixins.scss');
|
|
|
|
var stream;
|
|
|
|
|
|
|
|
// Transform file name
|
|
|
|
sassFile.path = path.join(path.join(__dirname, 'scss'), 'mixin--changed.scss');
|
|
|
|
|
|
|
|
stream = sass();
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
cssFile.path.split('/').pop().should.equal('mixin--changed.css');
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, 'expected/mixins.css'), 'utf8')
|
|
|
|
);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should preserve changes made in-stream to a Sass file', function(done) {
|
|
|
|
var sassFile = createVinyl('mixins.scss');
|
|
|
|
var stream;
|
|
|
|
|
|
|
|
// Transform file name
|
|
|
|
sassFile.contents = new Buffer('/* Added Dynamically */' + sassFile.contents.toString());
|
|
|
|
|
|
|
|
stream = sass();
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
String(cssFile.contents).should.equal('/* Added Dynamically */\n' +
|
|
|
|
fs.readFileSync(path.join(__dirname, 'expected/mixins.css'), 'utf8')
|
|
|
|
);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
it('should work with gulp-sourcemaps', function(done) {
|
|
|
|
var sassFile = createVinyl('inheritance.scss');
|
2015-03-24 10:41:16 +01:00
|
|
|
|
|
|
|
// Expected sources are relative to file.base
|
|
|
|
var expectedSources = [
|
|
|
|
'includes/_cats.scss',
|
2015-03-25 20:49:52 +01:00
|
|
|
'includes/_dogs.sass',
|
2015-03-24 10:41:16 +01:00
|
|
|
'inheritance.scss'
|
|
|
|
];
|
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
var stream;
|
|
|
|
|
2015-03-24 10:41:16 +01:00
|
|
|
sassFile.sourceMap = '{' +
|
|
|
|
'"version": 3,' +
|
2015-03-24 11:53:01 +01:00
|
|
|
'"file": "scss/subdir/multilevelimport.scss",' +
|
2015-03-24 10:41:16 +01:00
|
|
|
'"names": [],' +
|
|
|
|
'"mappings": "",' +
|
2015-03-24 11:53:01 +01:00
|
|
|
'"sources": [ "scss/subdir/multilevelimport.scss" ],' +
|
|
|
|
'"sourcesContent": [ "@import ../inheritance;" ]' +
|
2015-03-24 10:41:16 +01:00
|
|
|
'}';
|
|
|
|
|
2015-03-24 11:53:01 +01:00
|
|
|
stream = sass();
|
|
|
|
stream.on('data', function(cssFile) {
|
2015-03-24 10:41:16 +01:00
|
|
|
should.exist(cssFile.sourceMap);
|
2015-03-25 20:49:52 +01:00
|
|
|
cssFile.sourceMap.sources.should.eql(expectedSources);
|
2015-03-24 10:41:16 +01:00
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
2015-03-23 23:01:12 +01:00
|
|
|
});
|
2015-03-24 23:36:26 +01:00
|
|
|
|
|
|
|
it('should compile a single indented sass file', function(done) {
|
|
|
|
var sassFile = createVinyl('indent.sass');
|
|
|
|
var stream = sass();
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, 'expected/indent.css'), 'utf8')
|
|
|
|
);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse files in sass and scss', function(done) {
|
|
|
|
var files = [
|
|
|
|
createVinyl('mixins.scss'),
|
|
|
|
createVinyl('indent.sass')
|
|
|
|
];
|
|
|
|
var stream = sass();
|
|
|
|
var mustSee = files.length;
|
|
|
|
var expectedPath = 'expected/mixins.css';
|
|
|
|
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
if (cssFile.path.indexOf('indent') !== -1) {
|
|
|
|
expectedPath = 'expected/indent.css';
|
|
|
|
}
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, expectedPath), 'utf8')
|
|
|
|
);
|
|
|
|
mustSee--;
|
|
|
|
if (mustSee <= 0) {
|
|
|
|
done();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
files.forEach(function (file) {
|
|
|
|
stream.write(file);
|
|
|
|
});
|
|
|
|
});
|
2015-03-23 23:01:12 +01:00
|
|
|
});
|
2015-03-27 00:40:09 +01:00
|
|
|
|
|
|
|
describe('gulp-sass -- sync compile', function() {
|
2015-10-05 06:11:19 +02:00
|
|
|
beforeEach(function(done) {
|
|
|
|
rimraf(path.join(__dirname, '/results/'), done);
|
|
|
|
});
|
|
|
|
|
2015-03-27 00:40:09 +01:00
|
|
|
it('should pass file when it isNull()', function(done) {
|
|
|
|
var stream = sass.sync();
|
|
|
|
var emptyFile = {
|
|
|
|
'isNull': function () {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
stream.on('data', function(data) {
|
|
|
|
data.should.equal(emptyFile);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(emptyFile);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should emit error when file isStream()', function (done) {
|
|
|
|
var stream = sass.sync();
|
|
|
|
var streamFile = {
|
|
|
|
'isNull': function () {
|
|
|
|
return false;
|
|
|
|
},
|
|
|
|
'isStream': function () {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
stream.on('error', function(err) {
|
|
|
|
err.message.should.equal('Streaming not supported');
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(streamFile);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should compile a single sass file', function(done) {
|
|
|
|
var sassFile = createVinyl('mixins.scss');
|
|
|
|
var stream = sass.sync();
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, 'expected/mixins.css'), 'utf8')
|
|
|
|
);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should compile multiple sass files', function(done) {
|
|
|
|
var files = [
|
|
|
|
createVinyl('mixins.scss'),
|
|
|
|
createVinyl('variables.scss')
|
|
|
|
];
|
|
|
|
var stream = sass.sync();
|
|
|
|
var mustSee = files.length;
|
|
|
|
var expectedPath = 'expected/mixins.css';
|
|
|
|
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
if (cssFile.path.indexOf('variables') !== -1) {
|
|
|
|
expectedPath = 'expected/variables.css';
|
|
|
|
}
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, expectedPath), 'utf8')
|
|
|
|
);
|
|
|
|
mustSee--;
|
|
|
|
if (mustSee <= 0) {
|
|
|
|
done();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
files.forEach(function (file) {
|
|
|
|
stream.write(file);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should compile files with partials in another folder', function(done) {
|
|
|
|
var sassFile = createVinyl('inheritance.scss');
|
|
|
|
var stream = sass.sync();
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile);
|
|
|
|
should.exist(cssFile.path);
|
|
|
|
should.exist(cssFile.relative);
|
|
|
|
should.exist(cssFile.contents);
|
|
|
|
String(cssFile.contents).should.equal(
|
|
|
|
fs.readFileSync(path.join(__dirname, 'expected/inheritance.css'), 'utf8')
|
|
|
|
);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should handle sass errors', function(done) {
|
|
|
|
var errorFile = createVinyl('error.scss');
|
|
|
|
var stream = sass.sync();
|
|
|
|
|
|
|
|
stream.on('error', function(err) {
|
2015-03-30 14:11:00 +02:00
|
|
|
err.message.indexOf('property "font" must be followed by a \':\'').should.not.equal(-1);
|
2015-03-27 00:40:09 +01:00
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(errorFile);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should work with gulp-sourcemaps', function(done) {
|
|
|
|
var sassFile = createVinyl('inheritance.scss');
|
|
|
|
|
|
|
|
// Expected sources are relative to file.base
|
|
|
|
var expectedSources = [
|
|
|
|
'includes/_cats.scss',
|
2015-03-31 16:44:22 +02:00
|
|
|
'includes/_dogs.sass',
|
2015-03-27 00:40:09 +01:00
|
|
|
'inheritance.scss'
|
|
|
|
];
|
|
|
|
|
|
|
|
var stream;
|
|
|
|
|
|
|
|
sassFile.sourceMap = '{' +
|
|
|
|
'"version": 3,' +
|
|
|
|
'"file": "scss/subdir/multilevelimport.scss",' +
|
|
|
|
'"names": [],' +
|
|
|
|
'"mappings": "",' +
|
|
|
|
'"sources": [ "scss/subdir/multilevelimport.scss" ],' +
|
|
|
|
'"sourcesContent": [ "@import ../inheritance;" ]' +
|
|
|
|
'}';
|
|
|
|
|
|
|
|
stream = sass.sync();
|
|
|
|
stream.on('data', function(cssFile) {
|
|
|
|
should.exist(cssFile.sourceMap);
|
2015-03-31 16:44:22 +02:00
|
|
|
cssFile.sourceMap.sources.should.eql(expectedSources);
|
2015-03-27 00:40:09 +01:00
|
|
|
done();
|
|
|
|
});
|
|
|
|
stream.write(sassFile);
|
|
|
|
});
|
2015-05-09 12:12:13 +02:00
|
|
|
|
|
|
|
it('should work with gulp-sourcemaps and autoprefixer', function(done) {
|
|
|
|
var expectedSources = [
|
|
|
|
'includes/_cats.scss',
|
|
|
|
'includes/_dogs.sass',
|
|
|
|
'inheritance.scss'
|
|
|
|
];
|
|
|
|
|
|
|
|
gulp.src(path.join(__dirname, '/scss/inheritance.scss'))
|
|
|
|
.pipe(sourcemaps.init())
|
|
|
|
.pipe(sass.sync())
|
|
|
|
.pipe(tap(function(file) {
|
|
|
|
should.exist(file.sourceMap);
|
|
|
|
file.sourceMap.sources.should.eql(expectedSources);
|
|
|
|
}))
|
|
|
|
.pipe(postcss([autoprefixer()]))
|
|
|
|
.pipe(sourcemaps.write())
|
|
|
|
.pipe(gulp.dest(path.join(__dirname, '/results/')))
|
|
|
|
.pipe(tap(function(file) {
|
|
|
|
should.exist(file.sourceMap);
|
|
|
|
file.sourceMap.sources.should.eql(expectedSources);
|
|
|
|
}))
|
|
|
|
.on('end', done);
|
|
|
|
});
|
2015-06-10 23:45:12 +02:00
|
|
|
|
2015-07-15 20:00:56 +02:00
|
|
|
it('should work with gulp-sourcemaps and a globbed source', function(done) {
|
|
|
|
var files, filesContent, actualContent, expectedContent, globPath;
|
|
|
|
files = globule.find(path.join(__dirname, '/scss/globbed/**/*.scss'));
|
|
|
|
filesContent = {};
|
|
|
|
files.forEach(function(file) {
|
|
|
|
globPath = file.replace(path.join(__dirname, '/scss/globbed/'), '');
|
|
|
|
filesContent[globPath] = fs.readFileSync(file, 'utf8');
|
|
|
|
});
|
|
|
|
gulp.src(path.join(__dirname, '/scss/globbed/**/*.scss'))
|
|
|
|
.pipe(sourcemaps.init())
|
|
|
|
.pipe(sass.sync())
|
|
|
|
.pipe(tap(function(file) {
|
|
|
|
should.exist(file.sourceMap);
|
|
|
|
actualContent = file.sourceMap.sourcesContent[0];
|
|
|
|
expectedContent = filesContent[file.sourceMap.sources[0]];
|
|
|
|
actualContent.should.eql(expectedContent);
|
|
|
|
}))
|
|
|
|
.on('end', done);
|
|
|
|
});
|
|
|
|
|
2015-07-12 21:32:17 +02:00
|
|
|
it('should work with gulp-sourcemaps and autoprefixer with different file.base', function(done) {
|
|
|
|
var expectedSources = [
|
2015-07-30 18:33:15 +02:00
|
|
|
'scss/includes/_cats.scss',
|
|
|
|
'scss/includes/_dogs.sass',
|
2015-07-12 21:32:17 +02:00
|
|
|
'scss/inheritance.scss'
|
|
|
|
];
|
|
|
|
|
|
|
|
gulp.src(path.join(__dirname, '/scss/inheritance.scss'), { 'base': 'test' })
|
|
|
|
.pipe(sourcemaps.init())
|
|
|
|
.pipe(sass.sync())
|
|
|
|
.pipe(tap(function(file) {
|
|
|
|
should.exist(file.sourceMap);
|
|
|
|
file.sourceMap.sources.should.eql(expectedSources);
|
|
|
|
}))
|
|
|
|
.pipe(postcss([autoprefixer()]))
|
|
|
|
.pipe(tap(function(file) {
|
|
|
|
should.exist(file.sourceMap);
|
|
|
|
file.sourceMap.sources.should.eql(expectedSources);
|
|
|
|
}))
|
|
|
|
.on('end', done);
|
|
|
|
});
|
|
|
|
|
2015-06-10 23:45:12 +02:00
|
|
|
it('should work with empty files', function(done) {
|
|
|
|
gulp.src(path.join(__dirname, '/scss/empty.scss'))
|
|
|
|
.pipe(sass.sync())
|
|
|
|
.pipe(gulp.dest(path.join(__dirname, '/results/')))
|
2015-10-05 04:59:19 +02:00
|
|
|
.pipe(tap(function() {
|
|
|
|
try {
|
|
|
|
fs.statSync(path.join(__dirname, '/results/empty.css'));
|
|
|
|
}
|
|
|
|
catch (e) {
|
|
|
|
should.fail(false, true, 'Empty file was produced');
|
|
|
|
}
|
|
|
|
}))
|
2015-06-10 23:45:12 +02:00
|
|
|
.on('end', done);
|
|
|
|
});
|
2015-03-27 00:40:09 +01:00
|
|
|
});
|