summaryrefslogtreecommitdiffstats
path: root/node_modules/node-sass/scripts/coverage.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/node-sass/scripts/coverage.js')
-rw-r--r--node_modules/node-sass/scripts/coverage.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/node_modules/node-sass/scripts/coverage.js b/node_modules/node-sass/scripts/coverage.js
new file mode 100644
index 0000000..33836e9
--- /dev/null
+++ b/node_modules/node-sass/scripts/coverage.js
@@ -0,0 +1,85 @@
+/*!
+ * node-sass: scripts/coverage.js
+ */
+
+var Mocha = require('mocha'),
+ fs = require('fs'),
+ path = require('path'),
+ mkdirp = require('mkdirp'),
+ coveralls = require('coveralls'),
+ istanbul = require('istanbul'),
+ sourcefiles = ['index.js', 'binding.js', 'extensions.js', 'render.js', 'errors.js'],
+ summary= istanbul.Report.create('text-summary'),
+ lcov = istanbul.Report.create('lcovonly', { dir: path.join('coverage') }),
+ html = istanbul.Report.create('html', { dir: path.join('coverage', 'html') });
+
+function coverage() {
+ var mocha = new Mocha();
+ var rep = function(runner) {
+ runner.on('end', function(){
+ var cov = global.__coverage__,
+ collector = new istanbul.Collector();
+ if (cov) {
+ mkdirp(path.join('coverage', 'html'), function(err) {
+ if (err) { throw err; }
+ collector.add(cov);
+ summary.writeReport(collector, true);
+ html.writeReport(collector, true);
+ lcov.on('done', function() {
+ fs.readFile(path.join('coverage', 'lcov.info'), function(err, data) {
+ if (err) { console.error(err); }
+ coveralls.handleInput(data.toString(),
+ function (err) { if (err) { console.error(err); } });
+ });
+ });
+ lcov.writeReport(collector, true);
+ });
+ } else {
+ console.warn('No coverage');
+ }
+ });
+ };
+ var instrumenter = new istanbul.Instrumenter();
+ var instrumentedfiles = [];
+ var processfile = function(source) {
+ fs.readFile(path.join('lib', source), function(err, data) {
+ if (err) { throw err; }
+ mkdirp('lib-cov', function(err) {
+ if (err) { throw err; }
+ fs.writeFile(path.join('lib-cov', source),
+ instrumenter.instrumentSync(data.toString(),
+ path.join('lib', source)),
+ function(err) {
+ if (err) { throw err; }
+ instrumentedfiles.push(source);
+ if (instrumentedfiles.length === sourcefiles.length) {
+ fs.readdirSync('test').filter(function(file){
+ return file.substr(-6) === 'api.js' ||
+ file.substr(-11) === 'runtime.js' ||
+ file.substr(-7) === 'spec.js';
+ }).forEach(function(file){
+ mocha.addFile(
+ path.join('test', file)
+ );
+ });
+ process.env.NODESASS_COV = 1;
+ mocha.reporter(rep).run(function(failures) {
+ process.on('exit', function () {
+ process.exit(failures);
+ });
+ });
+ }
+ });
+ });
+ });
+ };
+ for (var i in sourcefiles) {
+ processfile(sourcefiles[i]);
+ }
+}
+
+/**
+ * Run
+ */
+
+coverage();