wait-for-them 0.5.1

Waits for TCP ports to be opened or for 200 status on http(s) urls
Documentation
use assert_cmd::Command;
use std::time::Duration;

mod common;

#[test]
fn basic() {
    let server = common::TestServer::new(4000, Duration::from_millis(10));

    let mut cmd = Command::cargo_bin("wait-for-them").unwrap();
    let cmd = cmd.arg("localhost:4000").arg("http://localhost:4000/");
    cmd.assert().success();

    drop(server);
}

#[test]
fn timeout() {
    let mut cmd = Command::cargo_bin("wait-for-them").unwrap();
    let cmd = cmd
        .arg("--timeout")
        .arg("1000")
        .arg("localhost:4001")
        .arg("http://localhost:4000/");
    cmd.assert().failure();
}

#[test]
fn multiple() {
    let servers = vec![
        common::TestServer::new(4002, Duration::from_millis(10)),
        common::TestServer::new(4003, Duration::from_millis(15)),
    ];

    let mut cmd = Command::cargo_bin("wait-for-them").unwrap();
    let cmd = cmd
        .arg("--timeout")
        .arg("10000")
        .arg("localhost:4002")
        .arg("localhost:4003")
        .arg("http://localhost:4002/")
        .arg("http://localhost:4003/");
    cmd.assert().success();

    drop(servers);
}

#[test]
fn multiple_fail() {
    let mut cmd = Command::cargo_bin("wait-for-them").unwrap();
    let cmd = cmd
        .arg("--timeout")
        .arg("10000")
        .arg("localhost:4004")
        .arg("localhost:4005")
        .arg("http://localhost:4004/")
        .arg("http://localhost:4005/");
    let res = cmd.assert();
    res.failure().code(4);
}

#[test]
fn silent() {
    let server = common::TestServer::new(4006, Duration::from_millis(10));

    let mut cmd = Command::cargo_bin("wait-for-them").unwrap();
    let cmd = cmd
        .arg("localhost:4006")
        .arg("http://localhost:4006/")
        .arg("-s");
    cmd.assert().success().stdout("");

    drop(server);
}

#[test]
fn ip_address() {
    let server = common::TestServer::new(4007, Duration::from_millis(10));

    let mut cmd = Command::cargo_bin("wait-for-them").unwrap();
    let cmd = cmd.arg("127.0.0.1:4007").arg("http://127.0.0.1:4007/");
    cmd.assert().success();

    drop(server);
}