aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/gc.ts
diff options
context:
space:
mode:
authorGravatar Colin McDonnell <colinmcd94@gmail.com> 2023-03-02 17:36:47 -0800
committerGravatar GitHub <noreply@github.com> 2023-03-02 17:36:47 -0800
commitb469e5035161286abeb1a7726518d1afcc163a51 (patch)
tree2eb8c1e1e4d1adf726888b39d1c6f43795c65a1a /test/bun.js/gc.ts
parent27c35791185bd85337e312e12c87d5c22d7f3a52 (diff)
downloadbun-b469e5035161286abeb1a7726518d1afcc163a51.tar.gz
bun-b469e5035161286abeb1a7726518d1afcc163a51.tar.zst
bun-b469e5035161286abeb1a7726518d1afcc163a51.zip
Add fs/promises tests and migrate fs.test.js to TypeScript (#2279)
Diffstat (limited to 'test/bun.js/gc.ts')
-rw-r--r--test/bun.js/gc.ts26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/bun.js/gc.ts b/test/bun.js/gc.ts
new file mode 100644
index 000000000..b9d80116d
--- /dev/null
+++ b/test/bun.js/gc.ts
@@ -0,0 +1,26 @@
+export function gc(force: boolean = true) {
+ Bun.gc(force);
+}
+
+// we must ensure that finalizers are run
+// so that the reference-counting logic is exercised
+export function gcTick(trace = false) {
+ trace && console.trace("");
+ // console.trace("hello");
+ gc();
+ return new Promise(resolve => {
+ setTimeout(resolve, 0);
+ });
+}
+
+export function withoutAggressiveGC(block) {
+ if (!Bun.unsafe.gcAggressionLevel) return block();
+
+ const origGC = Bun.unsafe.gcAggressionLevel();
+ Bun.unsafe.gcAggressionLevel(0);
+ try {
+ return block();
+ } finally {
+ Bun.unsafe.gcAggressionLevel(origGC);
+ }
+}