1 | var Q = require("q");
|
2 | var fs = require("fs");
|
3 | var path = require("path");
|
4 | var assert = require("assert");
|
5 | var assign = require("lodash/assign");
|
6 | var generate = require("../lib/generate");
|
7 |
|
8 | var readFile = Q.denodeify(fs.readFile);
|
9 | var isWindows = /^win/.test(process.platform);
|
10 |
|
11 | module.exports = function convert(args) {
|
12 | var converter = args.converter;
|
13 | var options = args.options || {};
|
14 | var sourceFileName = args.sourceFileName;
|
15 | var expectedFileName = args.expectedFileName;
|
16 |
|
17 | var srcAddress = path.join(__dirname, "tests", sourceFileName + ".js");
|
18 |
|
19 | return readFile(srcAddress)
|
20 | .then(function(data) {
|
21 | var load = assign(
|
22 | {},
|
23 | {
|
24 | address: srcAddress,
|
25 | name: sourceFileName,
|
26 | source: data.toString()
|
27 | },
|
28 | args.load
|
29 | );
|
30 |
|
31 | return generate(converter(load, options)).code;
|
32 | })
|
33 | .then(function(actual) {
|
34 | return Promise.all([
|
35 | actual,
|
36 | readFile(
|
37 | path.join(__dirname, "tests", "expected", expectedFileName + ".js")
|
38 | )
|
39 | ]);
|
40 | })
|
41 | .then(function(data) {
|
42 | var actual = data[0];
|
43 | var expected = data[1].toString();
|
44 |
|
45 | if (isWindows) {
|
46 | actual = actual.replace(/[\n]/g, "");
|
47 | expected = expected.replace(/[\n\r]/g, "");
|
48 | }
|
49 |
|
50 | assert.equal(actual, expected.toString(), "expected equals result");
|
51 | });
|
52 | };
|