forked from mirrors/gecko-dev
Backed out changeset 0965e956200a (bug 1834725) Backed out changeset 4a8151163607 (bug 1834725) Backed out changeset a56f42223377 (bug 1834725) Backed out changeset a920356b63eb (bug 1834725)
169 lines
3.8 KiB
JavaScript
169 lines
3.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
// Cover the high level API of these modules:
|
|
// getOriginalURLs getGeneratedRangesForOriginal functions
|
|
|
|
async function assertFixtureOriginalURLs(
|
|
fixtureName,
|
|
expectedUrls,
|
|
testMessage
|
|
) {
|
|
const originalSources = await fetchFixtureSourceMap(fixtureName);
|
|
const urls = originalSources.map(s => s.url);
|
|
Assert.deepEqual(urls, expectedUrls, testMessage);
|
|
}
|
|
|
|
add_task(async function testGetOriginalURLs() {
|
|
await assertFixtureOriginalURLs(
|
|
"absolute",
|
|
["https://example.com/cheese/heart.js"],
|
|
"Test absolute URL"
|
|
);
|
|
|
|
await assertFixtureOriginalURLs(
|
|
"bundle",
|
|
[
|
|
"webpack:///webpack/bootstrap%204ef8c7ec7c1df790781e",
|
|
"webpack:///entry.js",
|
|
"webpack:///times2.js",
|
|
"webpack:///output.js",
|
|
"webpack:///opts.js",
|
|
],
|
|
"Test source with a url"
|
|
);
|
|
|
|
await assertFixtureOriginalURLs(
|
|
"empty",
|
|
[`${URL_ROOT_SSL}fixtures/heart.js`],
|
|
"Test empty sourceRoot resolution"
|
|
);
|
|
|
|
await assertFixtureOriginalURLs(
|
|
"noroot",
|
|
[`${URL_ROOT_SSL}fixtures/heart.js`],
|
|
"Test Non-existing sourceRoot resolution"
|
|
);
|
|
|
|
await assertFixtureOriginalURLs(
|
|
"noroot2",
|
|
[`${URL_ROOT_SSL}fixtures/heart.js`],
|
|
"Test Non-existing sourceRoot resolution with relative URLs"
|
|
);
|
|
});
|
|
|
|
add_task(async function testGetGeneratedRangesForOriginal() {
|
|
const originals = await fetchFixtureSourceMap("intermingled-sources");
|
|
|
|
const ranges = await gSourceMapLoader.getGeneratedRangesForOriginal(
|
|
originals[0].id
|
|
);
|
|
|
|
Assert.deepEqual(
|
|
ranges,
|
|
[
|
|
{
|
|
start: {
|
|
line: 4,
|
|
column: 69,
|
|
},
|
|
end: {
|
|
line: 9,
|
|
column: Infinity,
|
|
},
|
|
},
|
|
{
|
|
start: {
|
|
line: 11,
|
|
column: 0,
|
|
},
|
|
end: {
|
|
line: 17,
|
|
column: 3,
|
|
},
|
|
},
|
|
{
|
|
start: {
|
|
line: 19,
|
|
column: 18,
|
|
},
|
|
end: {
|
|
line: 19,
|
|
column: 22,
|
|
},
|
|
},
|
|
{
|
|
start: {
|
|
line: 26,
|
|
column: 0,
|
|
},
|
|
end: {
|
|
line: 26,
|
|
column: Infinity,
|
|
},
|
|
},
|
|
{
|
|
start: {
|
|
line: 28,
|
|
column: 0,
|
|
},
|
|
end: {
|
|
line: 28,
|
|
column: Infinity,
|
|
},
|
|
},
|
|
],
|
|
"Test the overall generated ranges on the source"
|
|
);
|
|
|
|
{
|
|
// Note that we have to clear the source map in order to get the merged ranges,
|
|
// otherwise we are still fetching the previous unmerged ones!
|
|
const secondOriginals = await fetchFixtureSourceMap("intermingled-sources");
|
|
const mergedRanges = await gSourceMapLoader.getGeneratedRangesForOriginal(
|
|
secondOriginals[0].id,
|
|
true
|
|
);
|
|
|
|
Assert.deepEqual(
|
|
mergedRanges,
|
|
[
|
|
{
|
|
start: {
|
|
line: 4,
|
|
column: 69,
|
|
},
|
|
end: {
|
|
line: 28,
|
|
column: Infinity,
|
|
},
|
|
},
|
|
],
|
|
"Test the merged generated ranges on the source"
|
|
);
|
|
}
|
|
});
|
|
|
|
add_task(async function testBaseURLErrorHandling() {
|
|
const source = {
|
|
id: "missingmap.js",
|
|
sourceMapURL: "missingmap.js.map",
|
|
// Notice the duplicated ":" which cause the error here
|
|
sourceMapBaseURL: "http:://example.com/",
|
|
};
|
|
|
|
const onError = gSourceMapLoader.once("source-map-error");
|
|
is(
|
|
await gSourceMapLoader.getOriginalURLs(source),
|
|
null,
|
|
"The error is silented..."
|
|
);
|
|
info("Wait for source-map-error event");
|
|
const error = await onError;
|
|
is(
|
|
error,
|
|
`Source map error: Error: URL constructor: http:://example.com/ is not a valid URL.\nResource URL: undefined\nSource Map URL: missingmap.js.map`
|
|
);
|
|
});
|