| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent e5289d1 commit d2c9c07
4 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,6 @@ | |||
| 1 | + { | ||
| 2 | + "version": 3, | ||
| 3 | + "sources": ["get-call-sites-original.js"], | ||
| 4 | + "names": [], | ||
| 5 | + "mappings": "AAUA" | ||
| 6 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,57 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + | ||
| 3 | + require('../common'); | ||
| 4 | + const assert = require('node:assert'); | ||
| 5 | + const os = require('node:os'); | ||
| 6 | + const util = require('node:util'); | ||
| 7 | + | ||
| 8 | + const ENOENT = -os.constants.errno.ENOENT; | ||
| 9 | + const EACCES = -os.constants.errno.EACCES; | ||
| 10 | + | ||
| 11 | + // Address and port are included in the message | ||
| 12 | + { | ||
| 13 | + const e = util._exceptionWithHostPort(ENOENT, 'connect', '127.0.0.1', 8080); | ||
| 14 | + assert.ok(e instanceof Error); | ||
| 15 | + assert.strictEqual(e.errno, ENOENT); | ||
| 16 | + assert.strictEqual(e.code, util.getSystemErrorName(ENOENT)); | ||
| 17 | + assert.strictEqual(e.syscall, 'connect'); | ||
| 18 | + assert.strictEqual(e.address, '127.0.0.1'); | ||
| 19 | + assert.strictEqual(e.port, 8080); | ||
| 20 | + assert.ok(e.message.includes('127.0.0.1:8080'), `expected 127.0.0.1:8080 in "${e.message}"`); | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | + // Port=0 omits host:port detail; port property is not set | ||
| 24 | + { | ||
| 25 | + const e = util._exceptionWithHostPort(ENOENT, 'connect', '127.0.0.1', 0); | ||
| 26 | + assert.strictEqual(e.address, '127.0.0.1'); | ||
| 27 | + assert.strictEqual(e.port, undefined); | ||
| 28 | + assert.ok(e.message.includes('127.0.0.1'), `expected address in "${e.message}"`); | ||
| 29 | + assert.ok(!e.message.includes(':0'), `unexpected :0 in "${e.message}"`); | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + // Additional is appended as "- Local (...)" | ||
| 33 | + { | ||
| 34 | + const e = util._exceptionWithHostPort(ENOENT, 'connect', '127.0.0.1', 80, '0.0.0.0:12345'); | ||
| 35 | + assert.ok(e.message.includes('- Local (0.0.0.0:12345)'), `expected local info in "${e.message}"`); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + // No address or port | ||
| 39 | + { | ||
| 40 | + const e = util._exceptionWithHostPort(ENOENT, 'connect', null, 0); | ||
| 41 | + assert.strictEqual(e.address, null); | ||
| 42 | + assert.strictEqual(e.port, undefined); | ||
| 43 | + assert.ok(!e.message.includes('null'), `unexpected null in "${e.message}"`); | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + // Different syscall and error code | ||
| 47 | + { | ||
| 48 | + const e = util._exceptionWithHostPort(EACCES, 'bind', '0.0.0.0', 443); | ||
| 49 | + assert.strictEqual(e.code, util.getSystemErrorName(EACCES)); | ||
| 50 | + assert.strictEqual(e.syscall, 'bind'); | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + // Stack trace should not include _exceptionWithHostPort itself | ||
| 54 | + { | ||
| 55 | + const e = util._exceptionWithHostPort(ENOENT, 'connect', '127.0.0.1', 80); | ||
| 56 | + assert.ok(!e.stack.includes('_exceptionWithHostPort'), 'stack must not mention the wrapper'); | ||
| 57 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,52 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + | ||
| 3 | + require('../common'); | ||
| 4 | + const assert = require('node:assert'); | ||
| 5 | + const { spawnSync } = require('node:child_process'); | ||
| 6 | + const { getCallSites } = require('node:util'); | ||
| 7 | + const fixtures = require('../common/fixtures'); | ||
| 8 | + | ||
| 9 | + // mapCallSite falls back to the original call site when no source map is | ||
| 10 | + // registered for the current file. | ||
| 11 | + { | ||
| 12 | + const withoutMap = getCallSites(1); | ||
| 13 | + const withMap = getCallSites(1, { sourceMap: true }); | ||
| 14 | + // scriptName must be identical — no source map registered for this test file | ||
| 15 | + assert.strictEqual(withMap[0].scriptName, withoutMap[0].scriptName); | ||
| 16 | + // Both calls report the actual line in this file (they differ by one because | ||
| 17 | + // they are on consecutive source lines, which is expected). | ||
| 18 | + assert.ok(typeof withMap[0].lineNumber === 'number'); | ||
| 19 | + assert.ok(typeof withMap[0].columnNumber === 'number'); | ||
| 20 | + } | ||
| 21 | + | ||
| 22 | + // reconstructCallSite remaps call sites to the original source when | ||
| 23 | + // --enable-source-maps is active and a source map is found. | ||
| 24 | + { | ||
| 25 | + const file = fixtures.path('source-map', 'get-call-sites-mapped.js'); | ||
| 26 | + const { status, stderr, stdout } = spawnSync( | ||
| 27 | + process.execPath, | ||
| 28 | + ['--enable-source-maps', file], | ||
| 29 | + ); | ||
| 30 | + assert.strictEqual(status, 0, stderr.toString()); | ||
| 31 | + const callSite = JSON.parse(stdout.toString()); | ||
| 32 | + // scriptName should point to the original (unmapped) source file | ||
| 33 | + assert.ok( | ||
| 34 | + callSite.scriptName.endsWith('get-call-sites-original.js'), | ||
| 35 | + `expected original source in scriptName, got "${callSite.scriptName}"`, | ||
| 36 | + ); | ||
| 37 | + // lineNumber and columnNumber should reflect the original source position | ||
| 38 | + assert.strictEqual(callSite.lineNumber, 11); | ||
| 39 | + assert.strictEqual(callSite.columnNumber, 1); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + // Without --enable-source-maps the generated file path is preserved. | ||
| 43 | + { | ||
| 44 | + const file = fixtures.path('source-map', 'get-call-sites-mapped.js'); | ||
| 45 | + const { status, stderr, stdout } = spawnSync(process.execPath, [file]); | ||
| 46 | + assert.strictEqual(status, 0, stderr.toString()); | ||
| 47 | + const callSite = JSON.parse(stdout.toString()); | ||
| 48 | + assert.ok( | ||
| 49 | + callSite.scriptName.endsWith('get-call-sites-mapped.js'), | ||
| 50 | + `expected generated file in scriptName, got "${callSite.scriptName}"`, | ||
| 51 | + ); | ||
| 52 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments