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: David Brown <david.brown@linaro.org>
diff --git a/ptest/src/main.rs b/ptest/src/main.rs
index e0e41a9..b0d7e66 100644
--- a/ptest/src/main.rs
+++ b/ptest/src/main.rs
@@ -48,6 +48,10 @@
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 @@
#[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 @@
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 {