123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/env node
- /**
- * Generate `.json` test files.
- * Usage: `./bin/generate-tests.js <syntax name> [<syntax name>]`.
- * Example: `./bin/generate-tests.js scss less`.
- */
- var gonzales = require('..'),
- fs = require('fs'),
- path = require('path'),
- syntaxList = process.argv.slice(2);
- syntaxList.forEach(function (s) {
- var syntaxDir = 'test/' + s;
- var extension = '.' + s;
- fs.readdirSync(syntaxDir).forEach(function(testDir) {
- fs.readdirSync(path.join(syntaxDir, testDir)).forEach(function(file) {
- if (path.extname(file) !== extension) return;
- try {
- generateTest(path.join(syntaxDir, testDir, file));
- } catch (e) {
- console.log('*', path.join(syntaxDir, testDir, file));
- }
- });
- });
- });
- function generateTest(filePath) {
- var testDir = path.dirname(filePath);
- var rule = path.basename(testDir);
- var syntax = path.basename(path.dirname(testDir));
- var fileName = path.basename(filePath, '.' + syntax);
- var inputPath = path.join(testDir, fileName + '.' + syntax);
- var outputPath = path.join(testDir, fileName + '.json');
- var string = fs.readFileSync(inputPath, 'utf-8').trim();
- var ast = gonzales.parse(string, {syntax: syntax, rule: rule});
- fs.writeFileSync(outputPath, ast.toString());
- }
|