From 8df69f0894a3382a1011ed681b3ebebc7b1567b3 Mon Sep 17 00:00:00 2001 From: Josh Haberman Date: Mon, 13 Mar 2017 15:10:53 -0700 Subject: Conformance test for JS now work, though 15 tests fail. --- conformance/conformance_nodejs.js | 40 +++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'conformance/conformance_nodejs.js') diff --git a/conformance/conformance_nodejs.js b/conformance/conformance_nodejs.js index 626e3bba..21f516bc 100755 --- a/conformance/conformance_nodejs.js +++ b/conformance/conformance_nodejs.js @@ -33,6 +33,7 @@ */ var conformance = require('conformance_pb'); +var test_messages_proto3 = require('google/protobuf/test_messages_proto3_pb'); var fs = require('fs'); var testCount = 0; @@ -42,10 +43,15 @@ function doTest(request) { var response = new conformance.ConformanceResponse(); try { + if (request.getRequestedOutputFormat() === conformance.WireFormat.JSON) { + response.setSkipped("JSON not supported."); + return response; + } + switch (request.getPayloadCase()) { case conformance.ConformanceRequest.PayloadCase.PROTOBUF_PAYLOAD: try { - testMessage = conformance.TestAllTypes.deserializeBinary( + testMessage = test_messages_proto3.TestAllTypes.deserializeBinary( request.getProtobufPayload()); } catch (err) { response.setParseError(err.toString()); @@ -62,14 +68,14 @@ function doTest(request) { } switch (request.getRequestedOutputFormat()) { - case conformance.UNSPECIFIED: + case conformance.WireFormat.UNSPECIFIED: response.setRuntimeError("Unspecified output format"); return response; - case conformance.PROTOBUF: + case conformance.WireFormat.PROTOBUF: response.setProtobufPayload(testMessage.serializeBinary()); - case conformance.JSON: + case conformance.WireFormat.JSON: response.setSkipped("JSON not supported."); return response; @@ -80,7 +86,7 @@ function doTest(request) { response.setRuntimeError(err.toString()); } - return response + return response; } function onEof(totalRead) { @@ -95,21 +101,22 @@ function onEof(totalRead) { function readBuffer(bytes) { var buf = new Buffer(bytes); var totalRead = 0; + //console.warn("Want to read: " + bytes); while (totalRead < bytes) { - var read; + var read = 0; try { + //console.warn("Trying to read: " + (bytes - totalRead)); read = fs.readSync(process.stdin.fd, buf, totalRead, bytes - totalRead); } catch (e) { if (e.code == 'EOF') { return onEof(totalRead) + } else if (e.code == 'EAGAIN') { } else { - throw "conformance_nodejs: Error reading from stdin."; + throw "conformance_nodejs: Error reading from stdin." + e; } } - if (read === 0) { - return onEof(totalRead); - } + //console.warn("Read: " + read); totalRead += read; } @@ -124,14 +131,6 @@ function writeBuffer(buffer) { } } -function uint8ArrayToBuffer(arr) { - var buffer = new Buffer(arr.length); - for (var i = 0; i < arr.length; i++) { - buffer[i] = arr[i]; - } - return buffer; -} - // Returns true if the test ran successfully, false on legitimate EOF. // If EOF is encountered in an unexpected place, raises IOError. function doTestIo() { @@ -146,6 +145,7 @@ function doTestIo() { throw "conformance_nodejs: Failed to read request."; } + serializedRequest = new Uint8Array(serializedRequest); var request = conformance.ConformanceRequest.deserializeBinary(serializedRequest); var response = doTest(request); @@ -155,7 +155,7 @@ function doTestIo() { lengthBuf = new Buffer(4); lengthBuf.writeInt32LE(serializedResponse.length, 0); writeBuffer(lengthBuf); - writeBuffer(uint8ArrayToBuffer(serializedResponse)); + writeBuffer(new Buffer(serializedResponse)); testCount += 1 @@ -164,7 +164,7 @@ function doTestIo() { while (true) { if (!doTestIo()) { - console.error('conformance_ruby: received EOF from test runner ' + + console.error('conformance_nodejs: received EOF from test runner ' + "after " + testCount + " tests, exiting") break; } -- cgit v1.2.3