diff --git a/test/pummel/test-buffer-large-size-buffer-alloc-unsafe-slow.js b/test/pummel/test-buffer-large-size-buffer-alloc-unsafe-slow.js new file mode 100644 index 00000000000000..aafa0eaf66e06a --- /dev/null +++ b/test/pummel/test-buffer-large-size-buffer-alloc-unsafe-slow.js @@ -0,0 +1,18 @@ +'use strict'; +const common = require('../common'); + +// Buffer with size > INT32_MAX +common.skipIf32Bits(); + +const assert = require('node:assert'); +const size = 2 ** 31; + +// Test Buffer.allocUnsafe with size larger than integer range +try { + assert.throws(() => Buffer.allocUnsafeSlow(size).toString('utf8'), { code: 'ERR_STRING_TOO_LONG' }); +} catch (e) { + if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { + throw e; + } + common.skip('insufficient space for Buffer.allocUnsafeSlow'); +} diff --git a/test/pummel/test-buffer-large-size-buffer-alloc-unsafe.js b/test/pummel/test-buffer-large-size-buffer-alloc-unsafe.js new file mode 100644 index 00000000000000..4002f60082d835 --- /dev/null +++ b/test/pummel/test-buffer-large-size-buffer-alloc-unsafe.js @@ -0,0 +1,18 @@ +'use strict'; +const common = require('../common'); + +// Buffer with size > INT32_MAX +common.skipIf32Bits(); + +const assert = require('node:assert'); +const size = 2 ** 31; + +try { + // Test Buffer.allocUnsafe with size larger than integer range + assert.throws(() => Buffer.allocUnsafe(size).toString('utf8'), { code: 'ERR_STRING_TOO_LONG' }); +} catch (e) { + if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { + throw e; + } + common.skip('insufficient space for Buffer.allocUnsafe'); +} diff --git a/test/pummel/test-buffer-large-size-buffer-alloc.js b/test/pummel/test-buffer-large-size-buffer-alloc.js new file mode 100644 index 00000000000000..00a989affc48d5 --- /dev/null +++ b/test/pummel/test-buffer-large-size-buffer-alloc.js @@ -0,0 +1,18 @@ +'use strict'; +const common = require('../common'); + +// Buffer with size > INT32_MAX +common.skipIf32Bits(); + +const assert = require('node:assert'); +const size = 2 ** 31; + +// Test Buffer.alloc with size larger than integer range +try { + assert.throws(() => Buffer.alloc(size).toString('utf8'), { code: 'ERR_STRING_TOO_LONG' }); +} catch (e) { + if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { + throw e; + } + common.skip('insufficient space for Buffer.alloc'); +} diff --git a/test/pummel/test-buffer-large-size-buffer-write.js b/test/pummel/test-buffer-large-size-buffer-write.js new file mode 100644 index 00000000000000..6579e75ea85a08 --- /dev/null +++ b/test/pummel/test-buffer-large-size-buffer-write.js @@ -0,0 +1,22 @@ +'use strict'; +const common = require('../common'); + +// Buffer with size > INT32_MAX +common.skipIf32Bits(); + +const assert = require('node:assert'); +const kStringMaxLength = require('buffer').constants.MAX_STRING_LENGTH; + +const size = 2 ** 31; + +// Test Buffer.write with size larger than integer range +try { + const buf = Buffer.alloc(size); + assert.strictEqual(buf.write('a', 2, kStringMaxLength), 1); + assert.strictEqual(buf.write('a', 2, size), 1); +} catch (e) { + if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { + throw e; + } + common.skip('insufficient space for Buffer.alloc'); +} diff --git a/test/pummel/test-buffer-large-size-slowbuffer.js b/test/pummel/test-buffer-large-size-slowbuffer.js new file mode 100644 index 00000000000000..5ac058fb276a09 --- /dev/null +++ b/test/pummel/test-buffer-large-size-slowbuffer.js @@ -0,0 +1,22 @@ +'use strict'; +const common = require('../common'); + +// Buffer with size > INT32_MAX +common.skipIf32Bits(); + +const assert = require('node:assert'); +const { + SlowBuffer, +} = require('node:buffer'); + +const size = 2 ** 31; + +// Test SlowBuffer with size larger than integer range +try { + assert.throws(() => SlowBuffer(size).toString('utf8'), { code: 'ERR_STRING_TOO_LONG' }); +} catch (e) { + if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { + throw e; + } + common.skip('insufficient space for SlowBuffer'); +} diff --git a/test/pummel/test-buffer-large-size.js b/test/pummel/test-buffer-large-size.js deleted file mode 100644 index fc89d107b4d314..00000000000000 --- a/test/pummel/test-buffer-large-size.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; -const common = require('../common'); - -// Buffer with size > INT32_MAX -common.skipIf32Bits(); - -// Test Buffer size larger than integer range -const { test } = require('node:test'); -const assert = require('assert'); -const { - SlowBuffer, -} = require('buffer'); -const kStringMaxLength = require('buffer').constants.MAX_STRING_LENGTH; - -const stringTooLongError = { - message: `Cannot create a string longer than 0x${kStringMaxLength.toString(16)}` + - ' characters', - code: 'ERR_STRING_TOO_LONG', - name: 'Error', -}; - -const size = 2 ** 31; - -// Test Buffer.toString -test('Buffer.toString with too long size', () => { - try { - assert.throws(() => SlowBuffer(size).toString('utf8'), stringTooLongError); - assert.throws(() => Buffer.alloc(size).toString('utf8'), stringTooLongError); - assert.throws(() => Buffer.allocUnsafe(size).toString('utf8'), stringTooLongError); - assert.throws(() => Buffer.allocUnsafeSlow(size).toString('utf8'), stringTooLongError); - } catch (e) { - if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { - throw e; - } - common.skip('insufficient space for Buffer.alloc'); - } -}); - -// Test Buffer.write -test('Buffer.write with too long size', () => { - try { - const buf = Buffer.alloc(size); - assert.strictEqual(buf.write('a', 2, kStringMaxLength), 1); - assert.strictEqual(buf.write('a', 2, size), 1); - } catch (e) { - if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { - throw e; - } - common.skip('insufficient space for Buffer.alloc'); - } -});