scarb 0.5.2

The Cairo package manager
Documentation
use indoc::indoc;

use crate::support::manifest_edit::ManifestEditHarness;

#[test]
fn remove_one() {
    ManifestEditHarness::offline()
        .args(["rm", "foo"])
        .input(indoc! {r#"
            [package]
            name = "hello"
            version = "1.0.0"

            [dependencies]
            dep = "1.0.0"
            foo = "1.0.0"
            bar = "1.0.0"
        "#})
        .output(indoc! {r#"
            [package]
            name = "hello"
            version = "1.0.0"

            [dependencies]
            dep = "1.0.0"
            bar = "1.0.0"
        "#})
        .stdout_matches("    Removing foo from dependencies\n")
        .run();
}

#[test]
fn multiple_deps() {
    ManifestEditHarness::offline()
        .args(["remove", "bar", "dep"])
        .input(indoc! {r#"
            [package]
            name = "hello"
            version = "1.0.0"

            [dependencies]
            dep = "1.0.0"
            foo = "1.0.0"
            bar = "1.0.0"
        "#})
        .output(indoc! {r#"
            [package]
            name = "hello"
            version = "1.0.0"

            [dependencies]
            foo = "1.0.0"
        "#})
        .stdout_matches("    Removing bar from dependencies\n    Removing dep from dependencies\n")
        .run();
}

#[test]
fn undefined_dep() {
    ManifestEditHarness::offline()
        .args(["remove", "foo"])
        .input(indoc! {r#"
            [package]
            name = "hello"
            version = "1.0.0"

            [dependencies]
            dep = "1.0.0"
            bar = "1.0.0"
        "#})
        .failure()
        .stdout_matches(indoc! {r#"    Removing foo from dependencies
            error: the dependency `foo` could not be found in `dependencies`
        "#})
        .run();
}

#[test]
fn no_dependencies_section() {
    ManifestEditHarness::offline()
        .args(["rm", "dep"])
        .input(indoc! {r#"
            [package]
            name = "hello"
            version = "1.0.0"
        "#})
        .failure()
        .stdout_matches(indoc! {r#"    Removing dep from dependencies
            error: the dependency `dep` could not be found in `dependencies`
        "#})
        .run();
}

#[test]
fn dry_run() {
    ManifestEditHarness::offline()
        .args(["remove", "--dry-run", "bar"])
        .input(indoc! {r#"
            [package]
            name = "hello"
            version = "1.0.0"

            [dependencies]
            bar = "1.0.0"
        "#})
        .output(indoc! {r#"
            [package]
            name = "hello"
            version = "1.0.0"

            [dependencies]
            bar = "1.0.0"
        "#})
        .stdout_matches(indoc! {r#"    Removing bar from dependencies
            warn: aborting due to dry run
        "#})
        .run();
}