GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — test: fix test-abortsignal-drop-settled-signals flakiness · nodejs/node@8288f57

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • test/parallel
    • test-abortsignal-drop-settled-signals.mjs
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎test/parallel/test-abortsignal-drop-settled-signals.mjs‎

Copy file name to clipboardExpand all lines: test/parallel/test-abortsignal-drop-settled-signals.mjs
+16-23Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Flags: --expose_gc
22
//
33
import '../common/index.mjs';
4+
import { gcUntil } from '../common/gc.js';
45
import { describe, it } from 'node:test';
56

67
function makeSubsequentCalls(limit, done, holdReferences = false) {
@@ -141,37 +142,29 @@ it('drops settled dependant signals when signal is composite', (t, done) => {
141142
);
142143

143144
setImmediate(() => {
144-
global.gc();
145+
global.gc({ execution: 'async' }).then(() => {
146+
t.assert.strictEqual(composedSignalRef.deref(), undefined);
147+
t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 2);
148+
t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 1);
145149

146-
t.assert.strictEqual(composedSignalRef.deref(), undefined);
147-
t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 2);
148-
t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 1);
149-
150-
setImmediate(() => {
151-
t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 0);
152-
t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 0);
150+
setImmediate(() => {
151+
t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 0);
152+
t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 0);
153153

154-
done();
154+
done();
155+
});
155156
});
156157
});
157158
});
158159

159160
it('drops settled signals even when there are listeners', (t, done) => {
160-
runWithOrphanListeners(limit, (signalRefs) => {
161-
setImmediate(() => {
162-
global.gc();
163-
setImmediate(() => {
164-
global.gc(); // One more call needed to clean up the deeper composed signals
165-
setImmediate(() => {
166-
global.gc(); // One more call needed to clean up the deeper composed signals
167-
168-
const unGCedSignals = [...signalRefs].filter((ref) => ref.deref());
169-
170-
t.assert.strictEqual(unGCedSignals.length, 0);
161+
runWithOrphanListeners(limit, async (signalRefs) => {
162+
await gcUntil('all signals are GCed', () => {
163+
const unGCedSignals = [...signalRefs].filter((ref) => ref.deref());
171164

172-
done();
173-
});
174-
});
165+
return unGCedSignals.length === 0;
175166
});
167+
168+
done();
176169
});
177170
});

0 commit comments

Comments
0 (0)
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.