axbuild 0.4.17

An OS build lib toolkit used by arceos
Documentation
use std::path::PathBuf;

use super::common::FakeCargoRunner;
use crate::clippy::{
    check::{ClippyCheck, ClippyCheckKind, ClippyDepsMode},
    runner::run_clippy_checks,
};

#[test]
fn package_failures_abort_remaining_checks() {
    let root = PathBuf::from("/tmp/workspace");
    let checks = vec![
        ClippyCheck {
            package: "alpha".into(),
            kind: ClippyCheckKind::Base,
            deps_mode: ClippyDepsMode::NoDeps,
            target: None,
            env: Vec::new(),
        },
        ClippyCheck {
            package: "alpha".into(),
            kind: ClippyCheckKind::Feature("feat-a".into()),
            deps_mode: ClippyDepsMode::NoDeps,
            target: None,
            env: Vec::new(),
        },
        ClippyCheck {
            package: "beta".into(),
            kind: ClippyCheckKind::Base,
            deps_mode: ClippyDepsMode::NoDeps,
            target: None,
            env: Vec::new(),
        },
    ];
    let mut runner = FakeCargoRunner::new(&[
        (checks[0].clone(), true),
        (checks[1].clone(), false),
        (checks[2].clone(), true),
    ]);

    let err = run_clippy_checks(&mut runner, &root, &checks).unwrap_err();

    assert_eq!(
        err.to_string(),
        "clippy failed for alpha (feature: feat-a): aborting (fail-fast, 1 check(s) remaining)"
    );
    assert_eq!(
        runner.invocations,
        vec![
            (root.clone(), checks[0].clone()),
            (root.clone(), checks[1].clone()),
        ]
    );
}