test: split up buffer tests for reliability
authorRich Trott <rtrott@gmail.com>
Mon, 12 Oct 2015 03:53:31 +0000 (20:53 -0700)
committerJames M Snell <jasnell@gmail.com>
Thu, 29 Oct 2015 15:38:43 +0000 (08:38 -0700)
The Pi 1's in CI don't always fail on the buffer.toString() tests. But
they time out sometimes, so let's split the tests up so they don't.

PR-URL: https://github.com/nodejs/node/pull/3323
Reviewed By: Evan Lucas <evanlucas@me.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed By: Trevor Norris <trev.norris@gmail.com>

test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js [new file with mode: 0644]
test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js [new file with mode: 0644]
test/parallel/test-stringbytes-external-exceed-max-by-1-binary.js [moved from test/parallel/test-stringbytes-external-exceed-max-by-1.js with 54% similarity]
test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js [new file with mode: 0644]
test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js [new file with mode: 0644]

diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js
new file mode 100644 (file)
index 0000000..e982cf9
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+require('../common');
+const assert = require('assert');
+
+// v8 fails silently if string length > v8::String::kMaxLength
+// v8::String::kMaxLength defined in v8.h
+const kStringMaxLength = process.binding('buffer').kStringMaxLength;
+
+try {
+  new Buffer(kStringMaxLength * 3);
+} catch(e) {
+  assert.equal(e.message, 'Invalid array buffer length');
+  console.log(
+      '1..0 # Skipped: intensive toString tests due to memory confinements');
+  return;
+}
+
+const buf = new Buffer(kStringMaxLength + 1);
+
+assert.throws(function() {
+  buf.toString('ascii');
+}, /toString failed/);
diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js
new file mode 100644 (file)
index 0000000..43a3358
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+require('../common');
+const assert = require('assert');
+
+// v8 fails silently if string length > v8::String::kMaxLength
+// v8::String::kMaxLength defined in v8.h
+const kStringMaxLength = process.binding('buffer').kStringMaxLength;
+
+try {
+  new Buffer(kStringMaxLength * 3);
+} catch(e) {
+  assert.equal(e.message, 'Invalid array buffer length');
+  console.log(
+      '1..0 # Skipped: intensive toString tests due to memory confinements');
+  return;
+}
+
+const buf = new Buffer(kStringMaxLength + 1);
+
+assert.throws(function() {
+  buf.toString('base64');
+}, /toString failed/);
@@ -16,37 +16,16 @@ try {
   return;
 }
 
-const buf1 = new Buffer(kStringMaxLength + 1);
+const buf = new Buffer(kStringMaxLength + 1);
 
 assert.throws(function() {
-  buf1.toString();
-}, /toString failed|Invalid array buffer length/);
-
-assert.throws(function() {
-  buf1.toString('ascii');
-}, /toString failed/);
-
-assert.throws(function() {
-  buf1.toString('utf8');
+  buf.toString('binary');
 }, /toString failed/);
 
-assert.throws(function() {
-  buf1.toString('binary');
-}, /toString failed/);
-
-assert.throws(function() {
-  buf1.toString('base64');
-}, /toString failed/);
-
-assert.throws(function() {
-  buf1.toString('hex');
-}, /toString failed/);
-
-var maxString = buf1.toString('binary', 1);
+var maxString = buf.toString('binary', 1);
 assert.equal(maxString.length, kStringMaxLength);
+// Free the memory early instead of at the end of the next assignment
 maxString = undefined;
 
-maxString = buf1.toString('binary', 0, kStringMaxLength);
+maxString = buf.toString('binary', 0, kStringMaxLength);
 assert.equal(maxString.length, kStringMaxLength);
-// Free the memory early instead of at the end of the next assignment
-maxString = undefined;
diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js
new file mode 100644 (file)
index 0000000..2937b4a
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+require('../common');
+const assert = require('assert');
+
+// v8 fails silently if string length > v8::String::kMaxLength
+// v8::String::kMaxLength defined in v8.h
+const kStringMaxLength = process.binding('buffer').kStringMaxLength;
+
+try {
+  new Buffer(kStringMaxLength * 3);
+} catch(e) {
+  assert.equal(e.message, 'Invalid array buffer length');
+  console.log(
+      '1..0 # Skipped: intensive toString tests due to memory confinements');
+  return;
+}
+
+const buf = new Buffer(kStringMaxLength + 1);
+
+assert.throws(function() {
+  buf.toString('hex');
+}, /toString failed/);
diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js
new file mode 100644 (file)
index 0000000..ee297a8
--- /dev/null
@@ -0,0 +1,27 @@
+'use strict';
+
+require('../common');
+const assert = require('assert');
+
+// v8 fails silently if string length > v8::String::kMaxLength
+// v8::String::kMaxLength defined in v8.h
+const kStringMaxLength = process.binding('buffer').kStringMaxLength;
+
+try {
+  new Buffer(kStringMaxLength * 3);
+} catch(e) {
+  assert.equal(e.message, 'Invalid array buffer length');
+  console.log(
+      '1..0 # Skipped: intensive toString tests due to memory confinements');
+  return;
+}
+
+const buf = new Buffer(kStringMaxLength + 1);
+
+assert.throws(function() {
+  buf.toString();
+}, /toString failed|Invalid array buffer length/);
+
+assert.throws(function() {
+  buf.toString('utf8');
+}, /toString failed/);