From d10442a4b31590030acab9959624be32489d0c1a Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Thu, 16 Nov 2023 22:34:15 +0100 Subject: [PATCH] Added multi --package support --- CHANGELOG.md | 4 ++++ cargo-insta/src/cli.rs | 10 +++++----- cargo-insta/src/walk.rs | 8 +++----- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 588afdd6..c174126c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to insta and cargo-insta are documented here. +## 1.35.0 + +- The `--package` parameter can be supplied multiple times now. (#427) + ## 1.34.0 - Snapshots are now sorted in the UI on review. (#413) diff --git a/cargo-insta/src/cli.rs b/cargo-insta/src/cli.rs index f47e404c..dda4fb9a 100644 --- a/cargo-insta/src/cli.rs +++ b/cargo-insta/src/cli.rs @@ -134,7 +134,7 @@ struct TestCommand { tests: bool, /// Package to run tests for #[structopt(short = "p", long)] - package: Option, + package: Vec, /// Exclude packages from the test #[structopt(long, value_name = "SPEC")] exclude: Option, @@ -643,7 +643,7 @@ fn test_run(mut cmd: TestCommand, color: &str) -> Result<(), Box> { // handle unreferenced snapshots if we were instructed to do so if let Some(ref path) = snapshot_ref_file { - handle_unreferenced_snapshots(path.borrow(), &loc, unreferenced, cmd.package.as_deref())?; + handle_unreferenced_snapshots(path.borrow(), &loc, unreferenced, &cmd.package[..])?; } if cmd.review || cmd.accept { @@ -688,7 +688,7 @@ fn handle_unreferenced_snapshots( path: &Path, loc: &LocationInfo<'_>, unreferenced: UnreferencedSnapshots, - package: Option<&str>, + packages: &[String], ) -> Result<(), Box> { enum Action { Delete, @@ -729,7 +729,7 @@ fn handle_unreferenced_snapshots( } let mut encountered_any = false; - for entry in make_deletion_walker(&loc.workspace_root, loc.packages.as_deref(), package) { + for entry in make_deletion_walker(&loc.workspace_root, loc.packages.as_deref(), packages) { let rel_path = match entry { Ok(ref entry) => entry.path(), _ => continue, @@ -852,7 +852,7 @@ fn prepare_test_runner<'snapshot_ref>( proc.arg("--tests"); prevents_doc_run = true; } - if let Some(ref pkg) = cmd.package { + for pkg in &cmd.package { proc.arg("--package"); proc.arg(pkg); } diff --git a/cargo-insta/src/walk.rs b/cargo-insta/src/walk.rs index 08b3a0ac..7a3b618b 100644 --- a/cargo-insta/src/walk.rs +++ b/cargo-insta/src/walk.rs @@ -87,17 +87,15 @@ pub(crate) fn make_snapshot_walker(path: &Path, extensions: &[&str], flags: Find pub(crate) fn make_deletion_walker( workspace_root: &Path, known_packages: Option<&[Package]>, - selected_package: Option<&str>, + selected_packages: &[String], ) -> Walk { let roots: HashSet<_> = if let Some(packages) = known_packages { packages .iter() .filter_map(|x| { // filter out packages we did not ask for. - if let Some(only_package) = selected_package { - if x.name != only_package { - return None; - } + if !selected_packages.is_empty() && !selected_packages.contains(&x.name) { + return None; } x.manifest_path.parent().unwrap().canonicalize().ok() })