magi-code 0.77.1

Repository-aware CLI coding agent for terminal work
Documentation
use super::support::*;
use super::*;

#[test]
fn bang_prompt_submit_starts_bash_worker_without_provider_auth() {
    let temp = tempfile::TempDir::new().unwrap();
    let manager = SessionManager::new(temp.path().join("sessions"));
    let session = manager.create().unwrap();
    let (sender, receiver) = bounded::<TuiEvent>(32);
    let mut app = test_app_with_active_session(&temp, sender, Some(session.clone()));
    app.state.auth_state = crate::config::AuthState::Missing {
        provider: crate::providers::OPENAI_CODEX_PROVIDER.to_string(),
    };
    let mut ui_state = state::MissionControlState::default();

    let accepted = app.submit(
        "!printf hi".to_string(),
        &mut ui_state,
        &receiver,
        test_area(),
    );

    assert!(accepted);
    assert_eq!(ui_state.status, "bash-mode: running command…");
    assert!(app.active_run);

    if let Some(worker) = app.worker.take() {
        worker.handle.join().unwrap();
    }
    let result = drain_tui_events(&receiver, &mut ui_state);

    assert!(result.run_finished);
    assert!(
        !ui_state
            .transcript
            .iter()
            .any(|line| line.starts_with("you: ")),
        "transcript: {:?}",
        ui_state.transcript
    );
    assert!(
        ui_state
            .transcript
            .iter()
            .any(|line| line == "bash: printf hi"),
        "transcript: {:?}",
        ui_state.transcript
    );
    assert!(
        ui_state
            .transcript
            .iter()
            .any(|line| line.starts_with("tool: ✓ bash")),
        "transcript: {:?}",
        ui_state.transcript
    );
    assert!(
        ui_state
            .transcript
            .iter()
            .all(|line| !line.contains("provider not configured"))
    );
    let events = session.read_events().unwrap();
    assert!(events.is_empty(), "events: {events:?}");
}