cargo-sync-rdme 0.8.0

Cargo subcommand to synchronize README with crate documentation
//! Integration test to ensure that feature selection arguments work as expected.

use rstest::rstest;
use similar_asserts::assert_eq;
use test_helper::{self as helper, Workspace};

#[rstest]
#[case(&[], &["DEFAULT", "FEAT_A"])]
#[case(&["--features", "default"], &["DEFAULT", "FEAT_A"])]
#[case(&["--features", "feat-b"], &["DEFAULT", "FEAT_A", "FEAT_B"])]
#[case(&["--all-features"], &["DEFAULT", "FEAT_A", "FEAT_B", "FEAT_C"])]
#[case(&["--no-default-features"], &[])]
#[case(&["--no-default-features", "--features", "feat-a"], &["FEAT_A"])]
#[case(&["--no-default-features", "--features", "feat-b"], &["FEAT_B"])]
#[case(&["--no-default-features", "--all-features"], &["DEFAULT", "FEAT_A", "FEAT_B", "FEAT_C"])]
fn select_features_by_flags(#[case] flags: &[&str], #[case] expected: &[&str]) {
    let crate_name = "features";
    let workspace = Workspace::from_fixture(crate_name);
    let readme_path = workspace
        .metadata()
        .root_package()
        .unwrap()
        .readme()
        .unwrap();
    workspace
        .cargo_sync_rdme_default()
        .args(flags)
        .assert()
        .success();

    let list_items = helper::collect_list_item_from_markdown_file(readme_path);
    assert_eq!(list_items, expected);
}