Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"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",
},
"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 = {
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"
);
}
});