render-helper.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. var fs = require('fs');
  2. var path = require('path');
  3. var _files = path.join(__dirname, '_files');
  4. function getContents (testName, ext) {
  5. try {
  6. return fs.readFileSync(path.join(_files, testName + '.' + ext), 'utf8');
  7. } catch (ex) {
  8. return null;
  9. }
  10. }
  11. function getView (testName) {
  12. var view = getContents(testName, 'js');
  13. if (!view) view = getContents(testName, 'cjs');
  14. if (!view) throw new Error('Cannot find view for test "' + testName + '"');
  15. return view;
  16. }
  17. function getPartial (testName) {
  18. try {
  19. return getContents(testName, 'partial');
  20. } catch (error) {
  21. // No big deal. Not all tests need to test partial support.
  22. }
  23. }
  24. // You can put the name of a specific test to run in the TEST environment
  25. // variable (e.g. TEST=backslashes mocha test/render-test.js)
  26. var testToRun = process.env.TEST;
  27. var testNames;
  28. if (testToRun) {
  29. testNames = testToRun.split(',');
  30. } else {
  31. testNames = fs.readdirSync(_files).filter(function (file) {
  32. return (/\.c?js$/).test(file);
  33. }).map(function (file) {
  34. return path.basename(file).replace(/\.c?js$/, '');
  35. });
  36. }
  37. function getTest (testName) {
  38. return {
  39. name: testName,
  40. view: getView(testName),
  41. template: getContents(testName, 'mustache'),
  42. partial: getPartial(testName),
  43. expect: getContents(testName, 'txt')
  44. };
  45. }
  46. exports.getTests = function getTests () {
  47. return testNames.map(getTest);
  48. };