spec.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. var assert = require('assert'),
  2. fs = require('fs'),
  3. exists = fs.existsSync,
  4. path = require('path'),
  5. read = fs.readFileSync,
  6. sass = require('../lib'),
  7. util = require('./util');
  8. describe('spec', function () {
  9. var suites = util.getSuites();
  10. describe('test/sass-spec directory', function() {
  11. it('should be a cloned into place', function(done) {
  12. fs.exists(path.join(__dirname, 'fixtures', 'spec'), function (exists) {
  13. if (!exists) {
  14. throw new Error([
  15. 'test/fixtures/spec directory missing. Please clone it into place by',
  16. 'executing `git submodule update --init --recursive test/fixtures/spec`',
  17. 'from the project\'s root directory.'
  18. ].join(' '));
  19. }
  20. assert(exists);
  21. done();
  22. });
  23. });
  24. });
  25. Object.keys(suites).forEach(function(suite) {
  26. var tests = Object.keys(suites[suite]);
  27. describe(suite, function () {
  28. tests.forEach(function(test) {
  29. var t = suites[suite][test];
  30. if (exists(t.src)) {
  31. it(test, function(done) {
  32. var expected = util.normalize(read(t.expected, 'utf8'));
  33. sass.render({
  34. file: t.src,
  35. includePaths: t.paths,
  36. success: function(result) {
  37. assert.equal(util.normalize(result.css), expected);
  38. done();
  39. },
  40. error: function(err) {
  41. assert(!err);
  42. done();
  43. }
  44. });
  45. });
  46. }
  47. });
  48. });
  49. });
  50. });