diff options
author | Michaël Zasso <targos@protonmail.com> | 2017-05-05 14:43:54 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2017-05-08 01:10:51 +0200 |
commit | 0a734fec885409a09b9d18319e4ea7f6f25e6a3e (patch) | |
tree | b18759803d629fd4c74e407cc20827c88a43838f /test | |
parent | 42958d1a75db003120557e3beb6ccf99a03f4043 (diff) | |
download | android-node-v8-0a734fec885409a09b9d18319e4ea7f6f25e6a3e.tar.gz android-node-v8-0a734fec885409a09b9d18319e4ea7f6f25e6a3e.tar.bz2 android-node-v8-0a734fec885409a09b9d18319e4ea7f6f25e6a3e.zip |
test: fix napi test_reference for recent V8
PR-URL: https://github.com/nodejs/node/pull/12864
Ref: https://github.com/nodejs/node/pull/12551#issuecomment-297949361
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/addons-napi/test_reference/test.js | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/test/addons-napi/test_reference/test.js b/test/addons-napi/test_reference/test.js index ddfec58f1f..30effe7eec 100644 --- a/test/addons-napi/test_reference/test.js +++ b/test/addons-napi/test_reference/test.js @@ -34,19 +34,6 @@ assert.strictEqual(test_reference.finalizeCount, 0); } { - // Weak reference - let value = test_reference.createExternalWithFinalize(); - assert.strictEqual(test_reference.finalizeCount, 0); - test_reference.createReference(value, 0); - assert.strictEqual(test_reference.referenceValue, value); - value = null; - global.gc(); // Value should be GC'd because there is only a weak ref - assert.strictEqual(test_reference.referenceValue, undefined); - assert.strictEqual(test_reference.finalizeCount, 1); - test_reference.deleteReference(); -} - -{ // Strong reference let value = test_reference.createExternalWithFinalize(); assert.strictEqual(test_reference.finalizeCount, 0); @@ -85,3 +72,19 @@ assert.strictEqual(test_reference.finalizeCount, 0); global.gc(); // Value was already GC'd assert.strictEqual(test_reference.finalizeCount, 1); } + +{ + // Weak reference + let value = test_reference.createExternalWithFinalize(); + assert.strictEqual(test_reference.finalizeCount, 0); + test_reference.createReference(value, 0); + assert.strictEqual(test_reference.referenceValue, value); + value = null; + setImmediate(common.mustCall(() => { + // This test only works if gc() is called from an immediate callback. + global.gc(); // Value should be GC'd because there is only a weak ref + assert.strictEqual(test_reference.referenceValue, undefined); + assert.strictEqual(test_reference.finalizeCount, 1); + test_reference.deleteReference(); + })); +} |