1 | var Q = require("q");
|
2 | var fs = require("fs");
|
3 | var path = require("path");
|
4 | var assert = require("assert");
|
5 | var transpile = require("../main");
|
6 | var assign = require("lodash/assign");
|
7 |
|
8 | var readFile = Q.denodeify(fs.readFile);
|
9 | var isWindows = /^win/.test(process.platform);
|
10 |
|
11 | module.exports = function doTranspile(args) {
|
12 | var options = args.options || {};
|
13 | var moduleFormat = args.moduleFormat;
|
14 | var sourceFileName = args.sourceFileName;
|
15 | var expectedFileName = args.expectedFileName;
|
16 | var resultModuleFormat = args.resultModuleFormat;
|
17 |
|
18 | var actualCode;
|
19 | var actualMap;
|
20 | var srcAddress = path.join(__dirname, "tests", sourceFileName + ".js");
|
21 |
|
22 | return readFile(srcAddress)
|
23 | .then(function(data) {
|
24 | return transpile.to(
|
25 | assign({}, args.load, {
|
26 | name: sourceFileName,
|
27 | address: srcAddress,
|
28 | source: data.toString(),
|
29 | metadata: { format: moduleFormat }
|
30 | }),
|
31 | resultModuleFormat,
|
32 | options
|
33 | );
|
34 | })
|
35 | .then(function(res) {
|
36 | actualCode = res.code;
|
37 | actualMap = res.map && res.map.toString();
|
38 |
|
39 | return readFile(
|
40 | path.join(__dirname, "tests", "expected", expectedFileName + ".js")
|
41 | );
|
42 | })
|
43 | .then(function(data) {
|
44 | var expected = data.toString();
|
45 |
|
46 | if (options.sourceMaps) {
|
47 | actualCode += " //# sourceMappingURL=" + expectedFileName + ".js.map";
|
48 | }
|
49 |
|
50 | if (isWindows) {
|
51 | expected = expected.replace(/[\n\r]/g, "");
|
52 | actualCode = actualCode.replace(/[\n]/g, "");
|
53 | }
|
54 |
|
55 | assert.equal(actualCode, expected, "expected equals result");
|
56 |
|
57 | if (options.sourceMaps) {
|
58 | return readFile(
|
59 | path.join(
|
60 | __dirname,
|
61 | "tests",
|
62 | "expected",
|
63 | expectedFileName + ".js.map"
|
64 | )
|
65 | );
|
66 | }
|
67 | })
|
68 | .then(function(expectedMap) {
|
69 | if (expectedMap) {
|
70 | assert.equal(
|
71 | actualMap,
|
72 | expectedMap.toString(),
|
73 | "expected map equals result"
|
74 | );
|
75 | }
|
76 | });
|
77 | };
|