codex: keep config cwd strictness in core

This commit is contained in:
pakrym-oai
2026-04-07 09:58:07 -07:00
parent d7e444524d
commit 3a6f1b6f75
3 changed files with 13 additions and 16 deletions
+12 -1
View File
@@ -164,8 +164,19 @@ impl ConfigApi {
pub(crate) async fn read(
&self,
params: ConfigReadParams,
mut params: ConfigReadParams,
) -> Result<ConfigReadResponse, JSONRPCErrorError> {
if let Some(cwd) = &mut params.cwd {
let absolute_cwd =
AbsolutePathBuf::relative_to_current_dir(cwd.as_str()).map_err(|err| {
JSONRPCErrorError {
code: INTERNAL_ERROR_CODE,
message: format!("invalid config cwd: {err}"),
data: None,
}
})?;
*cwd = absolute_cwd.to_string_lossy().into_owned();
}
let fallback_cwd = params.cwd.as_ref().map(PathBuf::from);
let mut response = self
.config_service()
+1 -1
View File
@@ -156,7 +156,7 @@ impl ConfigService {
) -> Result<ConfigReadResponse, ConfigServiceError> {
let layers = match params.cwd.as_deref() {
Some(cwd) => {
let cwd = AbsolutePathBuf::relative_to_current_dir(cwd).map_err(|err| {
let cwd = AbsolutePathBuf::try_from(PathBuf::from(cwd)).map_err(|err| {
ConfigServiceError::io("failed to resolve config cwd to an absolute path", err)
})?;
crate::config::ConfigBuilder::default()
-14
View File
@@ -232,20 +232,6 @@ async fn read_includes_origins_and_layers() {
));
}
#[tokio::test]
async fn read_accepts_relative_cwd() {
let tmp = tempdir().expect("tempdir");
let service = ConfigService::without_managed_config_for_tests(tmp.path().to_path_buf());
service
.read(ConfigReadParams {
include_layers: false,
cwd: Some(".".to_string()),
})
.await
.expect("relative cwd should resolve");
}
#[cfg(target_os = "macos")]
#[tokio::test]
async fn write_value_succeeds_when_managed_preferences_expand_home_directory_paths() -> Result<()> {