138 lines
3.5 KiB
JavaScript
138 lines
3.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
// Covert getOriginalLocation and getGeneratedLocation functions.
|
|
|
|
add_task(async function testGetOriginalLocation() {
|
|
await fetchFixtureSourceMap("bundle");
|
|
|
|
const generatedLocation = {
|
|
sourceId: "bundle.js",
|
|
line: 49,
|
|
};
|
|
|
|
const originalLocation =
|
|
await gSourceMapLoader.getOriginalLocation(generatedLocation);
|
|
Assert.deepEqual(
|
|
originalLocation,
|
|
{
|
|
column: 0,
|
|
line: 3,
|
|
sourceId: "bundle.js/originalSource-fe2c41d3535b76c158e39ba4f3ff826a",
|
|
sourceUrl: "webpack:///entry.js",
|
|
},
|
|
"Mapped a generated location"
|
|
);
|
|
|
|
const originalLocation2 =
|
|
await gSourceMapLoader.getOriginalLocation(originalLocation);
|
|
Assert.deepEqual(originalLocation2, null, "No mapped location");
|
|
|
|
gSourceMapLoader.clearSourceMaps();
|
|
const originalLocation3 =
|
|
await gSourceMapLoader.getOriginalLocation(generatedLocation);
|
|
Assert.deepEqual(
|
|
originalLocation3,
|
|
null,
|
|
"after clearing the source maps, the same generated location no longer maps"
|
|
);
|
|
});
|
|
|
|
add_task(async function testGetGeneratedLocation() {
|
|
await fetchFixtureSourceMap("bundle");
|
|
|
|
const originalLocation = {
|
|
column: 0,
|
|
line: 3,
|
|
sourceId: "bundle.js/originalSource-fe2c41d3535b76c158e39ba4f3ff826a",
|
|
};
|
|
|
|
const source = {
|
|
url: "webpack:///entry.js",
|
|
id: "bundle.js/originalSource-fe2c41d3535b76c158e39ba4f3ff826a",
|
|
};
|
|
|
|
const generatedLocation = await gSourceMapLoader.getGeneratedLocation(
|
|
originalLocation,
|
|
source
|
|
);
|
|
Assert.deepEqual(
|
|
generatedLocation,
|
|
{
|
|
sourceId: "bundle.js",
|
|
line: 49,
|
|
column: 0,
|
|
},
|
|
"Map an original location"
|
|
);
|
|
|
|
{
|
|
gSourceMapLoader.clearSourceMaps();
|
|
|
|
const secondGeneratedLocation = await gSourceMapLoader.getGeneratedLocation(
|
|
originalLocation,
|
|
source
|
|
);
|
|
Assert.deepEqual(
|
|
secondGeneratedLocation,
|
|
null,
|
|
"after clearing source maps, the same location no longer maps to an original location"
|
|
);
|
|
}
|
|
|
|
{
|
|
// we expect symmetric mappings, which means that if
|
|
// we map a generated location to an original location,
|
|
// and then map it back, we should get the original generated value.
|
|
// e.g. G[8, 0] -> O[5, 4] -> G[8, 0]
|
|
await fetchFixtureSourceMap("if.out");
|
|
|
|
const genLoc1 = {
|
|
sourceId: "if.out.js",
|
|
column: 0,
|
|
line: 8,
|
|
};
|
|
|
|
const ifSource = {
|
|
url: "if.js",
|
|
id: "if.out.js/originalSource-5ad3141023dae912c5f8833c7e03beeb",
|
|
};
|
|
|
|
const oLoc = await gSourceMapLoader.getOriginalLocation(genLoc1);
|
|
const genLoc2 = await gSourceMapLoader.getGeneratedLocation(oLoc, ifSource);
|
|
|
|
Assert.deepEqual(genLoc2, genLoc1, "location mapping is symmetric");
|
|
}
|
|
|
|
{
|
|
// we expect that an undefined column will be handled like a
|
|
// location w/ column 0. e.g. G[8, u] -> O[5, 4] -> G[8, 0]
|
|
await fetchFixtureSourceMap("if.out");
|
|
|
|
const genLoc1 = {
|
|
sourceId: "if.out.js",
|
|
column: undefined,
|
|
line: 8,
|
|
};
|
|
|
|
const ifSource = {
|
|
url: "if.js",
|
|
id: "if.out.js/originalSource-5ad3141023dae912c5f8833c7e03beeb",
|
|
};
|
|
|
|
const oLoc = await gSourceMapLoader.getOriginalLocation(genLoc1);
|
|
const genLoc2 = await gSourceMapLoader.getGeneratedLocation(oLoc, ifSource);
|
|
|
|
Assert.deepEqual(
|
|
genLoc2,
|
|
{
|
|
sourceId: "if.out.js",
|
|
column: 0,
|
|
line: 8,
|
|
},
|
|
"undefined column is handled like 0 column"
|
|
);
|
|
}
|
|
});
|