From f8a75e6adfae1149285220a1e1d3e33885fc90ca Mon Sep 17 00:00:00 2001 From: xzyfer Date: Mon, 5 Oct 2015 13:59:19 +1100 Subject: [PATCH] An empty Sass file should produce an empty CSS file Currently if the input file is blank we bail out early, returning the input file object. This causes gulp to simply copy the input Sass file. We instead need to rewrite the file extension to .css. Fixes #352 --- index.js | 1 + test/main.js | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/index.js b/index.js index 97f907d..47c760e 100644 --- a/index.js +++ b/index.js @@ -29,6 +29,7 @@ var gulpSass = function gulpSass(options, sync) { return cb(); } if (!file.contents.length) { + file.path = gutil.replaceExtension(file.path, '.css'); return cb(null, file); } diff --git a/test/main.js b/test/main.js index 850debd..3b1b3d3 100644 --- a/test/main.js +++ b/test/main.js @@ -56,6 +56,23 @@ describe('gulp-sass -- async compile', function() { stream.write(streamFile); }); + 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); + }); + it('should compile a single sass file', function(done) { var sassFile = createVinyl('mixins.scss'); var stream = sass(); @@ -462,6 +479,14 @@ describe('gulp-sass -- sync compile', function() { gulp.src(path.join(__dirname, '/scss/empty.scss')) .pipe(sass.sync()) .pipe(gulp.dest(path.join(__dirname, '/results/'))) + .pipe(tap(function() { + try { + fs.statSync(path.join(__dirname, '/results/empty.css')); + } + catch (e) { + should.fail(false, true, 'Empty file was produced'); + } + })) .on('end', done); }); });