'use strict'; const common = require('../common'); const assert = require('assert'); const fixtures = require('../common/fixtures'); const { spawnSync } = require('child_process'); if (process.env.NODE_TEST_WPT_MODIFIER_PROBE === '1') { const { WPTRunner } = require('../common/wpt'); const runner = new WPTRunner('html/webappapis/atob'); runner.setScriptModifier(common.mustCall((script) => { assert.strictEqual(script.filename, fixtures.path('wpt', 'html/webappapis/atob', 'base64.any.js')); script.filename += '.modified'; script.code = `test(() => { assert_true(new Error().stack.includes(${JSON.stringify(`${script.filename}:`)})); }, 'modified script retains its filename');`; }, 2)); runner.runJsTests(); } else { // eslint-disable-next-line no-unused-vars const { NODE_TEST_WPT, WPT_REPORT, WPT_INSPECT, ...env } = { ...process.env, NODE_TEST_WPT_MODIFIER_PROBE: '1' }; for (const backend of ['thread', 'process']) { const result = spawnSync(process.execPath, [__filename, 'base64.any.js'], { env: { ...env, WPT_BACKEND: backend }, encoding: 'utf8', timeout: common.platformTimeout(10_000), }); const { error, status, stdout, stderr } = result; assert.ifError(error); assert.strictEqual(status, 0, stdout + stderr); const results = stdout.split('\n').filter((line) => line.startsWith('[PASS]')); assert.deepStrictEqual(results.sort(), [ '[PASS] html/webappapis/atob/base64.any.html: modified script retains its filename', '[PASS] html/webappapis/atob/base64.any.worker.html: modified script retains its filename', ]); } }