Files
codex/codex-rs/app-server/src/main_tests.rs
T
Michael Bolin 881cf191d7 app-server: support -c config overrides (#26436)
## Why

The standalone `codex-app-server` binary already routed a
`CliConfigOverrides` value into app-server startup, but its own clap
args did not expose the shared `-c/--config` option. That meant
`codex-app-server -c key=value` was rejected before the existing config
override path could run, unlike the main `codex` CLI.

## What Changed

- Flatten `CliConfigOverrides` into `AppServerArgs` in
`codex-rs/app-server/src/main.rs`.
- Pass parsed overrides to `run_main_with_transport_options` instead of
always using `CliConfigOverrides::default()`.
- Add a binary parser test covering both `-c` and `--config` for the
standalone app-server.

## Verification

- `just test -p codex-app-server
app_server_accepts_cli_config_overrides`

The broader `just test -p codex-app-server` run was also attempted. It
compiled and ran 812 tests, with 796 passing, but failed in this local
sandbox on unrelated `sandbox-exec: sandbox_apply: Operation not
permitted` command-exec/turn integration paths and a skills watcher
timeout.
2026-06-04 18:05:54 +00:00

38 lines
890 B
Rust

use super::AppServerArgs;
use clap::Parser;
use pretty_assertions::assert_eq;
use toml::Value as TomlValue;
#[test]
fn app_server_accepts_cli_config_overrides() {
let args = AppServerArgs::try_parse_from([
"codex-app-server",
"-c",
"model=\"gpt-5-codex\"",
"--config",
"sandbox_mode=\"read-only\"",
"--listen",
"off",
])
.expect("parse app-server args");
let parsed_overrides = args
.config_overrides
.parse_overrides()
.expect("parse config overrides");
assert_eq!(
parsed_overrides,
vec![
(
"model".to_string(),
TomlValue::String("gpt-5-codex".to_string()),
),
(
"sandbox_mode".to_string(),
TomlValue::String("read-only".to_string()),
),
]
);
}