hd-cli 0.2.0

CLI binary for hyperdocker - the `hd` command
use std::process::Command;

#[test]
fn hd_help_works() {
    let output = Command::new(env!("CARGO_BIN_EXE_hd"))
        .arg("--help")
        .output()
        .expect("failed to run hd");
    assert!(output.status.success());
    let stdout = String::from_utf8_lossy(&output.stdout);
    assert!(stdout.contains("Hyperdocker"));
    assert!(stdout.contains("init"));
    assert!(stdout.contains("up"));
}

#[test]
fn hd_init_creates_toml() {
    let dir = tempfile::TempDir::new().unwrap();
    let output = Command::new(env!("CARGO_BIN_EXE_hd"))
        .arg("init")
        .current_dir(dir.path())
        .output()
        .expect("failed to run hd init");
    assert!(output.status.success());
    assert!(dir.path().join("hd.toml").exists());

    let content = std::fs::read_to_string(dir.path().join("hd.toml")).unwrap();
    assert!(content.contains("[environment]"));
}

#[test]
fn hd_status_without_toml_fails() {
    let dir = tempfile::TempDir::new().unwrap();
    let output = Command::new(env!("CARGO_BIN_EXE_hd"))
        .arg("status")
        .current_dir(dir.path())
        .output()
        .expect("failed to run hd status");
    assert!(!output.status.success());
}