mirror of https://github.com/lukechilds/node.git
Browse Source
Fixes a persistently troublesome failing test by splitting it out into multiple parallel tests. Reviewed By: Evan Lucas <evanlucas@me.com> Reviewed By: Trevor Norris <trev.norris@gmail.com> Reviewed By: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/3287v5.x
Rich Trott
9 years ago
committed by
James M Snell
5 changed files with 119 additions and 69 deletions
@ -0,0 +1,22 @@ |
|||
'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); |
|||
|
|||
const maxString = buf.toString('binary'); |
|||
assert.equal(maxString.length, kStringMaxLength); |
@ -0,0 +1,52 @@ |
|||
'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 buf1 = 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'); |
|||
}, /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); |
|||
assert.equal(maxString.length, kStringMaxLength); |
|||
maxString = undefined; |
|||
|
|||
maxString = buf1.toString('binary', 0, kStringMaxLength); |
|||
assert.equal(maxString.length, kStringMaxLength); |
|||
// Free the memory early instead of at the end of the next assignment
|
|||
maxString = undefined; |
@ -0,0 +1,22 @@ |
|||
'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 buf2 = new Buffer(kStringMaxLength + 2); |
|||
|
|||
const maxString = buf2.toString('utf16le'); |
|||
assert.equal(maxString.length, (kStringMaxLength + 2) / 2); |
@ -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 buf0 = new Buffer(kStringMaxLength * 2 + 2); |
|||
|
|||
assert.throws(function() { |
|||
buf0.toString('utf16le'); |
|||
}, /toString failed/); |
Loading…
Reference in new issue