Skip to content

Commit caf86ed

Browse files
committed
Updates for review feedback
- Make test cases more isolated with block scoping and reset finalize count - Fix order of actual, expected in asserts
1 parent 801c146 commit caf86ed

File tree

2 files changed

+71
-52
lines changed

2 files changed

+71
-52
lines changed

test/addons-napi/test_reference/test.js

+67-52
Original file line numberDiff line numberDiff line change
@@ -9,64 +9,79 @@ const test_reference = require(`./build/${common.buildType}/test_reference`);
99
// This test script uses external values with finalizer callbacks
1010
// in order to track when values get garbage-collected. Each invocation
1111
// of a finalizer callback increments the finalizeCount property.
12-
assert.strictEqual(0, test_reference.finalizeCount);
12+
assert.strictEqual(test_reference.finalizeCount, 0);
1313

14-
// External value without a finalizer
15-
let value = test_reference.createExternal();
16-
assert.strictEqual(typeof value, 'object');
17-
test_reference.checkExternal(value);
18-
value = null;
19-
global.gc();
20-
assert.strictEqual(0, test_reference.finalizeCount);
14+
{
15+
// External value without a finalizer
16+
let value = test_reference.createExternal();
17+
assert.strictEqual(test_reference.finalizeCount, 0);
18+
assert.strictEqual(typeof value, 'object');
19+
test_reference.checkExternal(value);
20+
value = null;
21+
global.gc();
22+
assert.strictEqual(test_reference.finalizeCount, 0);
23+
}
2124

22-
// External value with a finalizer
23-
value = test_reference.createExternalWithFinalize();
24-
assert.strictEqual(typeof value, 'object');
25-
test_reference.checkExternal(value);
26-
value = null;
27-
global.gc();
28-
assert.strictEqual(1, test_reference.finalizeCount);
25+
{
26+
// External value with a finalizer
27+
let value = test_reference.createExternalWithFinalize();
28+
assert.strictEqual(test_reference.finalizeCount, 0);
29+
assert.strictEqual(typeof value, 'object');
30+
test_reference.checkExternal(value);
31+
value = null;
32+
global.gc();
33+
assert.strictEqual(test_reference.finalizeCount, 1);
34+
}
2935

30-
// Weak reference
31-
value = test_reference.createExternalWithFinalize();
32-
test_reference.createReference(value, 0);
33-
assert.strictEqual(test_reference.referenceValue, value);
34-
value = null;
35-
global.gc(); // Value should be GC'd because there is only a weak ref
36-
assert.strictEqual(test_reference.referenceValue, undefined);
37-
assert.strictEqual(2, test_reference.finalizeCount);
38-
test_reference.deleteReference();
36+
{
37+
// Weak reference
38+
let value = test_reference.createExternalWithFinalize();
39+
assert.strictEqual(test_reference.finalizeCount, 0);
40+
test_reference.createReference(value, 0);
41+
assert.strictEqual(test_reference.referenceValue, value);
42+
value = null;
43+
global.gc(); // Value should be GC'd because there is only a weak ref
44+
assert.strictEqual(test_reference.referenceValue, undefined);
45+
assert.strictEqual(test_reference.finalizeCount, 1);
46+
test_reference.deleteReference();
47+
}
3948

40-
// Strong reference
41-
value = test_reference.createExternalWithFinalize();
42-
test_reference.createReference(value, 1);
43-
assert.strictEqual(test_reference.referenceValue, value);
44-
value = null;
45-
global.gc(); // Value should NOT be GC'd because there is a strong ref
46-
assert.strictEqual(2, test_reference.finalizeCount);
47-
test_reference.deleteReference();
48-
global.gc(); // Value should be GC'd because the strong ref was deleted
49-
assert.strictEqual(3, test_reference.finalizeCount);
49+
{
50+
// Strong reference
51+
let value = test_reference.createExternalWithFinalize();
52+
assert.strictEqual(test_reference.finalizeCount, 0);
53+
test_reference.createReference(value, 1);
54+
assert.strictEqual(test_reference.referenceValue, value);
55+
value = null;
56+
global.gc(); // Value should NOT be GC'd because there is a strong ref
57+
assert.strictEqual(test_reference.finalizeCount, 0);
58+
test_reference.deleteReference();
59+
global.gc(); // Value should be GC'd because the strong ref was deleted
60+
assert.strictEqual(test_reference.finalizeCount, 1);
61+
}
5062

51-
// Strong reference, increment then decrement to weak reference
52-
value = test_reference.createExternalWithFinalize();
53-
test_reference.createReference(value, 1);
54-
value = null;
55-
global.gc(); // Value should NOT be GC'd because there is a strong ref
56-
assert.strictEqual(3, test_reference.finalizeCount);
63+
{
64+
// Strong reference, increment then decrement to weak reference
65+
let value = test_reference.createExternalWithFinalize();
66+
assert.strictEqual(test_reference.finalizeCount, 0);
67+
test_reference.createReference(value, 1);
68+
value = null;
69+
global.gc(); // Value should NOT be GC'd because there is a strong ref
70+
assert.strictEqual(test_reference.finalizeCount, 0);
5771

58-
assert.strictEqual(test_reference.incrementRefcount(), 2);
59-
global.gc(); // Value should NOT be GC'd because there is a strong ref
60-
assert.strictEqual(3, test_reference.finalizeCount);
72+
assert.strictEqual(test_reference.incrementRefcount(), 2);
73+
global.gc(); // Value should NOT be GC'd because there is a strong ref
74+
assert.strictEqual(test_reference.finalizeCount, 0);
6175

62-
assert.strictEqual(test_reference.decrementRefcount(), 1);
63-
global.gc(); // Value should NOT be GC'd because there is a strong ref
64-
assert.strictEqual(3, test_reference.finalizeCount);
76+
assert.strictEqual(test_reference.decrementRefcount(), 1);
77+
global.gc(); // Value should NOT be GC'd because there is a strong ref
78+
assert.strictEqual(test_reference.finalizeCount, 0);
6579

66-
assert.strictEqual(test_reference.decrementRefcount(), 0);
67-
global.gc(); // Value should be GC'd because the ref is now weak!
68-
assert.strictEqual(4, test_reference.finalizeCount);
80+
assert.strictEqual(test_reference.decrementRefcount(), 0);
81+
global.gc(); // Value should be GC'd because the ref is now weak!
82+
assert.strictEqual(test_reference.finalizeCount, 1);
6983

70-
test_reference.deleteReference();
71-
global.gc(); // Value was already GC'd
72-
assert.strictEqual(4, test_reference.finalizeCount);
84+
test_reference.deleteReference();
85+
global.gc(); // Value was already GC'd
86+
assert.strictEqual(test_reference.finalizeCount, 1);
87+
}

test/addons-napi/test_reference/test_reference.c

+4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ napi_value CreateExternal(napi_env env, napi_callback_info info) {
2727
NULL, /* finalize_cb */
2828
NULL, /* finalize_hint */
2929
&result));
30+
31+
finalize_count = 0;
3032
return result;
3133
}
3234

@@ -41,6 +43,8 @@ napi_value CreateExternalWithFinalize(napi_env env, napi_callback_info info) {
4143
FinalizeExternal,
4244
NULL, /* finalize_hint */
4345
&result));
46+
47+
finalize_count = 0;
4448
return result;
4549
}
4650

0 commit comments

Comments
 (0)