From 8f987857e8efb22af5c8606163099f0070c15b58 Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 1 Jun 2026 22:16:06 +0900 Subject: [PATCH] test: cover nearest workspace override --- crates/manifest/src/profile.rs | 54 +++++++++++++++++++ .../artifacts/implementation-report.md | 6 +++ 2 files changed, 60 insertions(+) diff --git a/crates/manifest/src/profile.rs b/crates/manifest/src/profile.rs index 272ea02c..00f30b19 100644 --- a/crates/manifest/src/profile.rs +++ b/crates/manifest/src/profile.rs @@ -1643,6 +1643,60 @@ record_event_trace = false ); } + #[test] + fn workspace_local_override_uses_nearest_ancestor() { + let tmp = TempDir::new().unwrap(); + let workspace = tmp.path().join("project"); + let nested = workspace.join("nested"); + let child = nested.join("child"); + let parent_yoi = workspace.join(".yoi"); + let nested_yoi = nested.join(".yoi"); + std::fs::create_dir_all(&child).unwrap(); + std::fs::create_dir_all(&parent_yoi).unwrap(); + std::fs::create_dir_all(&nested_yoi).unwrap(); + std::fs::write( + parent_yoi.join(WORKSPACE_OVERRIDE_LOCAL_FILENAME), + r#" +[pod] +prompt_pack = "parent-prompts.toml" +[worker] +language = "parent" +"#, + ) + .unwrap(); + let nested_override_path = nested_yoi.join(WORKSPACE_OVERRIDE_LOCAL_FILENAME); + std::fs::write( + &nested_override_path, + r#" +[pod] +prompt_pack = "nested-prompts.toml" +[worker] +language = "nested" +"#, + ) + .unwrap(); + + let resolved = ProfileResolver::new() + .with_workspace_base(&child) + .resolve(&ProfileSelector::Default, ProfileResolveOptions::default()) + .unwrap(); + + assert_eq!(resolved.manifest.worker.language, "nested"); + assert_eq!( + resolved.manifest.pod.prompt_pack.as_deref(), + Some(nested_yoi.join("nested-prompts.toml").as_path()) + ); + assert_eq!( + resolved + .manifest + .profile + .as_ref() + .and_then(|snapshot| snapshot.workspace_override.as_ref()) + .map(|snapshot| snapshot.path.as_path()), + Some(nested_override_path.as_path()) + ); + } + #[test] fn workspace_local_override_rejects_runtime_pod_name() { let tmp = TempDir::new().unwrap(); diff --git a/work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/implementation-report.md b/work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/implementation-report.md index f6b032c9..3bb9d571 100644 --- a/work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/implementation-report.md +++ b/work-items/open/20260601-125240-workspace-local-manifest-override/artifacts/implementation-report.md @@ -19,4 +19,10 @@ Implemented workspace-local manifest override support. - `git diff --check` - `nix build .#yoi` +Reviewer follow-up validation: + +- `cargo test -p manifest workspace_local_override -- --nocapture` +- `./tickets.sh doctor` +- `git diff --check` + All completed successfully.