mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
### 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
90 lines
2.8 KiB
TypeScript
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);
|
|
}
|
|
});
|
|
});
|
|
});
|