generate-tests.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env node
  2. /**
  3. * Generate `.json` test files.
  4. * Usage: `./bin/generate-tests.js <syntax name> [<syntax name>]`.
  5. * Example: `./bin/generate-tests.js scss less`.
  6. */
  7. var gonzales = require('..'),
  8. fs = require('fs'),
  9. path = require('path'),
  10. syntaxList = process.argv.slice(2);
  11. syntaxList.forEach(function (s) {
  12. var syntaxDir = 'test/' + s;
  13. var extension = '.' + s;
  14. fs.readdirSync(syntaxDir).forEach(function(testDir) {
  15. fs.readdirSync(path.join(syntaxDir, testDir)).forEach(function(file) {
  16. if (path.extname(file) !== extension) return;
  17. try {
  18. generateTest(path.join(syntaxDir, testDir, file));
  19. } catch (e) {
  20. console.log('*', path.join(syntaxDir, testDir, file));
  21. }
  22. });
  23. });
  24. });
  25. function generateTest(filePath) {
  26. var testDir = path.dirname(filePath);
  27. var rule = path.basename(testDir);
  28. var syntax = path.basename(path.dirname(testDir));
  29. var fileName = path.basename(filePath, '.' + syntax);
  30. var inputPath = path.join(testDir, fileName + '.' + syntax);
  31. var outputPath = path.join(testDir, fileName + '.json');
  32. var string = fs.readFileSync(inputPath, 'utf-8').trim();
  33. var ast = gonzales.parse(string, {syntax: syntax, rule: rule});
  34. fs.writeFileSync(outputPath, ast.toString());
  35. }