diff options
| author | JJ Liebig <jonathan.liebig@gmail.com> | 2026-09-05 02:14:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-05 02:14:07 +0200 |
| commit | 987651a760cdfe4cd9493388e8c16b8f99643a05 (patch) | |
| tree | ac40df14ab6b2a270cf8a862b2cc838e2ae1b0d9 /src/detect/manifest | |
| parent | 8162e26509f7b91eb8dcfd47387d43af3f348bbb (diff) | |
fix: detect codex startup update prompts (#3636)
refs #3632
Diffstat (limited to 'src/detect/manifest')
| -rw-r--r-- | src/detect/manifest/tests.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/detect/manifest/tests.rs b/src/detect/manifest/tests.rs index 63345636..00730a44 100644 --- a/src/detect/manifest/tests.rs +++ b/src/detect/manifest/tests.rs @@ -932,6 +932,47 @@ fn codex_trust_directory_requires_live_top_region() { } #[test] +fn codex_startup_update_requires_complete_live_chooser() { + let chooser = "Update available! 0.153.0 -> 9.8.7\n\ + Run bun add -g @openai/codex to update.\n\n\ + › 1. Update now\n\ + 2. Skip until next version\n\n\ + Press enter to continue \n"; + let wrapped = "✨ Update available! 0.153.0\n\n\ + Release notes: https://example\n\n\ + › 1. Update now (runs `npm\n\ + install -g\n\ + @openai/codex`)\n\ + 2. Skip\n\ + 3. Skip until next\n\ + version\n\n\ + Press enter to continue\n"; + + for screen in [chooser, wrapped] { + let result = osc_explain(Agent::Codex, screen, "project", ""); + assert_eq!(result.state, AgentState::Blocked); + assert_eq!( + result.matched_rule.as_ref().map(|rule| rule.id.as_str()), + Some("startup_update") + ); + assert!(result.visible_blocker); + } + + for screen in [ + chooser.replace("Update now", "Install"), + format!("{wrapped}\n› Ask Codex to do anything\n"), + ] { + let result = osc_explain(Agent::Codex, &screen, "project", ""); + assert_eq!(result.state, AgentState::Idle); + assert_ne!( + result.matched_rule.as_ref().map(|rule| rule.id.as_str()), + Some("startup_update") + ); + assert!(!result.visible_blocker); + } +} + +#[test] fn codex_background_terminal_screen_does_not_override_osc_idle() { // Background terminal tasks can be long-lived helpers such as dev servers. // They should not make Codex look busy once the foreground turn is idle. |
