import Foundationimport Testing@testable import CodexBarCore struct CodexExecutableResolverTests { @Test func `explicit native override skips login path capture`() { let resolved = resolveCodexExecutableForRPC( environment: ["CODEX_CLI_PATH": "/usr/bin/true"], executable: "codex", captureLoginPATH: { Issue.record("Native override should not capture a login-shell PATH") return nil }) #expect(resolved?.executable == "/usr/bin/true") #expect(resolved?.loginPATH == nil) } @Test func `explicit script override captures login path for env based launchers`() throws { let scriptURL = FileManager.default.temporaryDirectory .appendingPathComponent("codexbar-script-override-\(UUID().uuidString)") try Data("#!/usr/bin/env node\n".utf8).write(to: scriptURL) try FileManager.default.setAttributes([.posixPermissions: 0o700], ofItemAtPath: scriptURL.path) defer { try? FileManager.default.removeItem(at: scriptURL) } let loginPATH = ["/custom/node/bin", "/usr/bin"] var captureCount = 0 let resolved = resolveCodexExecutableForRPC( environment: ["CODEX_CLI_PATH": scriptURL.path], executable: "codex", captureLoginPATH: { captureCount += 1 return loginPATH }) #expect(resolved?.executable == scriptURL.path) #expect(resolved?.loginPATH == loginPATH) #expect(captureCount == 1) }}
import Foundation
import Testing
@testable import CodexBarCore
struct CodexExecutableResolverTests {
@Test
func `explicit native override skips login path capture`() {
let resolved = resolveCodexExecutableForRPC(
environment: ["CODEX_CLI_PATH": "/usr/bin/true"],
executable: "codex",
captureLoginPATH: {
Issue.record("Native override should not capture a login-shell PATH")
return nil
})
#expect(resolved?.executable == "/usr/bin/true")
#expect(resolved?.loginPATH == nil)
}
@Test
func `explicit script override captures login path for env based launchers`() throws {
let scriptURL = FileManager.default.temporaryDirectory
.appendingPathComponent("codexbar-script-override-\(UUID().uuidString)")
try Data("#!/usr/bin/env node\n".utf8).write(to: scriptURL)
try FileManager.default.setAttributes([.posixPermissions: 0o700], ofItemAtPath: scriptURL.path)
defer { try? FileManager.default.removeItem(at: scriptURL) }
let loginPATH = ["/custom/node/bin", "/usr/bin"]
var captureCount = 0
let resolved = resolveCodexExecutableForRPC(
environment: ["CODEX_CLI_PATH": scriptURL.path],
executable: "codex",
captureLoginPATH: {
captureCount += 1
return loginPATH
})
#expect(resolved?.executable == scriptURL.path)
#expect(resolved?.loginPATH == loginPATH)
#expect(captureCount == 1)
}
}