Skip to content

Commit 8f0b52e

Browse files
committed
Add test case generator script
1 parent a20f6ba commit 8f0b52e

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

generate-tests.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Generates missing output source and AST files for the test cases
2+
// IMPORTANT: Always verify the generated files when using this!
3+
4+
var fs = require('fs');
5+
var path = require('path');
6+
var parse = require('./').parse;
7+
var stringify = require('./').stringify;
8+
9+
var casesDir = path.join(__dirname, 'test', 'cases');
10+
var cases = fs.readdirSync(casesDir)
11+
.map(function(f) { return path.join(casesDir, f); });
12+
13+
cases.forEach(function(dir) {
14+
var inputFile = path.join(dir, 'input.css');
15+
if (!fs.existsSync(inputFile))
16+
throw new Error('Missing input file ' + inputFile);
17+
18+
var input = fs.readFileSync(inputFile, 'utf8');
19+
var parsed;
20+
try {
21+
parsed = parse(input, { source: 'input.css' });
22+
} catch(e) {
23+
console.log('Failed to parse', inputFile);
24+
throw e;
25+
}
26+
27+
var outputFile = path.join(dir, 'output.css');
28+
if (!fs.existsSync(outputFile)) {
29+
console.log('Generating', outputFile);
30+
var output = stringify(parsed);
31+
fs.writeFileSync(outputFile, output, 'utf8');
32+
}
33+
34+
var compressedFile = path.join(dir, 'compressed.css');
35+
if (!fs.existsSync(compressedFile)) {
36+
console.log('Generating', compressedFile);
37+
var compressed = stringify(parsed, { compress: true });
38+
fs.writeFileSync(compressedFile, compressed, 'utf8');
39+
}
40+
41+
var astFile = path.join(dir, 'ast.json');
42+
if (!fs.existsSync(astFile)) {
43+
console.log('Generating', astFile);
44+
var ast = JSON.stringify(parsed, null, ' ');
45+
fs.writeFileSync(astFile, ast, 'utf8');
46+
}
47+
});

0 commit comments

Comments
 (0)