-
Notifications
You must be signed in to change notification settings - Fork 272
Expand file tree
/
Copy pathcases.js
More file actions
44 lines (37 loc) · 1.29 KB
/
cases.js
File metadata and controls
44 lines (37 loc) · 1.29 KB
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
var fs = require('fs');
var path = require('path');
var parse = require('../').parse;
var stringify = require('../').stringify;
var cases = fs.readdirSync(path.join(__dirname, 'cases'));
cases.forEach(function(name) {
describe('cases/' + name, function() {
var dir = path.join(__dirname, 'cases', name);
var inputFile = path.join(dir, 'input.css');
var astFile = path.join(dir, 'ast.json');
var outputFile = path.join(dir, 'output.css');
var compressedFile = path.join(dir, 'compressed.css');
it('should match ast.json', function() {
var ast = parseInput();
ast.should.containDeep(JSON.parse(readFile(astFile)));
});
it('should match output.css', function() {
var output = stringify(parseInput());
output.should.equal(readFile(outputFile).trim());
});
it('should match compressed.css', function() {
var compressed = stringify(parseInput(), { compress: true });
compressed.should.equal(readFile(compressedFile));
});
function parseInput() {
return parse(readFile(inputFile), { source: 'input.css' });
}
});
});
function readFile(file) {
var src = fs.readFileSync(file, 'utf8');
// normalize line endings
src = src.replace(/\r\n/, '\n');
// remove trailing newline
src = src.replace(/\n$/, '');
return src;
}