From d38a4274e98ab188568f5dc4b6df2bbc722d6107 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Mon, 18 Sep 2017 03:48:06 +0200 Subject: [PATCH] test: make test-v8-serdes work without stdin If `stdin` was closed or referred to a file, this didn't work, because it was accessed via file descriptor. Instead, use another generic native object. cherry-picked from https://github.com/ayojs/ayo/pull/63 --- test/parallel/test-v8-serdes.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/test/parallel/test-v8-serdes.js b/test/parallel/test-v8-serdes.js index 981e196157812f..ad8666ee3ba877 100644 --- a/test/parallel/test-v8-serdes.js +++ b/test/parallel/test-v8-serdes.js @@ -20,6 +20,8 @@ const objects = [ circular ]; +const hostObject = new (process.binding('js_stream').JSStream)(); + const serializerTypeError = /^TypeError: Class constructor Serializer cannot be invoked without 'new'$/; const deserializerTypeError = @@ -63,8 +65,8 @@ const deserializerTypeError = { const ser = new v8.DefaultSerializer(); ser._writeHostObject = common.mustCall((object) => { - assert.strictEqual(object, process.stdin._handle); - const buf = Buffer.from('stdin'); + assert.strictEqual(object, hostObject); + const buf = Buffer.from('hostObjectTag'); ser.writeUint32(buf.length); ser.writeRawBytes(buf); @@ -74,23 +76,23 @@ const deserializerTypeError = }); ser.writeHeader(); - ser.writeValue({ val: process.stdin._handle }); + ser.writeValue({ val: hostObject }); const des = new v8.DefaultDeserializer(ser.releaseBuffer()); des._readHostObject = common.mustCall(() => { const length = des.readUint32(); const buf = des.readRawBytes(length); - assert.strictEqual(buf.toString(), 'stdin'); + assert.strictEqual(buf.toString(), 'hostObjectTag'); assert.deepStrictEqual(des.readUint64(), [1, 2]); assert.strictEqual(des.readDouble(), -0.25); - return process.stdin._handle; + return hostObject; }); des.readHeader(); - assert.strictEqual(des.readValue().val, process.stdin._handle); + assert.strictEqual(des.readValue().val, hostObject); } { @@ -101,12 +103,12 @@ const deserializerTypeError = ser.writeHeader(); assert.throws(() => { - ser.writeValue({ val: process.stdin._handle }); + ser.writeValue({ val: hostObject }); }, /foobar/); } { - assert.throws(() => v8.serialize(process.stdin._handle), + assert.throws(() => v8.serialize(hostObject), /^Error: Unknown host object type: \[object .*\]$/); }