ci_group 0.1.0

RAII log groups for GitHub Actions and Azure Pipelines. Fixes swallowed logs.
Documentation
use std::process::Command;

#[test]
fn prints_group_markers() {
    let output = Command::new(env!("CARGO_BIN_EXE_basic"))
        .env("GITHUB_ACTIONS", "true")
        .output()
        .unwrap();
    
    let stdout = String::from_utf8_lossy(&output.stdout);
    assert!(stdout.contains("::group::Test Group"));
    assert!(stdout.contains("inside group"));
    assert!(stdout.contains("::endgroup::"));
}

#[test]
fn closes_group_on_panic() {
    let output = Command::new(env!("CARGO_BIN_EXE_panic"))
        .env("GITHUB_ACTIONS", "true")
        .output()
        .unwrap();
    
    let stdout = String::from_utf8_lossy(&output.stdout);
    assert!(stdout.contains("::group::Panic Group"));
    assert!(stdout.contains("::endgroup::"));
}

#[test]
fn silent_outside_github() {
    let output = Command::new(env!("CARGO_BIN_EXE_basic"))
        .env_remove("GITHUB_ACTIONS")
        .output()
        .unwrap();
    
    let stdout = String::from_utf8_lossy(&output.stdout);
    assert!(!stdout.contains("::group::"));
    assert!(!stdout.contains("::endgroup::"));
    assert!(stdout.contains("inside group"));
}

#[test]
fn handles_missing_newline() {
    let output = Command::new(env!("CARGO_BIN_EXE_no_newline"))
        .env("GITHUB_ACTIONS", "true")
        .output()
        .unwrap();
    
    let stdout = String::from_utf8_lossy(&output.stdout);
    assert!(stdout.contains("\n::group::After Print"));
    assert!(stdout.contains("\n::endgroup::"));
}