Skip to content

Commit 2eed2f6

Browse files
authored
Merge pull request #510 from perrin4869/chore/nodejs/test-worker-threads
Node.JS bindings Worker threads segfault reproduction
2 parents 40b82ac + a01c7d6 commit 2eed2f6

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

bindings/js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
],
2929
"scripts": {
3030
"install": "node-gyp-build",
31-
"test": "node test.js",
31+
"test": "node test/index.js && node test/worker.js",
3232
"prebuildify": "prebuildify --napi --strip"
3333
},
3434
"homepage": "https://github.com/tdewolff/minify#readme",
File renamed without changes.

bindings/js/test/worker.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { Worker, isMainThread, workerData, parentPort } from 'node:worker_threads';
2+
3+
if (isMainThread) {
4+
let input = "<html><span style=\"color:#ff0000;\">A phrase</span>";
5+
const worker = new Worker(new URL(import.meta.url), {
6+
workerData: input,
7+
});
8+
9+
let expected = "<html><span style=color:red>A phrase</span>";
10+
let output = await new Promise((resolve, reject) => {
11+
worker.on('message', resolve);
12+
worker.on('error', reject);
13+
worker.on('exit', (code) => {
14+
if (code !== 0)
15+
reject(new Error(`Worker stopped with exit code ${code}`));
16+
});
17+
})
18+
if (output != expected) {
19+
throw "unexpected output using worker threads: '"+output+"' instead of '"+expected+"'";
20+
}
21+
await worker.terminate();
22+
} else {
23+
const { config, string } = await import('@tdewolff/minify');
24+
config({'html-keep-document-tags': true})
25+
parentPort.postMessage(string("text/html", workerData));
26+
}

0 commit comments

Comments
 (0)