From dbaeb7174f990c882cdbda11cc0f1150e09f74c8 Mon Sep 17 00:00:00 2001 From: Lauri Pokka Date: Wed, 6 Jul 2016 04:52:55 +0900 Subject: [PATCH] add tests for input sourcemaps --- test/mocha/input-sourcemaps.js | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 test/mocha/input-sourcemaps.js diff --git a/test/mocha/input-sourcemaps.js b/test/mocha/input-sourcemaps.js new file mode 100644 index 00000000..30ee5b92 --- /dev/null +++ b/test/mocha/input-sourcemaps.js @@ -0,0 +1,43 @@ +var Uglify = require('../../'); +var assert = require("assert"); +var SourceMapConsumer = require("source-map").SourceMapConsumer; + +describe("input sourcemaps", function() { + var transpiled = '"use strict";\n\n' + + 'var foo = function foo(x) {\n return "foo " + x;\n};\n' + + 'console.log(foo("bar"));\n\n' + + '//# sourceMappingURL=bundle.js.map'; + + var transpilemap = { + "version": 3, + "sources": ["index.js"], + "names": [], + "mappings": ";;AAAA,IAAI,MAAM,SAAN,GAAM;AAAA,SAAK,SAAS,CAAd;AAAA,CAAV;AACA,QAAQ,GAAR,CAAY,IAAI,KAAJ,CAAZ", + "file": "bundle.js", + "sourcesContent": ["let foo = x => \"foo \" + x;\nconsole.log(foo(\"bar\"));"] + }; + + var result = Uglify.minify(transpiled, { + fromString: true, + inSourceMap: transpilemap, + outSourceMap: true + }); + var map = new SourceMapConsumer(result.map); + + it("Should copy over original sourcesContent", function() { + assert.equal(map.sourceContentFor("index.js"), transpilemap.sourcesContent[0]); + }); + + it("Final sourcemap should not have invalid mappings from inputSourceMap (issue #882) ", function() { + // The original source has only 2 lines, check that mappings don't have more lines + + var msg = "Mapping should not have higher line number than the original file had"; + map.eachMapping(function(mapping) { + assert.ok(mapping.originalLine <= 2, msg) + }); + + map.allGeneratedPositionsFor({source: "index.js", line: 1, column: 1}).forEach(function(pos) { + assert.ok(pos.line <= 2, msg); + }) + }); +});