Comparing version 0.4.0 to 0.4.1
10
index.js
@@ -18,3 +18,3 @@ var es = require('event-stream') | ||
if (file.isNull()) { | ||
return cb(); | ||
return cb(null, file); | ||
} | ||
@@ -29,11 +29,11 @@ | ||
cb(null, file); | ||
} | ||
}; | ||
opts.error = function (err) { | ||
if (opts.errLogToConsole) { | ||
gutil.log('[gulp-sass] ' + err) | ||
gutil.log('[gulp-sass] ' + err); | ||
return cb(); | ||
} | ||
return cb(new gutil.PluginError('gulp-sass', err)); | ||
} | ||
}; | ||
@@ -44,2 +44,2 @@ sass.render(opts); | ||
return es.map(nodeSass); | ||
} | ||
}; |
{ | ||
"name": "gulp-sass", | ||
"version": "0.4.0", | ||
"version": "0.4.1", | ||
"description": "Gulp plugin for sass", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "node test/test.js" | ||
}, | ||
"repository": { | ||
@@ -11,3 +14,5 @@ "type": "git", | ||
"keywords": [ | ||
"gulpplugin" | ||
"gulpplugin", | ||
"sass", | ||
"gulp" | ||
], | ||
@@ -26,6 +31,8 @@ "author": "David Manning", | ||
"devDependencies": { | ||
"gulp": "~3.2.3", | ||
"tape": "~2.3.2", | ||
"concat-stream": "~1.4.1" | ||
}, | ||
"jshintConfig": { | ||
"laxcomma": true | ||
} | ||
} |
116
test/test.js
@@ -0,32 +1,98 @@ | ||
var assert = require('assert'); | ||
var gsass = require('../'); | ||
var gutil = require('gulp-util'); | ||
var fs = require('fs'); | ||
var path = require('path'); | ||
var fs = require('fs'); | ||
var assert = require('assert'); | ||
var test = require('tape'); | ||
var gulp = require('gulp') | ||
, util = require('gulp-util') | ||
, gulpSass = require('../') | ||
, nodeSass = require('node-sass'); | ||
; | ||
function createVinyl(sassFileName, contents) { | ||
var base = path.join(__dirname, 'scss'); | ||
var filePath = path.join(base, sassFileName); | ||
var includePaths = ['scss/', 'scss/includes'] | ||
return new gutil.File({ | ||
cwd: __dirname, | ||
base: base, | ||
path: filePath, | ||
contents: contents || fs.readFileSync(filePath) | ||
}); | ||
} | ||
gulp.src('./scss/*.scss') | ||
.pipe(gulpSass({includePaths: includePaths})) | ||
.pipe(util.buffer(tapeTester)); | ||
test('pass file when isNull()', function (t) { | ||
var stream = gsass(); | ||
var emptyFile = { | ||
isNull: function () { return true; } | ||
}; | ||
stream.on('data', function (data) { | ||
t.equal(data, emptyFile); | ||
t.end(); | ||
}); | ||
stream.write(emptyFile); | ||
}); | ||
function tapeTester(err, files) { | ||
assert(!err, 'There was an error.'); | ||
files.forEach(function (item) { | ||
var fileBaseName = path.basename(item.path, '.css'); | ||
test('Testing: ' + fileBaseName, function (t) { | ||
var ref = nodeSass.renderSync({ | ||
data: fs.readFileSync('./scss/' + fileBaseName + '.scss').toString(), | ||
includePaths: includePaths | ||
}); | ||
t.equal(item.contents.toString(), ref); | ||
t.end(); | ||
}) | ||
// test('emit error when file isStream()', function (t) { | ||
// var stream = gsass(); | ||
// var streamFile = { | ||
// isNull: function () { return false; }, | ||
// isStream: function () { return true; } | ||
// }; | ||
// stream.on() | ||
// }); | ||
test('compile a single sass file', function (t) { | ||
var sassFile = createVinyl('mixins.scss'); | ||
var stream = gsass(); | ||
stream.on('data', function (cssFile) { | ||
t.ok(cssFile, 'cssFile should exist'); | ||
t.ok(cssFile.path, 'cssFile.path should exist'); | ||
t.ok(cssFile.relative, 'cssFile.relative should exist'); | ||
t.ok(cssFile.contents, 'cssFile.contents should exist'); | ||
t.equal(cssFile.path, path.join(__dirname, 'scss', 'mixins.css')); | ||
t.equal( | ||
fs.readFileSync(path.join(__dirname, 'ref/mixins.css'), 'utf8'), | ||
cssFile.contents.toString(), | ||
'file compiles correctly to css' | ||
); | ||
t.end(); | ||
}) | ||
stream.write(sassFile); | ||
}); | ||
test('compile multiple sass files', function (t) { | ||
var files = [ | ||
createVinyl('inheritance.scss'), | ||
createVinyl('mixins.scss'), | ||
createVinyl('nesting.scss'), | ||
createVinyl('variables.scss') | ||
]; | ||
t.plan(files.length * 4); | ||
var stream = gsass({ | ||
includePaths: [path.join(__dirname, 'scss'), | ||
path.join(__dirname, 'scss/includes')] | ||
}); | ||
} | ||
stream.on('data', function (cssFile) { | ||
t.ok(cssFile, 'cssFile exists'); | ||
t.ok(cssFile.path, 'cssFile.path exists'); | ||
t.ok(cssFile.relative, 'cssFile.relative exists'); | ||
t.ok(cssFile.contents, 'cssFile.contents exists'); | ||
}); | ||
files.forEach(function (file) { | ||
stream.write(file); | ||
}); | ||
}); | ||
test('emit error on sass errors', function (t) { | ||
var stream = gsass(); | ||
var errorFile = createVinyl('somefile.sass', | ||
new Buffer('body { font \'Comic Sans\'; }')); | ||
stream.on('error', function (err) { | ||
t.equal(err.message, | ||
'source string:1: error: property "font" must be followed by a \':\'\n' | ||
); | ||
t.end(); | ||
}); | ||
stream.write(errorFile); | ||
}); |
8374
2
16
151