Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
test: skip experimental test with pointer compression
The test test/parallel/test-experimental-shared-value-conveyor.js was
added to test the --harmony-struct feature of V8. However, when used
with pointer compression, the process crashes. This commit skips
the test for pointer compression builds. This change uses a child
process because starting a Node pointer compression build with
--harmony-struct immediately crashes the process. Once this crash
is addresses, this commit can be reverted.
  • Loading branch information
cjihrig committed Jul 11, 2023
commit a646565b752bebe4324f80bb1df7ae7924b362e4
45 changes: 29 additions & 16 deletions test/parallel/test-experimental-shared-value-conveyor.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,38 @@
'use strict';

// Flags: --harmony-struct

const common = require('../common');
const assert = require('assert');
const { spawnSync } = require('child_process');
const { Worker, parentPort } = require('worker_threads');

// Do not use isMainThread so that this test itself can be run inside a Worker.
if (!process.env.HAS_STARTED_WORKER) {
process.env.HAS_STARTED_WORKER = 1;
const m = new globalThis.SharedArray(16);
if (process.env.TEST_CHILD_PROCESS === '1') {
// Do not use isMainThread so that this test itself can be run inside a Worker.
if (!process.env.HAS_STARTED_WORKER) {
process.env.HAS_STARTED_WORKER = 1;
const m = new globalThis.SharedArray(16);

const worker = new Worker(__filename);
worker.once('message', common.mustCall((message) => {
assert.strictEqual(message, m);
}));
const worker = new Worker(__filename);
worker.once('message', common.mustCall((message) => {
assert.strictEqual(message, m);
}));

worker.postMessage(m);
worker.postMessage(m);
} else {
parentPort.once('message', common.mustCall((message) => {
// Simple echo.
parentPort.postMessage(message);
}));
}
} else {
parentPort.once('message', common.mustCall((message) => {
// Simple echo.
parentPort.postMessage(message);
}));
if (process.config.variables.v8_enable_pointer_compression === 1) {
common.skip('--harmony-struct cannot be used with pointer compression');
}

const args = ['--harmony-struct', __filename];
const options = { env: { TEST_CHILD_PROCESS: '1' } };
Comment thread
cjihrig marked this conversation as resolved.
Outdated
const child = spawnSync(process.execPath, args, options);

assert.strictEqual(child.stderr.toString().trim(), '');
assert.strictEqual(child.stdout.toString().trim(), '');
assert.strictEqual(child.status, 0);
assert.strictEqual(child.signal, null);
}