Files
oh-my-opencode/packages/omo-codex/scripts/install/git-bash.test.mjs
T
YeonGyu-Kim 37346a86f7 feat(codex): mirror git bash preflight locally
Plan: plans/codex-windows-git-bash-profile.md
2026-05-31 09:51:59 +09:00

71 lines
2.4 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import { resolveGitBash } from "./git-bash.mjs";
const programFilesGitBash = "C:\\Program Files\\Git\\bin\\bash.exe";
const programFilesX86GitBash = "C:\\Program Files (x86)\\Git\\bin\\bash.exe";
test("#given non-Windows platform #when resolving Git Bash #then no preflight is required", () => {
const result = resolveGitBash({
platform: "linux",
env: {},
exists: () => false,
where: () => [],
});
assert.deepEqual(result, { found: true, path: null, source: "not-required" });
});
test("#given Windows env override to bash.exe #when the file exists #then env path wins", () => {
const overridePath = "D:\\Tools\\Git\\bin\\bash.exe";
const result = resolveGitBash({
platform: "win32",
env: { OMO_CODEX_GIT_BASH_PATH: overridePath },
exists: (path) => path === overridePath,
where: () => [programFilesGitBash],
});
assert.deepEqual(result, { found: true, path: overridePath, source: "env" });
});
test("#given Windows standard paths are absent and PATH contains bash #when resolving #then uses where bash candidate", () => {
const pathCandidate = "E:\\Git\\bin\\bash.exe";
const result = resolveGitBash({
platform: "win32",
env: {},
exists: (path) => path === pathCandidate,
where: () => ["C:\\Windows\\System32\\bash.exe", pathCandidate],
});
assert.deepEqual(result, { found: true, path: pathCandidate, source: "path" });
});
test("#given Windows invalid env override #when resolving #then returns guidance without falling through", () => {
const overridePath = "D:\\Tools\\Git\\bin\\git.exe";
const result = resolveGitBash({
platform: "win32",
env: { OMO_CODEX_GIT_BASH_PATH: overridePath },
exists: () => true,
where: () => [programFilesGitBash],
});
assert.equal(result.found, false);
assert.deepEqual(result.checkedPaths, [overridePath]);
assert.match(result.installHint, /OMO_CODEX_GIT_BASH_PATH=C:\\path\\to\\bash\.exe/);
});
test("#given Windows without Git Bash #when resolving #then returns install guidance", () => {
const result = resolveGitBash({
platform: "win32",
env: {},
exists: () => false,
where: () => [],
});
assert.equal(result.found, false);
assert.deepEqual(result.checkedPaths, [programFilesGitBash, programFilesX86GitBash]);
assert.match(result.installHint, /winget install --id Git\.Git -e --source winget/);
assert.match(result.installHint, /rerun `bunx omo install --platform=codex`/);
});