From 58d1cc1627927aea05d32bce7cd23498525879ae Mon Sep 17 00:00:00 2001 From: Artem Yarulin Date: Fri, 13 Mar 2026 21:40:02 +0200 Subject: [PATCH] fix(tests): Lib testing fails because there is no profiler available and also ensure --enable-source-maps flag in worker --- lib/v8.js | 7 +++++-- src/internal_binding/binding_worker.cc | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/v8.js b/lib/v8.js index 216c250fc..cd05aab38 100644 --- a/lib/v8.js +++ b/lib/v8.js @@ -56,6 +56,9 @@ if (internalBinding('config').hasInspector) { profiler = internalBinding('profiler'); } +// HACK(edgejs): Proper fix is to implement the profiler binding instead of patching JS exports. +function noop() {} + const assert = require('internal/assert'); const { inspect } = require('internal/util/inspect'); const { FastBuffer } = require('internal/buffer'); @@ -505,8 +508,8 @@ module.exports = { DefaultSerializer, DefaultDeserializer, deserialize, - takeCoverage: profiler.takeCoverage, - stopCoverage: profiler.stopCoverage, + takeCoverage: profiler.takeCoverage ?? noop, + stopCoverage: profiler.stopCoverage ?? noop, serialize, writeHeapSnapshot, promiseHooks, diff --git a/src/internal_binding/binding_worker.cc b/src/internal_binding/binding_worker.cc index 4f59fff41..06d665621 100644 --- a/src/internal_binding/binding_worker.cc +++ b/src/internal_binding/binding_worker.cc @@ -479,6 +479,12 @@ bool IsDisallowedWorkerExecArgvFlag(const std::string& flag) { flag == "--redirect-warnings"; } +bool IsAlwaysAllowedWorkerExecArgvFlag(const std::string& flag) { + // Node allows source map support in worker execArgv, and userland test + // runners like AVA rely on that behavior for worker startup. + return flag == "--enable-source-maps"; +} + std::vector ValidateExecArgv(napi_env env, const std::vector& args, bool explicitly_provided) { @@ -489,6 +495,7 @@ std::vector ValidateExecArgv(napi_env env, std::string flag = arg; const size_t eq = flag.find('='); if (eq != std::string::npos) flag.resize(eq); + if (IsAlwaysAllowedWorkerExecArgvFlag(flag)) continue; if (IsDisallowedWorkerExecArgvFlag(flag) || !IsAllowedNodeEnvironmentFlag(env, flag)) { invalid.push_back(arg); }