diff --git a/test/expected/indent.css b/test/expected/indent.css new file mode 100644 index 0000000..39efa47 --- /dev/null +++ b/test/expected/indent.css @@ -0,0 +1,2 @@ +body .div { + color: blue; } diff --git a/test/expected/inheritance.css b/test/expected/inheritance.css index d2c002a..62fc9a3 100644 --- a/test/expected/inheritance.css +++ b/test/expected/inheritance.css @@ -1,6 +1,9 @@ body { background: pink; } +footer { + background: red; } + .error, .badError { border: #f00; background: #fdd; } diff --git a/test/main.js b/test/main.js index ebec4e1..8dc6522 100644 --- a/test/main.js +++ b/test/main.js @@ -5,7 +5,6 @@ var gutil = require('gulp-util'); var path = require('path'); var fs = require('fs'); var sass = require('../index'); -var assert = require('assert'); var createVinyl = function createVinyl(filename, contents) { var base = path.join(__dirname, 'scss'); @@ -131,6 +130,7 @@ describe('gulp-sass -- async compile', function() { // Expected sources are relative to file.base var expectedSources = [ 'includes/_cats.scss', + 'includes/_dogs.sass', 'inheritance.scss' ]; @@ -148,11 +148,58 @@ describe('gulp-sass -- async compile', function() { stream = sass(); stream.on('data', function(cssFile) { should.exist(cssFile.sourceMap); - assert.deepEqual(cssFile.sourceMap.sources, expectedSources); + cssFile.sourceMap.sources.should.eql(expectedSources); done(); }); stream.write(sassFile); }); + + 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); + }); + }); }); describe('gulp-sass -- sync compile', function() { @@ -267,6 +314,7 @@ describe('gulp-sass -- sync compile', function() { // Expected sources are relative to file.base var expectedSources = [ 'includes/_cats.scss', + 'includes/_dogs.sass', 'inheritance.scss' ]; @@ -284,7 +332,7 @@ describe('gulp-sass -- sync compile', function() { stream = sass.sync(); stream.on('data', function(cssFile) { should.exist(cssFile.sourceMap); - assert.deepEqual(cssFile.sourceMap.sources, expectedSources); + cssFile.sourceMap.sources.should.eql(expectedSources); done(); }); stream.write(sassFile); diff --git a/test/scss/includes/_dogs.sass b/test/scss/includes/_dogs.sass new file mode 100644 index 0000000..fbdee6e --- /dev/null +++ b/test/scss/includes/_dogs.sass @@ -0,0 +1,5 @@ +$blue: #3bbfce; +$margin: 16px; + +footer + background: red; diff --git a/test/scss/indent.sass b/test/scss/indent.sass new file mode 100644 index 0000000..1c72199 --- /dev/null +++ b/test/scss/indent.sass @@ -0,0 +1,4 @@ +$color: blue + +body .div + color: $color diff --git a/test/scss/inheritance.scss b/test/scss/inheritance.scss index f42ec79..b2cab38 100644 --- a/test/scss/inheritance.scss +++ b/test/scss/inheritance.scss @@ -1,4 +1,5 @@ @import "includes/cats"; +@import "includes/dogs"; .error { border: #f00;