Commit 0ceb85ad authored by David Brown's avatar David Brown Committed by David Brown
Browse files

ptest: Add `--test` argument



The `--test` (`-t`) argument allows the caller to limit the tests that are
invoked by ptest. The argument can be specified multiple times to run several
tests. The numbers are based on the output of `--list`.

Signed-off-by: default avatarDavid Brown <david.brown@linaro.org>
parent 67fc1fc1
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -48,6 +48,10 @@ fn main() -> Result<()> {

    let matrix = Matrix::from_yaml(&workflow);

    let matrix = if args.test.len() == 0 { matrix } else {
        matrix.only(&args.test)
    };

    match args.command {
        Commands::List => {
            matrix.show();
@@ -96,6 +100,10 @@ struct Cli {
    #[arg(short, long, default_value = "../.github/workflows/sim.yaml")]
    workflow: String,

    /// The tests to run (defaults to all)
    #[arg(short, long)]
    test: Vec<usize>,

    #[command(subcommand)]
    command: Commands,
}
@@ -259,6 +267,20 @@ impl Matrix {
            println!("{:3}. {}", i, feature.simple_textual());
        }
    }

    /// Replace this matrix with one that only has the chosen tests in it. Note
    /// that the original order is preserved, not that given in `pick`.
    fn only(self, pick: &[usize]) -> Self {
        let pick: HashSet<usize> = pick.iter().cloned().collect();
        let envs: Vec<_> = self
            .envs
            .into_iter()
            .enumerate()
            .filter(|(ind, _)| pick.contains(ind))
            .map(|(_, item)| item)
            .collect();
        Matrix { envs }
    }
}

impl FeatureSet {