UNPKG

4.56 kBJavaScriptView Raw
1// Copyright 2014 Simon Lydell
2// X11 (“MIT”) Licensed. (See LICENSE.)
3
4var path = require("path")
5var test = require("tape")
6var asyncify = require("simple-asyncify")
7var common = require("./common")
8var u = common.u
9var read = common.read
10var identity = common.identity
11
12var sourceMapResolve = require("../")
13
14path.sep = "\\"
15
16
17function 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
65test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false))
66
67test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true))
68
69
70function 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
95test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false))
96
97test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true))
98
99
100function 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
164test(".resolve", testResolve(sourceMapResolve.resolve, false))
165
166test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true))