Files
bun.sh/test/cli/bun.test.ts
Ciro Spaciari ab32a2fc4a fix(bun getcompletes) add windows support and remove TODO panic (#24620)
### What does this PR do?
Fixes https://linear.app/oven/issue/ENG-21509/panic-todo-in-completions
### How did you verify your code works?
Test
2025-11-12 12:41:47 -08:00

90 lines
2.8 KiB
TypeScript

import { spawnSync } from "bun";
import { describe, expect, test } from "bun:test";
import { bunEnv, bunExe } from "harness";
import fs from "node:fs";
import { tmpdir } from "node:os";
describe("bun", () => {
describe("NO_COLOR", () => {
for (const value of ["1", "0", "foo", " "]) {
test(`respects NO_COLOR=${JSON.stringify(value)} to disable color`, () => {
const { stdout } = spawnSync({
cmd: [bunExe()],
env: {
NO_COLOR: value,
},
});
expect(stdout.toString()).not.toMatch(/\u001b\[\d+m/);
});
}
for (const value of ["", undefined]) {
// TODO: need a way to fake a tty in order to test this,
// and cannot use FORCE_COLOR since that will always override NO_COLOR.
test.todo(`respects NO_COLOR=${JSON.stringify(value)} to enable color`, () => {
const { stdout } = spawnSync({
cmd: [bunExe()],
env:
value === undefined
? {}
: {
NO_COLOR: value,
},
});
expect(stdout.toString()).toMatch(/\u001b\[\d+m/);
});
}
});
describe("revision", () => {
test("revision generates version numbers correctly", () => {
var { stdout, exitCode } = Bun.spawnSync({
cmd: [bunExe(), "--version"],
env: bunEnv,
stderr: "inherit",
});
var version = stdout.toString().trim();
var { stdout, exitCode } = Bun.spawnSync({
cmd: [bunExe(), "--revision"],
env: bunEnv,
stderr: "inherit",
});
var revision = stdout.toString().trim();
expect(exitCode).toBe(0);
expect(revision).toStartWith(version);
// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
expect(revision).toMatch(
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,
);
});
});
describe("getcompletes", () => {
test("getcompletes should not panic and should not be empty", () => {
const { stdout, exitCode } = spawnSync({
cmd: [bunExe(), "getcompletes"],
env: bunEnv,
});
expect(exitCode).toBe(0);
expect(stdout.toString()).not.toBeEmpty();
});
});
describe("test command line arguments", () => {
test("test --config, issue #4128", () => {
const path = `${tmpdir()}/bunfig-${Date.now()}.toml`;
fs.writeFileSync(path, "[debug]");
const p = Bun.spawnSync({
cmd: [bunExe(), "--config=" + path],
env: {},
stderr: "inherit",
});
try {
expect(p.exitCode).toBe(0);
} finally {
fs.unlinkSync(path);
}
});
});
});