ic-build 0.17.2

Cargo and Wasm builds, exact inputs and retained artifact caches
Documentation
use super::*;

#[test]
fn typed_features_keep_build_and_metadata_resolution_in_step() {
    let selected = CargoSelection {
        profile: Some("release".into()),
        features: CargoFeatureSelection {
            features: ["zeta".into(), "alpha".into()].into(),
            default_features: false,
            all_features: true,
        },
        locked: true,
        offline: true,
    };
    let metadata = selected.metadata_arguments();
    assert_eq!(
        metadata,
        [
            "--locked",
            "--offline",
            "--all-features",
            "--no-default-features",
            "--features=alpha,zeta"
        ]
        .map(OsString::from)
    );
    assert_eq!(
        selected.build_arguments(),
        [vec![OsString::from("--release")], metadata].concat()
    );
    assert_eq!(selected.profile_target_dir(), Ok("release"));
    assert_eq!(
        CargoSelection::default().metadata_arguments(),
        [] as [OsString; 0]
    );
    assert_eq!(
        CargoSelection::default().build_arguments(),
        [] as [OsString; 0]
    );
}

#[test]
fn option_shaped_values_cannot_override_the_recipe() {
    let selected = CargoSelection {
        profile: Some("--help".into()),
        features: CargoFeatureSelection {
            features: ["--target-dir=elsewhere".into()].into(),
            ..Default::default()
        },
        ..Default::default()
    };
    assert_eq!(
        selected.build_arguments(),
        ["--profile=--help", "--features=--target-dir=elsewhere"].map(OsString::from)
    );
}