git-clean 0.8.0

A tool for cleaning old git branches.
Documentation
use support::project;

#[test]
fn test_git_clean_removes_local_branches() {
    let project = project("git-clean_removes_local").build();

    project.setup_command("git branch test1");
    project.setup_command("git branch test2");

    let verify = project.setup_command("git branch");

    assert!(
        verify.stdout().contains("test1"),
        "{}",
        verify.failure_message("test1")
    );
    assert!(
        verify.stdout().contains("test2"),
        "{}",
        verify.failure_message("test2")
    );

    let result = project.git_clean_command("-y").run();

    assert!(
        result.is_success(),
        "{}",
        result.failure_message("command to succeed")
    );
    assert!(
        result.stdout().contains("Deleted branch test1"),
        "{}",
        result.failure_message("command to delete test1")
    );
    assert!(
        result.stdout().contains("Deleted branch test2"),
        "{}",
        result.failure_message("command to delete test2")
    );
}

#[test]
fn test_git_clean_does_not_remove_ignored_local_branches() {
    let project = project("git-clean_removes_local").build();

    project.setup_command("git branch test1");
    project.setup_command("git branch test2");

    let verify = project.setup_command("git branch");

    assert!(
        verify.stdout().contains("test1"),
        "{}",
        verify.failure_message("test1")
    );
    assert!(
        verify.stdout().contains("test2"),
        "{}",
        verify.failure_message("test2")
    );

    let result = project.git_clean_command("-y -i test2").run();

    assert!(
        result.is_success(),
        "{}",
        result.failure_message("command to succeed")
    );
    assert!(
        result.stdout().contains("Deleted branch test1"),
        "{}",
        result.failure_message("command to delete test1")
    );
    assert!(
        !result.stdout().contains("Deleted branch test2"),
        "{}",
        result.failure_message("command to delete test2")
    );
}

#[test]
fn test_git_clean_does_not_remove_list_of_ignored_local_branches() {
    let project = project("git-clean_removes_local").build();

    project.setup_command("git branch test1");
    project.setup_command("git branch test2");
    project.setup_command("git branch test3");

    let verify = project.setup_command("git branch");

    assert!(
        verify.stdout().contains("test1"),
        "{}",
        verify.failure_message("test1")
    );
    assert!(
        verify.stdout().contains("test2"),
        "{}",
        verify.failure_message("test2")
    );
    assert!(
        verify.stdout().contains("test3"),
        "{}",
        verify.failure_message("test3")
    );

    let result = project.git_clean_command("-y -i test1 -i test3").run();

    assert!(
        result.is_success(),
        "{}",
        result.failure_message("command to succeed")
    );
    assert!(
        !result.stdout().contains("Deleted branch test1"),
        "{}",
        result.failure_message("command to delete test1")
    );
    assert!(
        result.stdout().contains("Deleted branch test2"),
        "{}",
        result.failure_message("command to delete test2")
    );
    assert!(
        !result.stdout().contains("Deleted branch test3"),
        "{}",
        result.failure_message("command to delete test3")
    );
}