Skip to content

Commit

Permalink
test: split up buffer tests for reliability
Browse files Browse the repository at this point in the history
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: #3323
Reviewed By: Evan Lucas <evanlucas@me.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed By: Trevor Norris <trev.norris@gmail.com>
  • Loading branch information
Trott authored and jasnell committed Oct 28, 2015
1 parent c76ef6c commit a8425ab
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 26 deletions.
23 changes: 23 additions & 0 deletions test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js
Original file line number Diff line number Diff line change
@@ -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/);
23 changes: 23 additions & 0 deletions test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js
Original file line number Diff line number Diff line change
@@ -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/);
Original file line number Diff line number Diff line change
Expand Up @@ -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;
23 changes: 23 additions & 0 deletions test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js
Original file line number Diff line number Diff line change
@@ -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/);
27 changes: 27 additions & 0 deletions test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js
Original file line number Diff line number Diff line change
@@ -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/);

0 comments on commit a8425ab

Please sign in to comment.