diff --git a/crates/puffin-cli/src/commands/freeze.rs b/crates/puffin-cli/src/commands/freeze.rs index c7e050104..01de6e9ab 100644 --- a/crates/puffin-cli/src/commands/freeze.rs +++ b/crates/puffin-cli/src/commands/freeze.rs @@ -1,4 +1,7 @@ +use std::fmt::Write; + use anyhow::Result; +use colored::Colorize; use itertools::Itertools; use tracing::debug; @@ -12,7 +15,7 @@ use crate::commands::ExitStatus; use crate::printer::Printer; /// Enumerate the installed packages in the current environment. -pub(crate) fn freeze(cache: &Cache, _printer: Printer) -> Result { +pub(crate) fn freeze(cache: &Cache, strict: bool, mut printer: Printer) -> Result { // Detect the current Python interpreter. let platform = Platform::current()?; let python = Virtualenv::from_env(platform, cache)?; @@ -33,5 +36,18 @@ pub(crate) fn freeze(cache: &Cache, _printer: Printer) -> Result { } } + // Validate that the environment is consistent. + if strict { + for diagnostic in site_packages.diagnostics()? { + writeln!( + printer, + "{}{} {}", + "warning".yellow().bold(), + ":".bold(), + diagnostic.message().bold() + )?; + } + } + Ok(ExitStatus::Success) } diff --git a/crates/puffin-cli/src/commands/pip_install.rs b/crates/puffin-cli/src/commands/pip_install.rs index 0298f9313..7f3fa6359 100644 --- a/crates/puffin-cli/src/commands/pip_install.rs +++ b/crates/puffin-cli/src/commands/pip_install.rs @@ -47,6 +47,7 @@ pub(crate) async fn pip_install( reinstall: &Reinstall, link_mode: LinkMode, no_build: bool, + strict: bool, exclude_newer: Option>, cache: Cache, mut printer: Printer, @@ -214,7 +215,9 @@ pub(crate) async fn pip_install( .await?; // Validate the environment. - validate(&resolution, &venv, printer)?; + if strict { + validate(&resolution, &venv, printer)?; + } Ok(ExitStatus::Success) } diff --git a/crates/puffin-cli/src/commands/pip_sync.rs b/crates/puffin-cli/src/commands/pip_sync.rs index 1fc946380..b87d558fd 100644 --- a/crates/puffin-cli/src/commands/pip_sync.rs +++ b/crates/puffin-cli/src/commands/pip_sync.rs @@ -31,6 +31,7 @@ pub(crate) async fn pip_sync( link_mode: LinkMode, index_urls: IndexUrls, no_build: bool, + strict: bool, cache: Cache, mut printer: Printer, ) -> Result { @@ -308,15 +309,17 @@ pub(crate) async fn pip_sync( } // Validate that the environment is consistent. - let site_packages = SitePackages::from_executable(&venv)?; - for diagnostic in site_packages.diagnostics()? { - writeln!( - printer, - "{}{} {}", - "warning".yellow().bold(), - ":".bold(), - diagnostic.message().bold() - )?; + if strict { + let site_packages = SitePackages::from_executable(&venv)?; + for diagnostic in site_packages.diagnostics()? { + writeln!( + printer, + "{}{} {}", + "warning".yellow().bold(), + ":".bold(), + diagnostic.message().bold() + )?; + } } Ok(ExitStatus::Success) diff --git a/crates/puffin-cli/src/main.rs b/crates/puffin-cli/src/main.rs index b095815d5..500772ded 100644 --- a/crates/puffin-cli/src/main.rs +++ b/crates/puffin-cli/src/main.rs @@ -71,7 +71,7 @@ enum Commands { /// Uninstall packages from the current environment. PipUninstall(PipUninstallArgs), /// Enumerate the installed packages in the current environment. - PipFreeze, + PipFreeze(PipFreezeArgs), /// Create a virtual environment. #[clap(alias = "virtualenv")] Venv(VenvArgs), @@ -235,6 +235,11 @@ struct PipSyncArgs { /// exit with an error. #[clap(long)] no_build: bool, + + /// Validate the virtual environment after completing the installation, to detect packages with + /// missing dependencies or other issues. + #[clap(long)] + strict: bool, } #[derive(Args)] @@ -327,6 +332,11 @@ struct PipInstallArgs { #[clap(long)] no_build: bool, + /// Validate the virtual environment after completing the installation, to detect packages with + /// missing dependencies or other issues. + #[clap(long)] + strict: bool, + /// Try to resolve at a past time. /// /// This works by filtering out files with a more recent upload time, so if the index you use @@ -357,6 +367,15 @@ struct PipUninstallArgs { editable: Vec, } +#[derive(Args)] +#[allow(clippy::struct_excessive_bools)] +struct PipFreezeArgs { + /// Validate the virtual environment, to detect packages with missing dependencies or other + /// issues. + #[clap(long)] + strict: bool, +} + #[derive(Args)] #[allow(clippy::struct_excessive_bools)] struct CleanArgs { @@ -477,6 +496,7 @@ async fn inner() -> Result { args.link_mode, index_urls, args.no_build, + args.strict, cache, printer, ) @@ -521,6 +541,7 @@ async fn inner() -> Result { &reinstall, args.link_mode, args.no_build, + args.strict, args.exclude_newer, cache, printer, @@ -538,7 +559,7 @@ async fn inner() -> Result { commands::pip_uninstall(&sources, cache, printer).await } Commands::Clean(args) => commands::clean(&cache, &args.package, printer), - Commands::PipFreeze => commands::freeze(&cache, printer), + Commands::PipFreeze(args) => commands::freeze(&cache, args.strict, printer), Commands::Venv(args) => commands::venv(&args.name, args.python.as_deref(), &cache, printer), Commands::Add(args) => commands::add(&args.name, printer), Commands::Remove(args) => commands::remove(&args.name, printer), diff --git a/crates/puffin-cli/tests/pip_install.rs b/crates/puffin-cli/tests/pip_install.rs index dfa2cf1e4..4e41f221f 100644 --- a/crates/puffin-cli/tests/pip_install.rs +++ b/crates/puffin-cli/tests/pip_install.rs @@ -35,6 +35,7 @@ fn missing_requirements_txt() -> Result<()> { .arg("pip-install") .arg("-r") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .current_dir(&temp_dir), @r###" @@ -62,6 +63,7 @@ fn no_solution() -> Result<()> { .arg("pip-install") .arg("flask>=3.0.0") .arg("WerkZeug<1.0.0") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -98,6 +100,7 @@ fn install_package() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-install") .arg("Flask") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -145,6 +148,7 @@ fn install_requirements_txt() -> Result<()> { .arg("pip-install") .arg("-r") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -182,6 +186,7 @@ fn install_requirements_txt() -> Result<()> { .arg("pip-install") .arg("-r") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -221,6 +226,7 @@ fn respect_installed() -> Result<()> { .arg("pip-install") .arg("-r") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -259,6 +265,7 @@ fn respect_installed() -> Result<()> { .arg("pip-install") .arg("-r") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -288,6 +295,7 @@ fn respect_installed() -> Result<()> { .arg("pip-install") .arg("-r") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -321,6 +329,7 @@ fn respect_installed() -> Result<()> { .arg("requirements.txt") .arg("--reinstall-package") .arg("Flask") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -362,6 +371,7 @@ fn allow_incompatibilities() -> Result<()> { .arg("pip-install") .arg("-r") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -400,6 +410,7 @@ fn allow_incompatibilities() -> Result<()> { .arg("pip-install") .arg("-r") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -446,6 +457,7 @@ fn install_editable() -> Result<()> { .arg("pip-install") .arg("-e") .arg("../../scripts/editable-installs/poetry_editable") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -474,6 +486,7 @@ fn install_editable() -> Result<()> { .arg("pip-install") .arg("-e") .arg("../../scripts/editable-installs/poetry_editable") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -498,6 +511,7 @@ fn install_editable() -> Result<()> { .arg("-e") .arg("../../scripts/editable-installs/poetry_editable") .arg("black") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -535,6 +549,7 @@ fn install_editable() -> Result<()> { .arg("black") .arg("-e") .arg("../../scripts/editable-installs/maturin_editable") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -577,6 +592,7 @@ fn install_editable_and_registry() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-install") .arg("black") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -608,6 +624,7 @@ fn install_editable_and_registry() -> Result<()> { .arg("pip-install") .arg("-e") .arg("../../scripts/editable-installs/black_editable") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -635,6 +652,7 @@ fn install_editable_and_registry() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-install") .arg("black") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") @@ -657,6 +675,7 @@ fn install_editable_and_registry() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-install") .arg("black==23.10.0") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .arg("--exclude-newer") diff --git a/crates/puffin-cli/tests/pip_sync.rs b/crates/puffin-cli/tests/pip_sync.rs index 7db2fab4d..98b2e699e 100644 --- a/crates/puffin-cli/tests/pip_sync.rs +++ b/crates/puffin-cli/tests/pip_sync.rs @@ -34,6 +34,7 @@ fn missing_requirements_txt() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .current_dir(&temp_dir), @r###" @@ -60,6 +61,7 @@ fn missing_venv() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -96,6 +98,7 @@ fn install() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -136,6 +139,7 @@ fn install_copy() -> Result<()> { .arg("requirements.txt") .arg("--link-mode") .arg("copy") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -176,6 +180,7 @@ fn install_hardlink() -> Result<()> { .arg("requirements.txt") .arg("--link-mode") .arg("hardlink") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -214,6 +219,7 @@ fn install_many() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -250,6 +256,7 @@ fn noop() -> Result<()> { Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -263,6 +270,7 @@ fn noop() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -296,6 +304,7 @@ fn link() -> Result<()> { Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv1.as_os_str()) @@ -322,6 +331,7 @@ fn link() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv2.as_os_str()) @@ -356,6 +366,7 @@ fn add_remove() -> Result<()> { Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -373,6 +384,7 @@ fn add_remove() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -418,6 +430,7 @@ fn install_sequential() -> Result<()> { Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -435,6 +448,7 @@ fn install_sequential() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -471,6 +485,7 @@ fn upgrade() -> Result<()> { Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -488,6 +503,7 @@ fn upgrade() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -530,6 +546,7 @@ fn install_url() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -571,6 +588,7 @@ fn install_git_commit() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -612,6 +630,7 @@ fn install_git_tag() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -653,6 +672,7 @@ fn install_git_subdirectories() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -696,6 +716,7 @@ fn install_sdist() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -736,6 +757,7 @@ fn install_sdist_url() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -772,6 +794,7 @@ fn install_url_then_install_url() -> Result<()> { Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -787,6 +810,7 @@ fn install_url_then_install_url() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -820,6 +844,7 @@ fn install_url_then_install_version() -> Result<()> { Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -839,6 +864,7 @@ fn install_url_then_install_version() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -872,6 +898,7 @@ fn install_version_then_install_url() -> Result<()> { Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -891,6 +918,7 @@ fn install_version_then_install_url() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -945,6 +973,7 @@ fn install_numpy_py38() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -984,6 +1013,7 @@ fn warn_on_yanked_version() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1030,6 +1060,7 @@ fn install_local_wheel() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1077,6 +1108,7 @@ fn install_local_source_distribution() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1123,6 +1155,7 @@ fn install_ujson() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1169,6 +1202,7 @@ fn install_dtls_socket() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1208,6 +1242,7 @@ fn install_url_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1236,6 +1271,7 @@ fn install_url_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1281,6 +1317,7 @@ fn install_url_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1320,6 +1357,7 @@ fn install_git_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1348,6 +1386,7 @@ fn install_git_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1393,6 +1432,7 @@ fn install_git_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1431,6 +1471,7 @@ fn install_registry_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1459,6 +1500,7 @@ fn install_registry_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1504,6 +1546,7 @@ fn install_registry_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1551,6 +1594,7 @@ fn install_path_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1579,6 +1623,7 @@ fn install_path_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1624,6 +1669,7 @@ fn install_path_source_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1671,6 +1717,7 @@ fn install_path_built_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1699,6 +1746,7 @@ fn install_path_built_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1744,6 +1792,7 @@ fn install_path_built_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1782,6 +1831,7 @@ fn install_url_built_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1810,6 +1860,7 @@ fn install_url_built_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1855,6 +1906,7 @@ fn install_url_built_dist_cached() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1893,6 +1945,7 @@ fn duplicate_package_overlap() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1927,6 +1980,7 @@ fn duplicate_package_disjoint() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1963,6 +2017,7 @@ fn reinstall() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -1991,6 +2046,7 @@ fn reinstall() -> Result<()> { .arg("pip-sync") .arg("requirements.txt") .arg("--reinstall") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2034,6 +2090,7 @@ fn reinstall_package() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2063,6 +2120,7 @@ fn reinstall_package() -> Result<()> { .arg("requirements.txt") .arg("--reinstall-package") .arg("tomli") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2105,6 +2163,7 @@ fn reinstall_git() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2132,6 +2191,7 @@ fn reinstall_git() -> Result<()> { .arg("requirements.txt") .arg("--reinstall-package") .arg("WerkZeug") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2196,6 +2256,7 @@ fn sync_editable() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg(requirements_txt.path()) + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2225,6 +2286,7 @@ fn sync_editable() -> Result<()> { .arg(requirements_txt.path()) .arg("--reinstall-package") .arg("poetry-editable") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2284,6 +2346,7 @@ fn sync_editable() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg(requirements_txt.path()) + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2331,6 +2394,7 @@ fn sync_editable_and_registry() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg(requirements_txt.path()) + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2375,6 +2439,7 @@ fn sync_editable_and_registry() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg(requirements_txt.path()) + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2415,6 +2480,7 @@ fn sync_editable_and_registry() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg(requirements_txt.path()) + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2450,6 +2516,7 @@ fn sync_editable_and_registry() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg(requirements_txt.path()) + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str()) @@ -2499,6 +2566,7 @@ fn incompatible_wheel() -> Result<()> { assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME)) .arg("pip-sync") .arg("requirements.txt") + .arg("--strict") .arg("--cache-dir") .arg(cache_dir.path()) .env("VIRTUAL_ENV", venv.as_os_str())