diff --git a/test/README.md b/test/README.md index a40e800fef5921..73512413c02834 100644 --- a/test/README.md +++ b/test/README.md @@ -10,7 +10,9 @@ Tests for when the `--abort-on-uncaught-exception` flag is used. ### addons -Tests for [addon](https://nodejs.org/api/addons.html) functionality. +Tests for [addon](https://nodejs.org/api/addons.html) functionality along with +some tests that require an addon to function properly. + | Runs on CI | |:----------:| diff --git a/test/parallel/test-stringbytes-external-at-max.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js similarity index 73% rename from test/parallel/test-stringbytes-external-at-max.js rename to test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js index 624a94a63c4286..9903d6787acf1a 100644 --- a/test/parallel/test-stringbytes-external-at-max.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js @@ -1,7 +1,7 @@ 'use strict'; -// Flags: --expose-gc -const common = require('../common'); +const common = require('../../common'); +const binding = require('./build/Release/binding'); const assert = require('assert'); // v8 fails silently if string length > v8::String::kMaxLength @@ -14,13 +14,9 @@ if (!common.enoughTestMem) { console.log(skipMessage); return; } -assert(typeof gc === 'function', 'Run this test with --expose-gc'); try { var buf = Buffer.allocUnsafe(kStringMaxLength); - // Try to allocate memory first then force gc so future allocations succeed. - Buffer.allocUnsafe(2 * kStringMaxLength); - gc(); } catch (e) { // If the exception is not due to memory confinement then rethrow it. if (e.message !== 'Array buffer allocation failed') throw (e); @@ -28,5 +24,11 @@ try { return; } +// Ensure we have enough memory available for future allocations to succeed. +if (!binding.ensureAllocation(2 * kStringMaxLength)) { + console.log(skipMessage); + return; +} + const maxString = buf.toString('binary'); assert.equal(maxString.length, kStringMaxLength);