aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-05-05 14:43:54 +0200
committerMichaël Zasso <targos@protonmail.com>2017-05-08 01:10:51 +0200
commit0a734fec885409a09b9d18319e4ea7f6f25e6a3e (patch)
treeb18759803d629fd4c74e407cc20827c88a43838f /test
parent42958d1a75db003120557e3beb6ccf99a03f4043 (diff)
downloadandroid-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.js29
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();
+ }));
+}