#![ cfg( unix ) ]
mod cli_binary_test_helpers;
use cli_binary_test_helpers::{ fake_claude_dir, run_cli_with_env, stderr_str };
#[ test ]
#[ doc = "bug_reproducer(BUG-037)" ]
fn rate_limit_exit2_emits_labeled_message()
{
let ( _dir, path_val ) = fake_claude_dir( "exit 2" );
let out = run_cli_with_env(
&[ "--print", "--retry-on-rate-limit", "0", "--max-sessions", "0", "test" ],
&[ ( "PATH", &path_val ) ],
);
let err = stderr_str( &out );
assert!(
err.contains( "Error: rate limit (exit 2)" ),
"T09 (BUG-037): stderr must contain 'Error: rate limit (exit 2)'; got:\n{err}"
);
assert!(
!err.contains( "possible rate limit or quota exhaustion" ),
"T09 (BUG-037): generic phrase must be absent; got:\n{err}"
);
}
#[ test ]
#[ doc = "bug_reproducer(BUG-037)" ]
fn auth_error_pattern_in_stdout_emits_labeled_message()
{
let ( _dir, path_val ) = fake_claude_dir(
"echo 'Your organization does not have access to Claude'; exit 1",
);
let out = run_cli_with_env( &[ "--print", "test" ], &[ ( "PATH", &path_val ) ] );
let err = stderr_str( &out );
assert!(
err.contains( "Error: auth error" ),
"T10 (BUG-037): stderr must contain 'Error: auth error'; got:\n{err}"
);
assert!(
!err.contains( "possible rate limit or quota exhaustion" ),
"T10 (BUG-037): generic phrase must be absent; got:\n{err}"
);
}
#[ test ]
fn quota_exhausted_pattern_emits_labeled_message()
{
let ( _dir, path_val ) = fake_claude_dir(
"echo \"You've hit your limit\" >&2; exit 1",
);
let out = run_cli_with_env( &[ "--print", "test" ], &[ ( "PATH", &path_val ) ] );
let err = stderr_str( &out );
assert!(
err.contains( "Error: quota exhausted (exit 1)" ),
"T11 (TSK-253): stderr must contain 'Error: quota exhausted (exit 1)'; got:\n{err}"
);
assert!(
!err.contains( "rate limit" ),
"T11 (TSK-253): 'rate limit' must be absent for quota exhaustion; got:\n{err}"
);
}