Skip to content

Commit 2a808d9

Browse files
authored
Merge pull request mozilla#251 from dmurat/emptyMappingsFix
Empty mappings fix implemented.
2 parents 16e48d4 + d08bc2f commit 2a808d9

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1+
*.iml
2+
*.log
3+
.idea
14
node_modules/*

lib/source-map-generator.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ SourceMapGenerator.fromSourceMap =
7272
generator.addMapping(newMapping);
7373
});
7474
aSourceMapConsumer.sources.forEach(function (sourceFile) {
75+
var sourceRelative = sourceFile;
76+
if (sourceRoot !== null) {
77+
sourceRelative = util.relative(sourceRoot, sourceFile);
78+
}
79+
80+
if (!generator._sources.has(sourceRelative)) {
81+
generator._sources.add(sourceRelative);
82+
}
83+
7584
var content = aSourceMapConsumer.sourceContentFor(sourceFile);
7685
if (content != null) {
7786
generator.setSourceContent(sourceFile, content);

test/test-source-map-generator.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,30 @@ exports['test .fromSourceMap with sourcesContent'] = function (assert) {
252252
util.assertEqualMaps(assert, map.toJSON(), util.testMapWithSourcesContent);
253253
};
254254

255+
exports['test .fromSourceMap with single source'] = function (assert) {
256+
var map = SourceMapGenerator.fromSourceMap(
257+
new SourceMapConsumer(util.testMapSingleSource));
258+
util.assertEqualMaps(assert, map.toJSON(), util.testMapSingleSource);
259+
};
260+
261+
exports['test .fromSourceMap with empty mappings'] = function (assert) {
262+
var map = SourceMapGenerator.fromSourceMap(
263+
new SourceMapConsumer(util.testMapEmptyMappings));
264+
util.assertEqualMaps(assert, map.toJSON(), util.testMapEmptyMappings);
265+
};
266+
267+
exports['test .fromSourceMap with empty mappings and relative sources'] = function (assert) {
268+
var map = SourceMapGenerator.fromSourceMap(
269+
new SourceMapConsumer(util.testMapEmptyMappingsRelativeSources));
270+
util.assertEqualMaps(assert, map.toJSON(), util.testMapEmptyMappingsRelativeSources_generatedExpected);
271+
};
272+
273+
exports['test .fromSourceMap with multiple sources where mappings refers only to single source'] = function (assert) {
274+
var map = SourceMapGenerator.fromSourceMap(
275+
new SourceMapConsumer(util.testMapMultiSourcesMappingRefersSingleSourceOnly));
276+
util.assertEqualMaps(assert, map.toJSON(), util.testMapMultiSourcesMappingRefersSingleSourceOnly);
277+
};
278+
255279
exports['test applySourceMap'] = function (assert) {
256280
var node = new SourceNode(null, null, null, [
257281
new SourceNode(2, 0, 'fileX', 'lineX2\n'),

test/util.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,58 @@ exports.testMapEmptySourceRoot = {
5151
sourceRoot: '',
5252
mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
5353
};
54+
exports.testMapSingleSource = {
55+
version: 3,
56+
file: 'min.js',
57+
names: ['bar', 'baz'],
58+
sources: ['one.js'],
59+
sourceRoot: '',
60+
mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID'
61+
};
62+
exports.testMapEmptyMappings = {
63+
version: 3,
64+
file: 'min.js',
65+
names: [],
66+
sources: ['one.js', 'two.js'],
67+
sourcesContent: [
68+
' ONE.foo = 1;',
69+
' TWO.inc = 2;'
70+
],
71+
sourceRoot: '',
72+
mappings: ''
73+
};
74+
exports.testMapEmptyMappingsRelativeSources = {
75+
version: 3,
76+
file: 'min.js',
77+
names: [],
78+
sources: ['./one.js', './two.js'],
79+
sourcesContent: [
80+
' ONE.foo = 1;',
81+
' TWO.inc = 2;'
82+
],
83+
sourceRoot: '/the/root',
84+
mappings: ''
85+
};
86+
exports.testMapEmptyMappingsRelativeSources_generatedExpected = {
87+
version: 3,
88+
file: 'min.js',
89+
names: [],
90+
sources: ['one.js', 'two.js'],
91+
sourcesContent: [
92+
' ONE.foo = 1;',
93+
' TWO.inc = 2;'
94+
],
95+
sourceRoot: '/the/root',
96+
mappings: ''
97+
};
98+
exports.testMapMultiSourcesMappingRefersSingleSourceOnly = {
99+
version: 3,
100+
file: 'min.js',
101+
names: ['bar', 'baz'],
102+
sources: ['one.js', 'withoutMappings.js'],
103+
sourceRoot: '',
104+
mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID'
105+
};
54106
// This mapping is identical to above, but uses the indexed format instead.
55107
exports.indexedTestMap = {
56108
version: 3,

0 commit comments

Comments
 (0)