From 58af085d9f299d2e0da69483840902f664f1d917 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Fri, 21 Dec 2018 13:20:21 -0500 Subject: [PATCH] test: refactor stdio handling in test-esm-cjs-main Set encoding on the stderr/stdout streams instead of calling data.toString(). Don't assume the complete expected messages arrive in a single event. PR-URL: https://github.com/nodejs/node/pull/25169 Reviewed-By: Colin Ihrig Reviewed-By: Daniel Bevenius --- test/es-module/test-esm-cjs-main.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/test/es-module/test-esm-cjs-main.js b/test/es-module/test-esm-cjs-main.js index 8577eccb9a0f65..8308308a2dce72 100644 --- a/test/es-module/test-esm-cjs-main.js +++ b/test/es-module/test-esm-cjs-main.js @@ -8,21 +8,20 @@ const assert = require('assert'); const entry = fixtures.path('/es-modules/cjs.js'); const child = spawn(process.execPath, ['--experimental-modules', entry]); -let experimentalWarning = false; -let validatedExecution = false; +let stderr = ''; +child.stderr.setEncoding('utf8'); child.stderr.on('data', (data) => { - if (!experimentalWarning) { - experimentalWarning = true; - return; - } - throw new Error(data.toString()); + stderr += data; }); +let stdout = ''; +child.stdout.setEncoding('utf8'); child.stdout.on('data', (data) => { - assert.strictEqual(data.toString(), 'executed\n'); - validatedExecution = true; + stdout += data; }); child.on('close', common.mustCall((code, signal) => { - assert.strictEqual(validatedExecution, true); assert.strictEqual(code, 0); assert.strictEqual(signal, null); + assert.strictEqual(stdout, 'executed\n'); + assert.strictEqual(stderr, `(node:${child.pid}) ` + + 'ExperimentalWarning: The ESM module loader is experimental.\n'); }));