Files
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

226 lines
8.1 KiB
Go

package agentstatus
import (
"os"
"path/filepath"
"runtime"
"testing"
)
func TestScanCodexPackageLayoutRecognizesNestedAndHoisted(t *testing.T) {
platform, ok := codexNpmPlatformDir(runtime.GOOS, runtime.GOARCH)
if !ok {
t.Skip("unsupported platform")
}
triple, ok := codexPlatformTargetTriple(runtime.GOOS, runtime.GOARCH)
if !ok {
t.Skip("unsupported platform triple")
}
for _, tc := range []struct{ name, layout string }{{"nested", "npm_nested"}, {"hoisted", "npm_or_bun_hoisted"}} {
t.Run(tc.name, func(t *testing.T) {
root := t.TempDir()
pkg := filepath.Join(root, "node_modules", "@openai", "codex")
writePackageManifest(t, pkg, "@openai/codex", "0.142.0")
launcher := filepath.Join(pkg, "bin", "codex")
writeExecutable(t, launcher, "#!/bin/sh\n")
var platformRoot string
if tc.layout == "npm_nested" {
platformRoot = filepath.Join(pkg, "node_modules", "@openai", platform)
} else {
platformRoot = filepath.Join(filepath.Dir(pkg), platform)
}
binary := filepath.Join(platformRoot, "vendor", triple, "bin", "codex")
if runtime.GOOS == "windows" {
binary += ".exe"
}
writeExecutable(t, binary, "#!/bin/sh\n")
scan := (Service{IsExecutableFile: isTestExecutable}).scanCodexPackageLayout(launcher)
if scan.LayoutType != tc.layout || !scan.PlatformBinaryExecutable {
t.Fatalf("scan = %#v, want %s executable", scan, tc.layout)
}
})
}
}
func TestScanCodexPackageLayoutRecognizesPnpmVirtualStore(t *testing.T) {
platform, platformOK := codexNpmPlatformDir(runtime.GOOS, runtime.GOARCH)
triple, tripleOK := codexPlatformTargetTriple(runtime.GOOS, runtime.GOARCH)
if !platformOK || !tripleOK {
t.Skip("unsupported platform")
}
root := t.TempDir()
storePkg := filepath.Join(root, "node_modules", ".pnpm", "@openai+codex@0.142.0", "node_modules", "@openai", "codex")
pkg := filepath.Join(root, "node_modules", "@openai", "codex")
writePackageManifest(t, storePkg, "@openai/codex", "0.142.0")
if err := os.MkdirAll(filepath.Dir(pkg), 0o755); err != nil {
t.Fatalf("mkdir pnpm scope: %v", err)
}
if err := os.Symlink(storePkg, pkg); err != nil {
t.Skipf("symlink node_modules @openai/codex unavailable: %v", err)
}
launcher := filepath.Join(storePkg, "bin", "codex")
writeExecutable(t, launcher, "#!/bin/sh\n")
visibleLauncher := filepath.Join(root, "node_modules", ".bin", "codex")
if err := os.MkdirAll(filepath.Dir(visibleLauncher), 0o755); err != nil {
t.Fatalf("mkdir pnpm .bin: %v", err)
}
if err := os.Symlink(launcher, visibleLauncher); err != nil {
t.Skipf("symlink pnpm launcher unavailable: %v", err)
}
binary := filepath.Join(filepath.Dir(storePkg), platform, "vendor", triple, "bin", "codex")
writeExecutable(t, binary, "#!/bin/sh\n")
scan := (Service{IsExecutableFile: isTestExecutable}).scanCodexPackageLayout(visibleLauncher)
if scan.LayoutType != "pnpm_virtual_store" || !scan.PlatformBinaryExecutable {
t.Fatalf("scan = %#v, want pnpm virtual-store executable", scan)
}
}
func TestScanCodexPackageLayoutUsesAncestorNodeModulesResolution(t *testing.T) {
platform, platformOK := codexNpmPlatformDir(runtime.GOOS, runtime.GOARCH)
triple, tripleOK := codexPlatformTargetTriple(runtime.GOOS, runtime.GOARCH)
if !platformOK || !tripleOK {
t.Skip("unsupported platform")
}
root := t.TempDir()
pkg := filepath.Join(
root,
"node_modules",
".bun",
"@openai+codex@0.142.0",
"node_modules",
"@openai",
"codex",
)
writePackageManifest(t, pkg, "@openai/codex", "0.142.0")
launcher := filepath.Join(pkg, "bin", "codex")
writeExecutable(t, launcher, "#!/bin/sh\n")
platformRoot := filepath.Join(root, "node_modules", "@openai", platform)
binary := filepath.Join(platformRoot, "vendor", triple, "bin", "codex")
if runtime.GOOS == "windows" {
binary += ".exe"
}
writeExecutable(t, binary, "#!/bin/sh\n")
scan := (Service{IsExecutableFile: isTestExecutable}).scanCodexPackageLayout(launcher)
resolvedPlatformRoot, err := filepath.EvalSymlinks(platformRoot)
if err != nil {
t.Fatalf("resolve platform root: %v", err)
}
if scan.PlatformPackagePath != resolvedPlatformRoot || !scan.PlatformBinaryExecutable {
t.Fatalf("scan = %#v, want platform package resolved from ancestor node_modules %q", scan, resolvedPlatformRoot)
}
}
func TestScanCodexPackageLayoutStandaloneIsNotApplicable(t *testing.T) {
root := t.TempDir()
launcher := filepath.Join(root, "codex")
writeExecutable(t, launcher, "#!/bin/sh\n")
scan := (Service{IsExecutableFile: isTestExecutable}).scanCodexPackageLayout(launcher)
if scan.LayoutType != "homebrew_or_standalone" || scan.PlatformPackageName != "" || scan.PlatformBinaryPresence != CodexPathNotApplicable {
t.Fatalf("scan = %#v, want standalone without platform claim", scan)
}
}
func TestScanCodexPackageLayoutSeparatesPackageBinaryAndExecutableEvidence(t *testing.T) {
platform, platformOK := codexNpmPlatformDir(runtime.GOOS, runtime.GOARCH)
triple, tripleOK := codexPlatformTargetTriple(runtime.GOOS, runtime.GOARCH)
if !platformOK || !tripleOK {
t.Skip("unsupported platform")
}
for _, test := range []struct {
name string
setup func(t *testing.T, packageRoot, binary string)
wantDetail string
wantRepair bool
}{
{
name: "package missing",
setup: func(_ *testing.T, _ string, _ string) {},
wantDetail: "platform_package_missing",
wantRepair: true,
},
{
name: "binary missing",
setup: func(t *testing.T, packageRoot, _ string) {
if err := os.MkdirAll(packageRoot, 0o755); err != nil {
t.Fatal(err)
}
},
wantDetail: "platform_binary_missing",
wantRepair: true,
},
{
name: "binary non executable",
setup: func(t *testing.T, packageRoot, binary string) {
if err := os.MkdirAll(packageRoot, 0o755); err != nil {
t.Fatal(err)
}
if err := os.MkdirAll(filepath.Dir(binary), 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(binary, []byte("not executable"), 0o644); err != nil {
t.Fatal(err)
}
},
wantDetail: "platform_binary_not_executable",
},
} {
t.Run(test.name, func(t *testing.T) {
root := t.TempDir()
pkg := filepath.Join(root, "node_modules", "@openai", "codex")
writePackageManifest(t, pkg, "@openai/codex", "0.142.0")
launcher := filepath.Join(pkg, "bin", "codex")
writeExecutable(t, launcher, "#!/bin/sh\n")
platformRoot := filepath.Join(pkg, "node_modules", "@openai", platform)
binary := filepath.Join(platformRoot, "vendor", triple, "bin", "codex")
if runtime.GOOS == "windows" {
binary += ".exe"
}
test.setup(t, platformRoot, binary)
scan := (Service{IsExecutableFile: isTestExecutable}).scanCodexPackageLayout(launcher)
wantDetail := test.wantDetail
if runtime.GOOS == "windows" && test.name == "binary non executable" {
// Windows does not expose Unix mode bits and production treats a
// regular file as executable after the path/extension check.
wantDetail = "platform_binary_ready"
}
if scan.PlatformBinaryDetailCode != wantDetail {
t.Fatalf("detail = %q, want %q; scan=%#v", scan.PlatformBinaryDetailCode, wantDetail, scan)
}
})
}
}
func TestCodexPathPresenceBrokenSymlinkIsUnknown(t *testing.T) {
path := filepath.Join(t.TempDir(), "broken")
if err := os.Symlink(filepath.Join(filepath.Dir(path), "missing"), path); err != nil {
t.Skipf("symlink unsupported: %v", err)
}
if got := codexPathPresence(path); got != CodexPathUnknown {
t.Fatalf("presence = %q, want unknown", got)
}
}
func TestCodexPathPresenceInaccessibleIsNotMissing(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("Windows ACL denial is not represented by chmod for the current user")
}
root := t.TempDir()
locked := filepath.Join(root, "locked")
if err := os.MkdirAll(locked, 0o700); err != nil {
t.Fatal(err)
}
path := filepath.Join(locked, "platform-binary")
if err := os.WriteFile(path, []byte("binary"), 0o600); err != nil {
t.Fatal(err)
}
if err := os.Chmod(locked, 0); err != nil {
t.Skipf("cannot create inaccessible directory: %v", err)
}
t.Cleanup(func() { _ = os.Chmod(locked, 0o700) })
if got := codexPathPresence(path); got != CodexPathInaccessible {
t.Fatalf("presence = %q, want inaccessible (never missing)", got)
}
}