Permalink
Browse files

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 ayojs/ayo#63

Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information...
addaleax authored and cjihrig committed Sep 18, 2017
1 parent 7a23a59 commit 7fad10cc7e6070518696654bda159ce582259455
Showing with 10 additions and 8 deletions.
  1. +10 −8 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 .*\]$/);
}

0 comments on commit 7fad10c

Please sign in to comment.