diff options
Diffstat (limited to 'test/parallel/test-source-map.js')
-rw-r--r-- | test/parallel/test-source-map.js | 97 |
1 files changed, 90 insertions, 7 deletions
diff --git a/test/parallel/test-source-map.js b/test/parallel/test-source-map.js index de728c05bf..41a315e3f8 100644 --- a/test/parallel/test-source-map.js +++ b/test/parallel/test-source-map.js @@ -30,7 +30,7 @@ function nextdir() { assert.strictEqual(output.status, 0); assert.strictEqual(output.stderr.toString(), ''); const sourceMap = getSourceMapFromCache('basic.js', coverageDirectory); - assert.strictEqual(sourceMap.url, 'https://http.cat/418'); + assert.strictEqual(sourceMap.url, 'https://ci.nodejs.org/418'); } // Outputs source maps when process.kill(process.pid, "SIGINT"); exits process. @@ -47,7 +47,7 @@ function nextdir() { } assert.strictEqual(output.stderr.toString(), ''); const sourceMap = getSourceMapFromCache('sigint.js', coverageDirectory); - assert.strictEqual(sourceMap.url, 'https://http.cat/402'); + assert.strictEqual(sourceMap.url, 'https://ci.nodejs.org/402'); } // Outputs source maps when source-file calls process.exit(1). @@ -58,7 +58,7 @@ function nextdir() { ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); assert.strictEqual(output.stderr.toString(), ''); const sourceMap = getSourceMapFromCache('exit-1.js', coverageDirectory); - assert.strictEqual(sourceMap.url, 'https://http.cat/404'); + assert.strictEqual(sourceMap.url, 'https://ci.nodejs.org/404'); } // Outputs source-maps for esm module. @@ -71,7 +71,7 @@ function nextdir() { ], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } }); assert.strictEqual(output.stderr.toString(), ''); const sourceMap = getSourceMapFromCache('esm-basic.mjs', coverageDirectory); - assert.strictEqual(sourceMap.url, 'https://http.cat/405'); + assert.strictEqual(sourceMap.url, 'https://ci.nodejs.org/405'); } // Loads source-maps with relative path from .map file on disk. @@ -116,12 +116,95 @@ function nextdir() { ); } +// Does not apply source-map to stack trace if --experimental-modules +// is not set. +{ + const output = spawnSync(process.execPath, [ + require.resolve('../fixtures/source-map/uglify-throw.js') + ]); + assert.strictEqual( + output.stderr.toString().match(/->.*uglify-throw-original\.js:5:9/), + null + ); + assert.strictEqual( + output.stderr.toString().match(/->.*uglify-throw-original\.js:9:3/), + null + ); +} + +// Applies source-maps generated by uglifyjs to stack trace. +{ + const output = spawnSync(process.execPath, [ + '--enable-source-maps', + require.resolve('../fixtures/source-map/uglify-throw.js') + ]); + assert.ok( + output.stderr.toString().match(/->.*uglify-throw-original\.js:5:9/) + ); + assert.ok( + output.stderr.toString().match(/->.*uglify-throw-original\.js:9:3/) + ); +} + +// Applies source-maps generated by tsc to stack trace. +{ + const output = spawnSync(process.execPath, [ + '--enable-source-maps', + require.resolve('../fixtures/source-map/typescript-throw.js') + ]); + assert.ok(output.stderr.toString().match(/->.*typescript-throw\.ts:18:11/)); + assert.ok(output.stderr.toString().match(/->.*typescript-throw\.ts:24:1/)); +} + +// Applies source-maps generated by babel to stack trace. +{ + const output = spawnSync(process.execPath, [ + '--enable-source-maps', + require.resolve('../fixtures/source-map/babel-throw.js') + ]); + assert.ok( + output.stderr.toString().match(/->.*babel-throw-original\.js:18:31/) + ); +} + +// Applies source-maps generated by nyc to stack trace. +{ + const output = spawnSync(process.execPath, [ + '--enable-source-maps', + require.resolve('../fixtures/source-map/istanbul-throw.js') + ]); + assert.ok( + output.stderr.toString().match(/->.*istanbul-throw-original\.js:5:9/) + ); + assert.ok( + output.stderr.toString().match(/->.*istanbul-throw-original\.js:9:3/) + ); +} + +// Applies source-maps in esm modules to stack trace. +{ + const output = spawnSync(process.execPath, [ + '--enable-source-maps', + '--experimental-modules', + require.resolve('../fixtures/source-map/babel-esm.mjs') + ]); + assert.ok( + output.stderr.toString().match(/->.*babel-esm-original\.mjs:9:29/) + ); +} + function getSourceMapFromCache(fixtureFile, coverageDirectory) { const jsonFiles = fs.readdirSync(coverageDirectory); for (const jsonFile of jsonFiles) { - const maybeSourceMapCache = require( - path.join(coverageDirectory, jsonFile) - )['source-map-cache'] || {}; + let maybeSourceMapCache; + try { + maybeSourceMapCache = require( + path.join(coverageDirectory, jsonFile) + )['source-map-cache'] || {}; + } catch (err) { + console.warn(err); + maybeSourceMapCache = {}; + } const keys = Object.keys(maybeSourceMapCache); for (const key of keys) { if (key.includes(fixtureFile)) { |