2025-10-29 12:29:28 +00:00
#![ cfg(not(target_os = " windows " )) ]
use anyhow ::Ok ;
use codex_core ::features ::Feature ;
use codex_core ::protocol ::DeprecationNoticeEvent ;
use codex_core ::protocol ::EventMsg ;
use core_test_support ::responses ::start_mock_server ;
use core_test_support ::skip_if_no_network ;
use core_test_support ::test_codex ::TestCodex ;
use core_test_support ::test_codex ::test_codex ;
use core_test_support ::wait_for_event_match ;
use pretty_assertions ::assert_eq ;
#[ tokio::test(flavor = " multi_thread " , worker_threads = 2) ]
async fn emits_deprecation_notice_for_legacy_feature_flag ( ) -> anyhow ::Result < ( ) > {
skip_if_no_network! ( Ok ( ( ) ) ) ;
let server = start_mock_server ( ) . await ;
let mut builder = test_codex ( ) . with_config ( | config | {
config . features . enable ( Feature ::StreamableShell ) ;
config . features . record_legacy_usage_force (
" experimental_use_exec_command_tool " ,
Feature ::StreamableShell ,
) ;
config . use_experimental_streamable_shell_tool = true ;
} ) ;
let TestCodex { codex , .. } = builder . build ( & server ) . await ? ;
let notice = wait_for_event_match ( & codex , | event | match event {
EventMsg ::DeprecationNotice ( ev ) = > Some ( ev . clone ( ) ) ,
_ = > None ,
} )
. await ;
let DeprecationNoticeEvent { summary , details } = notice ;
assert_eq! (
summary ,
" `experimental_use_exec_command_tool` is deprecated. Use `streamable_shell` instead. "
. to_string ( ) ,
) ;
assert_eq! (
details . as_deref ( ) ,
Some (
2025-11-04 13:02:27 -08:00
" Enable it with `--enable streamable_shell` or `[features].streamable_shell` in config.toml. See https://github.com/openai/codex/blob/main/docs/config.md#feature-flags for details. "
2025-10-29 12:29:28 +00:00
) ,
) ;
Ok ( ( ) )
}