schangxiang@126.com
2025-09-19 0821aa23eabe557c0d9ef5dbe6989c68be35d1fe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
/**
 * Module dependencies.
 */
 
var fs = require('fs');
var path = require('path');
var assert = require('assert');
var degenerator = require('../');
 
describe('degenerator()', function () {
 
  describe('"expected" fixture tests', function () {
 
    fs.readdirSync(__dirname).forEach(function (n) {
      if ('test.js' == n) return;
      if (/\.expected\.js$/.test(n)) return;
      var expectedName = path.basename(n, '.js') + '.expected.js';
 
      it(n + ' → ' + expectedName, function () {
        var sourceName = path.resolve(__dirname, n);
        var compiledName = path.resolve(__dirname, expectedName);
        var js = fs.readFileSync(sourceName, 'utf8');
        var expected = fs.readFileSync(compiledName, 'utf8');
 
        // the test case can define the `names` to use as a
        // comment on the first line of the file
        var names = js.match(/\/\/\s*(.*)/);
        if (names) {
          // the comment should be a comma-separated list of function names
          names = names[1].split(/,\s*/);
        } else {
          // if no function names were passed in then convert them all
          names = [ /.*/ ];
        }
 
        var compiled = degenerator(js, names);
        assert.equal(expected.trim(), compiled.trim());
      });
    });
 
  });
 
});