-
Notifications
You must be signed in to change notification settings - Fork 248
/
Copy pathrunner.js
46 lines (41 loc) · 1.3 KB
/
runner.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
* Module dependencies.
*/
var stylus = require('stylus'),
nib = require('../'),
expect = require('chai').expect,
fs = require('fs');
/**
* Read test/cases directory and filter all `.styl` files, then remove
* this extension for each file in the collection and prepare to test.
*/
var cases = fs.readdirSync('test/cases').filter(function(file){
return ~file.indexOf('.styl'); // bitwise flip to treat result as truthy.
}).map(function(file){
return file.replace('.styl', '');
});
/*
* For each `.styl` and `.css` pair in `test/cases`, compile stylus to css
* and compare actual result to expected css.
*/
describe('integration', function(){
cases.forEach(function(test){
var name = test.replace(/[-.]/g, ' ');
it(name, function(){
var path = 'test/cases/' + test + '.styl';
var styl = fs.readFileSync(path, 'utf8').replace(/\r/g, '');
var css = fs.readFileSync('test/cases/' + test + '.css', 'utf8').replace(/\r/g, '').trim();
var style = stylus(styl)
.use(nib())
.set('filename', path)
.define('url', stylus.url());
if (~test.indexOf('compress')) {
style.set('compress', true);
}
style.render(function(err, actual){
if (err) throw err;
expect(actual.trim()).equal(css);
});
});
});
});