You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
4.5 KiB
166 lines
4.5 KiB
// Copyright 2014 Simon Lydell |
|
// X11 (“MIT”) Licensed. (See LICENSE.) |
|
|
|
var path = require("path") |
|
var test = require("tape") |
|
var asyncify = require("simple-asyncify") |
|
var common = require("./common") |
|
var u = common.u |
|
var read = common.read |
|
var identity = common.identity |
|
|
|
var sourceMapResolve = require("../") |
|
|
|
path.sep = "\\" |
|
|
|
|
|
function testResolveSourceMap(method, sync) { |
|
return function(t) { |
|
var wrap = (sync ? identity : asyncify) |
|
|
|
var codeUrl = "c:\\a\\b\\c\\foo.js" |
|
|
|
t.plan(3 * 2) |
|
|
|
if (sync) { |
|
method = asyncify(method) |
|
} |
|
|
|
var map = {} |
|
var readMap = wrap(read(JSON.stringify(map))) |
|
|
|
method(u("foo.js.map"), codeUrl, readMap, function(error, result) { |
|
t.error(error) |
|
t.deepEqual(result, { |
|
sourceMappingURL: "foo.js.map", |
|
url: "/a/b/c/foo.js.map", |
|
sourcesRelativeTo: "/a/b/c/foo.js.map", |
|
map: map |
|
}) |
|
}) |
|
|
|
method(u("/foo.js.map"), codeUrl, readMap, function(error, result) { |
|
t.error(error) |
|
t.deepEqual(result, { |
|
sourceMappingURL: "/foo.js.map", |
|
url: "/foo.js.map", |
|
sourcesRelativeTo: "/foo.js.map", |
|
map: map |
|
}) |
|
}) |
|
|
|
method(u("../foo.js.map"), codeUrl, readMap, function(error, result) { |
|
t.error(error) |
|
t.deepEqual(result, { |
|
sourceMappingURL: "../foo.js.map", |
|
url: "/a/b/foo.js.map", |
|
sourcesRelativeTo: "/a/b/foo.js.map", |
|
map: map |
|
}) |
|
}) |
|
|
|
} |
|
} |
|
|
|
test(".resolveSourceMap", testResolveSourceMap(sourceMapResolve.resolveSourceMap, false)) |
|
|
|
test(".resolveSourceMapSync", testResolveSourceMap(sourceMapResolve.resolveSourceMapSync, true)) |
|
|
|
|
|
function testResolveSources(method, sync) { |
|
return function(t) { |
|
var wrap = (sync ? identity : asyncify) |
|
|
|
var mapUrl = "c:\\a\\b\\c\\foo.js.map" |
|
|
|
t.plan(1 * 3) |
|
|
|
if (sync) { |
|
method = asyncify(method) |
|
} |
|
|
|
var map = { |
|
sources: ["foo.js", "/foo.js", "../foo.js"] |
|
} |
|
|
|
method(map, mapUrl, wrap(identity), function(error, result) { |
|
t.error(error) |
|
t.deepEqual(result.sourcesResolved, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]) |
|
t.deepEqual(result.sourcesContent, ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"]) |
|
}) |
|
|
|
} |
|
} |
|
|
|
test(".resolveSources", testResolveSources(sourceMapResolve.resolveSources, false)) |
|
|
|
test(".resolveSourcesSync", testResolveSources(sourceMapResolve.resolveSourcesSync, true)) |
|
|
|
|
|
function testResolve(method, sync) { |
|
return function(t) { |
|
var wrap = (sync ? identity : asyncify) |
|
var wrapMap = function(mapFn, fn) { |
|
return wrap(function(url) { |
|
if (/\.map$/.test(url)) { |
|
return mapFn(url) |
|
} |
|
return fn(url) |
|
}) |
|
} |
|
|
|
var codeUrl = "c:\\a\\b\\c\\foo.js" |
|
|
|
t.plan(3 * 2) |
|
|
|
if (sync) { |
|
method = asyncify(method) |
|
} |
|
|
|
var map = { |
|
sources: ["foo.js", "/foo.js", "../foo.js"] |
|
} |
|
var readMap = wrapMap(read(JSON.stringify(map)), identity) |
|
|
|
method(u("foo.js.map"), codeUrl, readMap, function(error, result) { |
|
t.error(error) |
|
t.deepEqual(result, { |
|
sourceMappingURL: "foo.js.map", |
|
url: "/a/b/c/foo.js.map", |
|
sourcesRelativeTo: "/a/b/c/foo.js.map", |
|
map: map, |
|
sourcesResolved: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"], |
|
sourcesContent: ["/a/b/c/foo.js", "/foo.js", "/a/b/foo.js"] |
|
}) |
|
}) |
|
|
|
method(u("/foo.js.map"), codeUrl, readMap, function(error, result) { |
|
t.error(error) |
|
t.deepEqual(result, { |
|
sourceMappingURL: "/foo.js.map", |
|
url: "/foo.js.map", |
|
sourcesRelativeTo: "/foo.js.map", |
|
map: map, |
|
sourcesResolved: ["/foo.js", "/foo.js", "/foo.js"], |
|
sourcesContent: ["/foo.js", "/foo.js", "/foo.js"] |
|
}) |
|
}) |
|
|
|
method(u("../foo.js.map"), codeUrl, readMap, function(error, result) { |
|
t.error(error) |
|
t.deepEqual(result, { |
|
sourceMappingURL: "../foo.js.map", |
|
url: "/a/b/foo.js.map", |
|
sourcesRelativeTo: "/a/b/foo.js.map", |
|
map: map, |
|
sourcesResolved: ["/a/b/foo.js", "/foo.js", "/a/foo.js"], |
|
sourcesContent: ["/a/b/foo.js", "/foo.js", "/a/foo.js"] |
|
}) |
|
}) |
|
|
|
} |
|
} |
|
|
|
test(".resolve", testResolve(sourceMapResolve.resolve, false)) |
|
|
|
test(".resolveSync", testResolve(sourceMapResolve.resolveSync, true))
|
|
|