UNPKG

1.83 kBJavaScriptView Raw
1var Q = require("q");
2var fs = require("fs");
3var path = require("path");
4var assert = require("assert");
5var transpile = require("../main");
6var assign = require("lodash/assign");
7
8var readFile = Q.denodeify(fs.readFile);
9var isWindows = /^win/.test(process.platform);
10
11module.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};