mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
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 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
1 parent
57a716febd
commit
70670b056a
1 file changed
+10
-8
@@ -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 .*\]$/);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user