From e6b2341d0dc548628e0445f81befe3f573ecfa78 Mon Sep 17 00:00:00 2001 From: Jake Yuesong Li Date: Tue, 8 Apr 2025 14:20:40 +0930 Subject: [PATCH 1/2] test: deflake test-buffer-large-size --- ...fer-large-size-buffer-alloc-unsafe-slow.js | 30 +++++++++++ ...t-buffer-large-size-buffer-alloc-unsafe.js | 30 +++++++++++ .../test-buffer-large-size-buffer-alloc.js | 30 +++++++++++ .../test-buffer-large-size-buffer-write.js | 25 +++++++++ .../test-buffer-large-size-slowbuffer.js | 33 ++++++++++++ test/pummel/test-buffer-large-size.js | 51 ------------------- 6 files changed, 148 insertions(+), 51 deletions(-) create mode 100644 test/pummel/test-buffer-large-size-buffer-alloc-unsafe-slow.js create mode 100644 test/pummel/test-buffer-large-size-buffer-alloc-unsafe.js create mode 100644 test/pummel/test-buffer-large-size-buffer-alloc.js create mode 100644 test/pummel/test-buffer-large-size-buffer-write.js create mode 100644 test/pummel/test-buffer-large-size-slowbuffer.js delete mode 100644 test/pummel/test-buffer-large-size.js 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..72c11c4fb304fd --- /dev/null +++ b/test/pummel/test-buffer-large-size-buffer-alloc-unsafe-slow.js @@ -0,0 +1,30 @@ +'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 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.allocUnsafeSlow with too long size', () => { + try { + 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.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..775f5b69223e7a --- /dev/null +++ b/test/pummel/test-buffer-large-size-buffer-alloc-unsafe.js @@ -0,0 +1,30 @@ +'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 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.allocUnsafe with too long size', () => { + try { + assert.throws(() => Buffer.allocUnsafe(size).toString('utf8'), stringTooLongError); + } 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..f0673149ccc77e --- /dev/null +++ b/test/pummel/test-buffer-large-size-buffer-alloc.js @@ -0,0 +1,30 @@ +'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 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.alloc too long size', () => { + try { + assert.throws(() => Buffer.alloc(size).toString('utf8'), stringTooLongError); + } 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..88d89dfb81246a --- /dev/null +++ b/test/pummel/test-buffer-large-size-buffer-write.js @@ -0,0 +1,25 @@ +'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 kStringMaxLength = require('buffer').constants.MAX_STRING_LENGTH; + +const size = 2 ** 31; + +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'); + } +}); 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..e11f3b9fcf9573 --- /dev/null +++ b/test/pummel/test-buffer-large-size-slowbuffer.js @@ -0,0 +1,33 @@ +'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('SlowBuffer.toString with too long size', () => { + try { + assert.throws(() => SlowBuffer(size).toString('utf8'), stringTooLongError); + } 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'); - } -}); From c76d93be0ec632d84100fc36caa807f49cafc091 Mon Sep 17 00:00:00 2001 From: Yuesong Jake Li Date: Wed, 9 Apr 2025 23:03:58 +0930 Subject: [PATCH 2/2] fixup! test only error code & simplify tests --- ...fer-large-size-buffer-alloc-unsafe-slow.js | 30 ++++++------------ ...t-buffer-large-size-buffer-alloc-unsafe.js | 30 ++++++------------ .../test-buffer-large-size-buffer-alloc.js | 30 ++++++------------ .../test-buffer-large-size-buffer-write.js | 25 +++++++-------- .../test-buffer-large-size-slowbuffer.js | 31 ++++++------------- 5 files changed, 48 insertions(+), 98 deletions(-) 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 index 72c11c4fb304fd..aafa0eaf66e06a 100644 --- a/test/pummel/test-buffer-large-size-buffer-alloc-unsafe-slow.js +++ b/test/pummel/test-buffer-large-size-buffer-alloc-unsafe-slow.js @@ -4,27 +4,15 @@ 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 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 assert = require('node:assert'); const size = 2 ** 31; -test('Buffer.allocUnsafeSlow with too long size', () => { - try { - 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.allocUnsafeSlow'); +// 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 index 775f5b69223e7a..4002f60082d835 100644 --- a/test/pummel/test-buffer-large-size-buffer-alloc-unsafe.js +++ b/test/pummel/test-buffer-large-size-buffer-alloc-unsafe.js @@ -4,27 +4,15 @@ 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 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 assert = require('node:assert'); const size = 2 ** 31; -test('Buffer.allocUnsafe with too long size', () => { - try { - assert.throws(() => Buffer.allocUnsafe(size).toString('utf8'), stringTooLongError); - } catch (e) { - if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { - throw e; - } - common.skip('insufficient space for Buffer.allocUnsafe'); +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 index f0673149ccc77e..00a989affc48d5 100644 --- a/test/pummel/test-buffer-large-size-buffer-alloc.js +++ b/test/pummel/test-buffer-large-size-buffer-alloc.js @@ -4,27 +4,15 @@ 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 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 assert = require('node:assert'); const size = 2 ** 31; -test('Buffer.alloc too long size', () => { - try { - assert.throws(() => Buffer.alloc(size).toString('utf8'), stringTooLongError); - } catch (e) { - if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { - throw e; - } - common.skip('insufficient space for Buffer.alloc'); +// 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 index 88d89dfb81246a..6579e75ea85a08 100644 --- a/test/pummel/test-buffer-large-size-buffer-write.js +++ b/test/pummel/test-buffer-large-size-buffer-write.js @@ -4,22 +4,19 @@ 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 assert = require('node:assert'); const kStringMaxLength = require('buffer').constants.MAX_STRING_LENGTH; const size = 2 ** 31; -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'); +// 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 index e11f3b9fcf9573..5ac058fb276a09 100644 --- a/test/pummel/test-buffer-large-size-slowbuffer.js +++ b/test/pummel/test-buffer-large-size-slowbuffer.js @@ -4,30 +4,19 @@ 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 assert = require('node: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', -}; +} = require('node:buffer'); const size = 2 ** 31; -test('SlowBuffer.toString with too long size', () => { - try { - assert.throws(() => SlowBuffer(size).toString('utf8'), stringTooLongError); - } catch (e) { - if (e.code !== 'ERR_MEMORY_ALLOCATION_FAILED') { - throw e; - } - common.skip('insufficient space for SlowBuffer'); +// 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'); +}