UNPKG

4.25 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 * 2)
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, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"])
89 })
90
91 }
92}
93
94test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false))
95
96test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true))
97
98
99function testResolve(method, sync) {
100 return function(t) {
101 var wrap = (sync ? identity : asyncify)
102 var wrapMap = function(mapFn, fn) {
103 return wrap(function(url) {
104 if (/\.map$/.test(url)) {
105 return mapFn(url)
106 }
107 return fn(url)
108 })
109 }
110
111 var codeUrl = "c:\\a\\b\\c\\foo.js"
112
113 t.plan(3 * 2)
114
115 if (sync) {
116 method = asyncify(method)
117 }
118
119 var map = {
120 sources: ["foo.js", "/foo.js", "../foo.js"]
121 }
122 var readMap = wrapMap(read(JSON.stringify(map)), identity)
123
124 method(u("foo.js.map"), codeUrl, readMap, function(error, result) {
125 t.error(error)
126 t.deepEqual(result, {
127 sourceMappingURL: "foo.js.map",
128 url: "/a/b/c/foo.js.map",
129 sourcesRelativeTo: "/a/b/c/foo.js.map",
130 map: map,
131 sources: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]
132 })
133 })
134
135 method(u("/foo.js.map"), codeUrl, readMap, function(error, result) {
136 t.error(error)
137 t.deepEqual(result, {
138 sourceMappingURL: "/foo.js.map",
139 url: "/foo.js.map",
140 sourcesRelativeTo: "/foo.js.map",
141 map: map,
142 sources: ["/foo.js", "/foo.js", "/foo.js"]
143 })
144 })
145
146 method(u("../foo.js.map"), codeUrl, readMap, function(error, result) {
147 t.error(error)
148 t.deepEqual(result, {
149 sourceMappingURL: "../foo.js.map",
150 url: "/a/b/foo.js.map",
151 sourcesRelativeTo: "/a/b/foo.js.map",
152 map: map,
153 sources: ["/a/b/foo.js", "/foo.js", "/a/foo.js"]
154 })
155 })
156
157 }
158}
159
160test(".resolve", testResolve(sourceMapResolve.resolve, false))
161
162test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true))