1 |
|
2 |
|
3 |
|
4 | var path = require("path")
|
5 | var test = require("tape")
|
6 | var asyncify = require("simple-asyncify")
|
7 | var common = require("./common")
|
8 | var u = common.u
|
9 | var read = common.read
|
10 | var identity = common.identity
|
11 |
|
12 | var sourceMapResolve = require("../")
|
13 |
|
14 | path.sep = "\\"
|
15 |
|
16 |
|
17 | function testResolveSourceMap(method, sync) {
|
18 | return function(t) {
|
19 | var wrap = (sync ? identity : asyncify)
|
20 |
|
21 | var codeUrl = "c:\\a\\b\\c\\foo.js"
|
22 |
|
23 | t.plan(3 * 2)
|
24 |
|
25 | if (sync) {
|
26 | method = asyncify(method)
|
27 | }
|
28 |
|
29 | var map = {}
|
30 | var readMap = wrap(read(JSON.stringify(map)))
|
31 |
|
32 | method(u("foo.js.map"), codeUrl, readMap, function(error, result) {
|
33 | t.error(error)
|
34 | t.deepEqual(result, {
|
35 | sourceMappingURL: "foo.js.map",
|
36 | url: "/a/b/c/foo.js.map",
|
37 | sourcesRelativeTo: "/a/b/c/foo.js.map",
|
38 | map: map
|
39 | })
|
40 | })
|
41 |
|
42 | method(u("/foo.js.map"), codeUrl, readMap, function(error, result) {
|
43 | t.error(error)
|
44 | t.deepEqual(result, {
|
45 | sourceMappingURL: "/foo.js.map",
|
46 | url: "/foo.js.map",
|
47 | sourcesRelativeTo: "/foo.js.map",
|
48 | map: map
|
49 | })
|
50 | })
|
51 |
|
52 | method(u("../foo.js.map"), codeUrl, readMap, function(error, result) {
|
53 | t.error(error)
|
54 | t.deepEqual(result, {
|
55 | sourceMappingURL: "../foo.js.map",
|
56 | url: "/a/b/foo.js.map",
|
57 | sourcesRelativeTo: "/a/b/foo.js.map",
|
58 | map: map
|
59 | })
|
60 | })
|
61 |
|
62 | }
|
63 | }
|
64 |
|
65 | test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false))
|
66 |
|
67 | test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true))
|
68 |
|
69 |
|
70 | function testResolveSources(method, sync) {
|
71 | return function(t) {
|
72 | var wrap = (sync ? identity : asyncify)
|
73 |
|
74 | var mapUrl = "c:\\a\\b\\c\\foo.js.map"
|
75 |
|
76 | t.plan(1 * 3)
|
77 |
|
78 | if (sync) {
|
79 | method = asyncify(method)
|
80 | }
|
81 |
|
82 | var map = {
|
83 | sources: ["foo.js", "/foo.js", "../foo.js"]
|
84 | }
|
85 |
|
86 | method(map, mapUrl, wrap(identity), function(error, result) {
|
87 | t.error(error)
|
88 | t.deepEqual(result.sourcesResolved, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"])
|
89 | t.deepEqual(result.sourcesContent, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"])
|
90 | })
|
91 |
|
92 | }
|
93 | }
|
94 |
|
95 | test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false))
|
96 |
|
97 | test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true))
|
98 |
|
99 |
|
100 | function testResolve(method, sync) {
|
101 | return function(t) {
|
102 | var wrap = (sync ? identity : asyncify)
|
103 | var wrapMap = function(mapFn, fn) {
|
104 | return wrap(function(url) {
|
105 | if (/\.map$/.test(url)) {
|
106 | return mapFn(url)
|
107 | }
|
108 | return fn(url)
|
109 | })
|
110 | }
|
111 |
|
112 | var codeUrl = "c:\\a\\b\\c\\foo.js"
|
113 |
|
114 | t.plan(3 * 2)
|
115 |
|
116 | if (sync) {
|
117 | method = asyncify(method)
|
118 | }
|
119 |
|
120 | var map = {
|
121 | sources: ["foo.js", "/foo.js", "../foo.js"]
|
122 | }
|
123 | var readMap = wrapMap(read(JSON.stringify(map)), identity)
|
124 |
|
125 | method(u("foo.js.map"), codeUrl, readMap, function(error, result) {
|
126 | t.error(error)
|
127 | t.deepEqual(result, {
|
128 | sourceMappingURL: "foo.js.map",
|
129 | url: "/a/b/c/foo.js.map",
|
130 | sourcesRelativeTo: "/a/b/c/foo.js.map",
|
131 | map: map,
|
132 | sourcesResolved: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"],
|
133 | sourcesContent: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]
|
134 | })
|
135 | })
|
136 |
|
137 | method(u("/foo.js.map"), codeUrl, readMap, function(error, result) {
|
138 | t.error(error)
|
139 | t.deepEqual(result, {
|
140 | sourceMappingURL: "/foo.js.map",
|
141 | url: "/foo.js.map",
|
142 | sourcesRelativeTo: "/foo.js.map",
|
143 | map: map,
|
144 | sourcesResolved: ["/foo.js", "/foo.js", "/foo.js"],
|
145 | sourcesContent: ["/foo.js", "/foo.js", "/foo.js"]
|
146 | })
|
147 | })
|
148 |
|
149 | method(u("../foo.js.map"), codeUrl, readMap, function(error, result) {
|
150 | t.error(error)
|
151 | t.deepEqual(result, {
|
152 | sourceMappingURL: "../foo.js.map",
|
153 | url: "/a/b/foo.js.map",
|
154 | sourcesRelativeTo: "/a/b/foo.js.map",
|
155 | map: map,
|
156 | sourcesResolved: ["/a/b/foo.js", "/foo.js", "/a/foo.js"],
|
157 | sourcesContent: ["/a/b/foo.js", "/foo.js", "/a/foo.js"]
|
158 | })
|
159 | })
|
160 |
|
161 | }
|
162 | }
|
163 |
|
164 | test(".resolve", testResolve(sourceMapResolve.resolve, false))
|
165 |
|
166 | test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true))
|