35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
import { bunEnv, bunExe } from "harness";
|
|
|
|
test("ENG-22243: RedisClient cannot be called without 'new'", async () => {
|
|
await using proc = Bun.spawn({
|
|
cmd: [bunExe(), "-e", "const t8 = Bun.RedisClient; t8();"],
|
|
env: bunEnv,
|
|
stderr: "pipe",
|
|
});
|
|
|
|
const [stderr, exitCode] = await Promise.all([proc.stderr.text(), proc.exited]);
|
|
|
|
expect(stderr).toContain("RedisClient constructor cannot be invoked without 'new'");
|
|
expect(exitCode).toBe(1);
|
|
});
|
|
|
|
test("ENG-22243: RedisClient works with 'new'", async () => {
|
|
await using proc = Bun.spawn({
|
|
cmd: [bunExe(), "-e", "try { new Bun.RedisClient(); } catch (e) { console.log('OK'); }"],
|
|
env: bunEnv,
|
|
stdout: "pipe",
|
|
stderr: "pipe",
|
|
});
|
|
|
|
const [stdout, stderr, exitCode] = await Promise.all([proc.stdout.text(), proc.stderr.text(), proc.exited]);
|
|
|
|
// Either it works and prints OK, or it fails with a connection error (which is fine)
|
|
if (stdout.includes("OK")) {
|
|
expect(exitCode).toBe(0);
|
|
} else {
|
|
// If it doesn't print OK, it should fail with a connection-related error, not a "cannot be invoked" error
|
|
expect(stderr).not.toContain("cannot be invoked without 'new'");
|
|
}
|
|
});
|