From: Jakub Pawlowicz Date: Mon, 1 Dec 2014 20:40:59 +0000 (+0000) Subject: Fixes building source maps for styles with and without an input map. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=53a78cf7ba8084f4d940096d664fbfada8825fc6;p=clean-css.git Fixes building source maps for styles with and without an input map. * Previously stringifier was raisining an issue about a missing input source map. --- diff --git a/lib/selectors/source-map-stringifier.js b/lib/selectors/source-map-stringifier.js index 8ca43baf..1e54d1e0 100644 --- a/lib/selectors/source-map-stringifier.js +++ b/lib/selectors/source-map-stringifier.js @@ -96,7 +96,7 @@ Rebuilder.prototype.track = function (value, metadata) { }; Rebuilder.prototype.trackMetadata = function (metadata) { - var original = this.inputMapTracker.isTracking() ? + var original = this.inputMapTracker.isTracking(metadata) ? this.inputMapTracker.originalPositionFor(metadata) : {}; diff --git a/lib/utils/input-source-map-tracker.js b/lib/utils/input-source-map-tracker.js index 9f962f27..f2c5025f 100644 --- a/lib/utils/input-source-map-tracker.js +++ b/lib/utils/input-source-map-tracker.js @@ -124,8 +124,8 @@ InputSourceMapStore.prototype.track = function (data, whenDone) { fromSource(this, data, whenDone, { files: [], cursor: 0, errors: this.errors }); }; -InputSourceMapStore.prototype.isTracking = function () { - return Object.keys(this.maps).length > 0; +InputSourceMapStore.prototype.isTracking = function (sourceInfo) { + return !!this.maps[sourceInfo.source]; }; InputSourceMapStore.prototype.originalPositionFor = function (sourceInfo) { diff --git a/test/data/source-maps/no-map-import.css b/test/data/source-maps/no-map-import.css new file mode 100644 index 00000000..18656de2 --- /dev/null +++ b/test/data/source-maps/no-map-import.css @@ -0,0 +1,2 @@ +@import url(styles.css); +@import url(no-map.css); diff --git a/test/data/source-maps/no-map.css b/test/data/source-maps/no-map.css new file mode 100644 index 00000000..25118c13 --- /dev/null +++ b/test/data/source-maps/no-map.css @@ -0,0 +1 @@ +div { color: red; } diff --git a/test/source-map-test.js b/test/source-map-test.js index 3b874ccf..4cb70057 100644 --- a/test/source-map-test.js +++ b/test/source-map-test.js @@ -407,6 +407,24 @@ vows.describe('source-map') 'should have 4 mappings': function (minified) { assert.equal(4, minified.sourceMap._mappings.length); } + }, + 'complex but partial input map referenced by path': { + 'topic': new CleanCSS({ sourceMap: true }).minify('@import url(test/data/source-maps/no-map-import.css);'), + 'should have 4 mappings': function (minified) { + assert.equal(4, minified.sourceMap._mappings.length); + }, + 'should have 2 mappings to .less file': function (minified) { + var fromLess = minified.sourceMap._mappings.filter(function (mapping) { + return mapping.source == 'styles.less'; + }); + assert.equal(2, fromLess.length); + }, + 'should have 2 mappings to .css file': function (minified) { + var fromCSS = minified.sourceMap._mappings.filter(function (mapping) { + return mapping.source.indexOf('no-map.css') > 0; + }); + assert.equal(2, fromCSS.length); + } } }) .addBatch({