portforge 0.2.1

Modern cross-platform port inspector & manager for developers
Documentation
use assert_cmd::Command;
use predicates::prelude::*;

#[test]
fn test_cli_version() {
    let mut cmd = Command::cargo_bin("portforge").unwrap();
    cmd.arg("--version")
        .assert()
        .success()
        .stdout(predicate::str::contains("portforge"));
}

#[test]
fn test_cli_help() {
    let mut cmd = Command::cargo_bin("portforge").unwrap();
    cmd.arg("--help")
        .assert()
        .success()
        .stdout(predicate::str::contains("inspector and manager"))
        .stdout(predicate::str::contains("kill"))
        .stdout(predicate::str::contains("clean"))
        .stdout(predicate::str::contains("watch"));
}

#[test]
fn test_cli_kill_help() {
    let mut cmd = Command::cargo_bin("portforge").unwrap();
    cmd.args(["kill", "--help"])
        .assert()
        .success()
        .stdout(predicate::str::contains("force"));
}

#[test]
fn test_cli_clean_help() {
    let mut cmd = Command::cargo_bin("portforge").unwrap();
    cmd.args(["clean", "--help"])
        .assert()
        .success()
        .stdout(predicate::str::contains("dry-run"));
}

#[test]
fn test_cli_export_help() {
    let mut cmd = Command::cargo_bin("portforge").unwrap();
    cmd.args(["export", "--help"])
        .assert()
        .success()
        .stdout(predicate::str::contains("format"));
}

#[test]
fn test_cli_json_output() {
    let mut cmd = Command::cargo_bin("portforge").unwrap();
    cmd.args(["ps", "--json", "--all"]).assert().success();
}

#[test]
fn test_cli_inspect_nonexistent_port() {
    let mut cmd = Command::cargo_bin("portforge").unwrap();
    cmd.args(["inspect", "59999"])
        .assert()
        .failure()
        .stderr(predicate::str::contains("No process found"));
}

#[test]
fn test_cli_init_config() {
    let mut cmd = Command::cargo_bin("portforge").unwrap();
    cmd.arg("init-config")
        .assert()
        .success()
        .stdout(predicate::str::contains("configuration"));
}