diff --git a/crates/uv/tests/pip_freeze.rs b/crates/uv/tests/pip_freeze.rs index fa4cfd86a..d4e340e7b 100644 --- a/crates/uv/tests/pip_freeze.rs +++ b/crates/uv/tests/pip_freeze.rs @@ -7,7 +7,7 @@ use assert_cmd::prelude::*; use assert_fs::fixture::ChildPath; use assert_fs::prelude::*; -use crate::common::{get_bin, uv_snapshot, TestContext}; +use crate::common::{get_bin, uv_snapshot, TestContext, EXCLUDE_NEWER}; mod common; @@ -33,6 +33,8 @@ fn sync_command(context: &TestContext) -> Command { .arg("sync") .arg("--cache-dir") .arg(context.cache_dir.path()) + .arg("--exclude-newer") + .arg(EXCLUDE_NEWER) .env("VIRTUAL_ENV", context.venv.as_os_str()) .env("UV_NO_WRAP", "1") .current_dir(&context.temp_dir); diff --git a/crates/uv/tests/pip_sync.rs b/crates/uv/tests/pip_sync.rs index 8a4a73a54..70b5af64a 100644 --- a/crates/uv/tests/pip_sync.rs +++ b/crates/uv/tests/pip_sync.rs @@ -16,7 +16,7 @@ use url::Url; use common::{create_venv, uv_snapshot, venv_to_interpreter}; use uv_fs::Simplified; -use crate::common::{copy_dir_all, get_bin, TestContext}; +use crate::common::{copy_dir_all, get_bin, TestContext, EXCLUDE_NEWER}; mod common; @@ -33,7 +33,7 @@ fn check_command(venv: &Path, command: &str, temp_dir: &Path) { } /// Create a `pip sync` command with options shared across scenarios. -fn command(context: &TestContext) -> Command { +fn sync_without_exclude_newer(context: &TestContext) -> Command { let mut command = Command::new(get_bin()); command .arg("pip") @@ -53,6 +53,13 @@ fn command(context: &TestContext) -> Command { command } +/// Create a `pip sync` command with options shared across scenarios. +pub fn sync(context: &TestContext) -> Command { + let mut command = sync_without_exclude_newer(context); + command.arg("--exclude-newer").arg(EXCLUDE_NEWER); + command +} + /// Create a `pip uninstall` command with options shared across scenarios. fn uninstall_command(context: &TestContext) -> Command { let mut command = Command::new(get_bin()); @@ -80,7 +87,7 @@ fn missing_requirements_txt() { let requirements_txt = context.temp_dir.child("requirements.txt"); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: false @@ -103,7 +110,7 @@ fn missing_venv() -> Result<()> { fs::remove_dir_all(&context.venv)?; if cfg!(windows) { - uv_snapshot!(context.filters(), command(&context).arg("requirements.txt"), @r###" + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context).arg("requirements.txt"), @r###" success: false exit_code: 2 ----- stdout ----- @@ -113,7 +120,7 @@ fn missing_venv() -> Result<()> { Caused by: The system cannot find the path specified. (os error 3) "###); } else { - uv_snapshot!(context.filters(), command(&context).arg("requirements.txt"), @r###" + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context).arg("requirements.txt"), @r###" success: false exit_code: 2 ----- stdout ----- @@ -138,7 +145,7 @@ fn install() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -179,7 +186,7 @@ fn install_copy() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--link-mode") .arg("copy") @@ -214,7 +221,7 @@ fn install_hardlink() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--link-mode") .arg("hardlink") @@ -249,7 +256,7 @@ fn install_many() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3\ntomli==2.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -280,13 +287,13 @@ fn noop() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3")?; - command(&context) + sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .assert() .success(); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -314,7 +321,7 @@ fn link() -> Result<()> { let requirements_txt = context1.temp_dir.child("requirements.txt"); requirements_txt.write_str("iniconfig==2.0.0")?; - command(&context1) + sync_without_exclude_newer(&context1) .arg(requirements_txt.path()) .arg("--strict") .assert() @@ -366,7 +373,7 @@ fn add_remove() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("iniconfig==2.0.0")?; - command(&context) + sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .assert() @@ -375,7 +382,7 @@ fn add_remove() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("tomli==2.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -407,7 +414,7 @@ fn install_sequential() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("iniconfig==2.0.0")?; - command(&context) + sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .assert() @@ -416,7 +423,7 @@ fn install_sequential() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("iniconfig==2.0.0\ntomli==2.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -447,7 +454,7 @@ fn upgrade() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("tomli==2.0.0")?; - command(&context) + sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .assert() @@ -456,7 +463,7 @@ fn upgrade() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("tomli==2.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -486,7 +493,7 @@ fn install_url() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("werkzeug @ https://files.pythonhosted.org/packages/ff/1d/960bb4017c68674a1cb099534840f18d3def3ce44aed12b5ed8b78e0153e/Werkzeug-2.0.0-py3-none-any.whl")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -515,7 +522,7 @@ fn install_git_commit() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@b270df1a2fb5d012294e9aaf05e7e0bab1e6a389")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -548,7 +555,7 @@ fn install_git_tag() -> Result<()> { "uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@test-tag", )?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -579,7 +586,7 @@ fn install_git_subdirectories() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("example-pkg-a @ git+https://github.com/pypa/sample-namespace-packages.git@df7530eeb8fa0cb7dbb8ecb28363e8e36bfa2f45#subdirectory=pkg_resources/pkg_a\nexample-pkg-b @ git+https://github.com/pypa/sample-namespace-packages.git@df7530eeb8fa0cb7dbb8ecb28363e8e36bfa2f45#subdirectory=pkg_resources/pkg_b")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -610,7 +617,7 @@ fn install_sdist() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("source-distribution==0.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -640,7 +647,7 @@ fn install_sdist_url() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -676,7 +683,7 @@ fn install_sdist_archive_type_bz2() -> Result<()> { .display() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -703,13 +710,13 @@ fn install_url_then_install_url() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("werkzeug @ https://files.pythonhosted.org/packages/ff/1d/960bb4017c68674a1cb099534840f18d3def3ce44aed12b5ed8b78e0153e/Werkzeug-2.0.0-py3-none-any.whl")?; - command(&context) + sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .assert() .success(); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -736,7 +743,7 @@ fn install_url_then_install_version() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("werkzeug @ https://files.pythonhosted.org/packages/ff/1d/960bb4017c68674a1cb099534840f18d3def3ce44aed12b5ed8b78e0153e/Werkzeug-2.0.0-py3-none-any.whl")?; - command(&context) + sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .assert() @@ -745,7 +752,7 @@ fn install_url_then_install_version() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("werkzeug==2.0.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -772,7 +779,7 @@ fn install_version_then_install_url() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("werkzeug==2.0.0")?; - command(&context) + sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .assert() @@ -781,7 +788,7 @@ fn install_version_then_install_url() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("werkzeug @ https://files.pythonhosted.org/packages/ff/1d/960bb4017c68674a1cb099534840f18d3def3ce44aed12b5ed8b78e0153e/Werkzeug-2.0.0-py3-none-any.whl")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -812,7 +819,7 @@ fn install_numpy_py38() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("numpy")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -840,7 +847,7 @@ fn install_no_index() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("iniconfig==2.0.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--no-index") .arg("--strict"), @r###" @@ -870,7 +877,7 @@ fn install_no_index_cached() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("iniconfig==2.0.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -892,7 +899,7 @@ fn install_no_index_cached() -> Result<()> { .assert() .success(); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--no-index") .arg("--strict"), @r###" @@ -921,7 +928,7 @@ fn warn_on_yanked() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.txt"); requirements_in.write_str("colorama==0.4.2")?; - uv_snapshot!(context.filters(), windows_filters=false, command(&context) + uv_snapshot!(context.filters(), windows_filters=false, sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -948,7 +955,7 @@ fn warn_on_yanked_dry_run() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.txt"); requirements_in.write_str("colorama==0.4.2")?; - uv_snapshot!(context.filters(), windows_filters=false, command(&context) + uv_snapshot!(context.filters(), windows_filters=false, sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--dry-run") .arg("--strict"), @r###" @@ -985,7 +992,7 @@ fn install_local_wheel() -> Result<()> { Url::from_file_path(archive.path()).unwrap() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1006,7 +1013,7 @@ fn install_local_wheel() -> Result<()> { let venv = create_venv(&context.temp_dir, &context.cache_dir, "3.12"); // Reinstall. The wheel should come from the cache, so there shouldn't be a "download". - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1031,7 +1038,7 @@ fn install_local_wheel() -> Result<()> { filetime::set_file_mtime(&archive, filetime::FileTime::now()).unwrap(); // Reinstall. The wheel should be "downloaded" again. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1053,7 +1060,7 @@ fn install_local_wheel() -> Result<()> { filetime::set_file_mtime(&archive, filetime::FileTime::now()).unwrap(); // Reinstall into the same virtual environment. The wheel should be reinstalled. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1092,7 +1099,7 @@ fn mismatched_version() -> Result<()> { Url::from_file_path(archive.path()).unwrap() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: false @@ -1127,7 +1134,7 @@ fn mismatched_name() -> Result<()> { Url::from_file_path(archive.path()).unwrap() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: false @@ -1163,7 +1170,7 @@ fn install_local_source_distribution() -> Result<()> { Url::from_file_path(archive.path()).unwrap() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1202,7 +1209,7 @@ fn install_build_system_no_backend() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("build-system-no-backend @ https://files.pythonhosted.org/packages/ec/25/1e531108ca027dc3a3b37d351f4b86d811df4884c6a81cd99e73b8b589f5/build-system-no-backend-0.1.0.tar.gz")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1232,7 +1239,7 @@ fn install_url_source_dist_cached() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("source_distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1256,7 +1263,7 @@ fn install_url_source_dist_cached() -> Result<()> { parent.create_dir_all()?; let venv = create_venv(&parent, &context.cache_dir, "3.12"); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1296,7 +1303,7 @@ fn install_url_source_dist_cached() -> Result<()> { "### ); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1328,7 +1335,7 @@ fn install_git_source_dist_cached() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@b270df1a2fb5d012294e9aaf05e7e0bab1e6a389")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1352,7 +1359,7 @@ fn install_git_source_dist_cached() -> Result<()> { parent.create_dir_all()?; let venv = create_venv(&parent, &context.cache_dir, "3.12"); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1398,7 +1405,7 @@ fn install_git_source_dist_cached() -> Result<()> { "### ); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1428,7 +1435,7 @@ fn install_registry_source_dist_cached() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("source_distribution==0.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1452,7 +1459,7 @@ fn install_registry_source_dist_cached() -> Result<()> { parent.create_dir_all()?; let venv = create_venv(&parent, &context.cache_dir, "3.12"); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1505,7 +1512,7 @@ fn install_registry_source_dist_cached() -> Result<()> { "### ); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1545,7 +1552,7 @@ fn install_path_source_dist_cached() -> Result<()> { Url::from_file_path(archive.path()).unwrap() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1569,7 +1576,7 @@ fn install_path_source_dist_cached() -> Result<()> { parent.create_dir_all()?; let venv = create_venv(&parent, &context.cache_dir, "3.12"); - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1609,7 +1616,7 @@ fn install_path_source_dist_cached() -> Result<()> { "### ); - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1647,7 +1654,7 @@ fn install_path_built_dist_cached() -> Result<()> { let url = Url::from_file_path(archive.path()).unwrap(); requirements_txt.write_str(&format!("tomli @ {url}"))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1669,7 +1676,7 @@ fn install_path_built_dist_cached() -> Result<()> { parent.create_dir_all()?; let venv = create_venv(&context.temp_dir, &context.cache_dir, "3.12"); - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1719,7 +1726,7 @@ fn install_path_built_dist_cached() -> Result<()> { "### ); - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1756,7 +1763,7 @@ fn install_url_built_dist_cached() -> Result<()> { } else { context.filters() }; - uv_snapshot!(filters, command(&context) + uv_snapshot!(filters, sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1778,7 +1785,7 @@ fn install_url_built_dist_cached() -> Result<()> { parent.create_dir_all()?; let venv = create_venv(&parent, &context.cache_dir, "3.12"); - uv_snapshot!(filters, command(&context) + uv_snapshot!(filters, sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1816,7 +1823,7 @@ fn install_url_built_dist_cached() -> Result<()> { "### ); - uv_snapshot!(filters, command(&context) + uv_snapshot!(filters, sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -1845,7 +1852,7 @@ fn duplicate_package_overlap() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3\nMarkupSafe==2.1.2")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: false @@ -1869,7 +1876,7 @@ fn duplicate_package_disjoint() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3\nMarkupSafe==2.1.2 ; python_version < '3.6'")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1895,7 +1902,7 @@ fn reinstall() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3\ntomli==2.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1915,7 +1922,7 @@ fn reinstall() -> Result<()> { context.assert_command("import tomli").success(); // Re-run the installation with `--reinstall`. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--strict"), @r###" @@ -1948,7 +1955,7 @@ fn reinstall_package() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3\ntomli==2.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -1968,7 +1975,7 @@ fn reinstall_package() -> Result<()> { context.assert_command("import tomli").success(); // Re-run the installation with `--reinstall`. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall-package") .arg("tomli") @@ -2001,7 +2008,7 @@ fn reinstall_git() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@b270df1a2fb5d012294e9aaf05e7e0bab1e6a389")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -2021,7 +2028,7 @@ fn reinstall_git() -> Result<()> { .success(); // Re-run the installation with `--reinstall`. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall-package") .arg("uv-public-pypackage") @@ -2054,7 +2061,7 @@ fn refresh() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3\ntomli==2.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -2079,7 +2086,7 @@ fn refresh() -> Result<()> { parent.create_dir_all()?; let venv = create_venv(&parent, &context.cache_dir, "3.12"); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--refresh") .arg("--strict") @@ -2111,7 +2118,7 @@ fn refresh_package() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3\ntomli==2.0.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: true @@ -2136,7 +2143,7 @@ fn refresh_package() -> Result<()> { parent.create_dir_all()?; let venv = create_venv(&parent, &context.cache_dir, "3.12"); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--refresh-package") .arg("tomli") @@ -2184,7 +2191,7 @@ fn sync_editable() -> Result<()> { })?; // Install the editable packages. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()), @r###" success: true exit_code: 0 @@ -2202,7 +2209,7 @@ fn sync_editable() -> Result<()> { ); // Reinstall the editable packages. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()) .arg("--reinstall-package") .arg("poetry-editable"), @r###" @@ -2253,7 +2260,7 @@ fn sync_editable() -> Result<()> { "}; context.assert_command(check_installed).success(); - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()), @r###" success: true exit_code: 0 @@ -2287,7 +2294,7 @@ fn sync_editable_and_registry() -> Result<()> { " })?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()) .arg("--strict"), @r###" success: true @@ -2315,7 +2322,7 @@ fn sync_editable_and_registry() -> Result<()> { " })?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()), @r###" success: true exit_code: 0 @@ -2339,7 +2346,7 @@ fn sync_editable_and_registry() -> Result<()> { " })?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()), @r###" success: true exit_code: 0 @@ -2358,7 +2365,7 @@ fn sync_editable_and_registry() -> Result<()> { " })?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()) .arg("--strict"), @r###" success: true @@ -2402,7 +2409,7 @@ fn sync_editable_and_local() -> Result<()> { " })?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()), @r###" success: true exit_code: 0 @@ -2423,7 +2430,7 @@ fn sync_editable_and_local() -> Result<()> { " })?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()), @r###" success: true exit_code: 0 @@ -2446,7 +2453,7 @@ fn sync_editable_and_local() -> Result<()> { " })?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()), @r###" success: true exit_code: 0 @@ -2474,7 +2481,7 @@ fn incompatible_wheel() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str(&format!("foo @ {}", wheel.path().simplified_display()))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict"), @r###" success: false @@ -2499,7 +2506,7 @@ fn sync_legacy_sdist_pep_517() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("flake8 @ https://files.pythonhosted.org/packages/66/53/3ad4a3b74d609b3b9008a10075c40e7c8909eae60af53623c3888f7a529a/flake8-6.0.0.tar.gz")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -2524,7 +2531,7 @@ fn sync_legacy_sdist_setuptools() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("flake8 @ https://files.pythonhosted.org/packages/66/53/3ad4a3b74d609b3b9008a10075c40e7c8909eae60af53623c3888f7a529a/flake8-6.0.0.tar.gz")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in") .arg("--legacy-setup-py"), @r###" success: true @@ -2555,7 +2562,7 @@ fn find_links() -> Result<()> { werkzeug @ https://files.pythonhosted.org/packages/c3/fc/254c3e9b5feb89ff5b9076a23218dafbc99c96ac5941e900b71206e6313b/werkzeug-3.0.1-py3-none-any.whl "})?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--find-links") .arg(context.workspace_root.join("scripts/links/")), @r###" @@ -2587,7 +2594,7 @@ fn find_links_no_index_match() -> Result<()> { tqdm==1000.0.0 "})?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--no-index") .arg("--find-links") @@ -2617,7 +2624,7 @@ fn find_links_offline_match() -> Result<()> { tqdm==1000.0.0 "})?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--offline") .arg("--find-links") @@ -2648,7 +2655,7 @@ fn find_links_offline_no_match() -> Result<()> { tqdm==1000.0.0 "})?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--offline") .arg("--find-links") @@ -2679,7 +2686,7 @@ fn find_links_wheel_cache() -> Result<()> { "})?; // Install `tqdm`. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--find-links") .arg(context.workspace_root.join("scripts/links/")), @r###" @@ -2696,7 +2703,7 @@ fn find_links_wheel_cache() -> Result<()> { ); // Reinstall `tqdm` with `--reinstall`. Ensure that the wheel is reused. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--find-links") @@ -2729,7 +2736,7 @@ fn find_links_source_cache() -> Result<()> { "})?; // Install `tqdm`. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--find-links") .arg(context.workspace_root.join("scripts/links/")), @r###" @@ -2746,7 +2753,7 @@ fn find_links_source_cache() -> Result<()> { ); // Reinstall `tqdm` with `--reinstall`. Ensure that the wheel is reused. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--find-links") @@ -2775,7 +2782,7 @@ fn offline() -> Result<()> { requirements_in.write_str("black==23.10.1")?; // Install with `--offline` with an empty cache. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in") .arg("--offline"), @r###" success: false @@ -2791,7 +2798,7 @@ fn offline() -> Result<()> { ); // Populate the cache. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -2808,7 +2815,7 @@ fn offline() -> Result<()> { // Install with `--offline` with a populated cache. let venv = create_venv(&context.temp_dir, &context.cache_dir, "3.12"); - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in") .arg("--offline") .env("VIRTUAL_ENV", venv.as_os_str()), @r###" @@ -2836,7 +2843,7 @@ fn compatible_constraint() -> Result<()> { let constraints_txt = context.temp_dir.child("constraints.txt"); constraints_txt.write_str("anyio==3.7.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--constraint") .arg("constraints.txt"), @r###" @@ -2865,7 +2872,7 @@ fn incompatible_constraint() -> Result<()> { let constraints_txt = context.temp_dir.child("constraints.txt"); constraints_txt.write_str("anyio==3.6.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--constraint") .arg("constraints.txt"), @r###" @@ -2892,7 +2899,7 @@ fn irrelevant_constraint() -> Result<()> { let constraints_txt = context.temp_dir.child("constraints.txt"); constraints_txt.write_str("black==23.10.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--constraint") .arg("constraints.txt"), @r###" @@ -2918,7 +2925,7 @@ fn repeat_requirement_identical() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("anyio\nanyio")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -2941,7 +2948,7 @@ fn repeat_requirement_compatible() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("anyio\nanyio==4.0.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -2964,7 +2971,7 @@ fn repeat_requirement_incompatible() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("anyio<4.0.0\nanyio==4.0.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync(&context) .arg("requirements.in"), @r###" success: false exit_code: 1 @@ -2987,7 +2994,7 @@ fn tar_dont_preserve_mtime() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("tomli @ https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt"), @r###" success: true exit_code: 0 @@ -3010,7 +3017,7 @@ fn set_read_permissions() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("databricks==0.2")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -3038,7 +3045,7 @@ fn pip_entrypoints() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str(pip_requirement)?; - command(&context) + sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--strict") .output() @@ -3085,7 +3092,7 @@ requires-python = ">=3.8" let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str(&format!("-e {}", editable_dir.path().display()))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -3100,7 +3107,7 @@ requires-python = ">=3.8" ); // Re-installing should be a no-op. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -3125,7 +3132,7 @@ requires-python = ">=3.8" )?; // Re-installing should update the package. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -3152,7 +3159,7 @@ fn compile() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("MarkupSafe==2.1.3")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--compile") .arg("--strict"), @r###" @@ -3205,7 +3212,7 @@ fn compile_invalid_pyc_invalidation_mode() -> Result<()> { ]) .collect(); - uv_snapshot!(filters, command(&context) + uv_snapshot!(filters, sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--compile") .arg("--strict") @@ -3252,7 +3259,7 @@ requires-python = "<=3.5" let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str(&format!("-e {}", editable_dir.path().display()))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: false exit_code: 2 @@ -3277,7 +3284,7 @@ fn no_stream() -> Result<()> { requirements_txt .write_str("hashb_foxglove_protocolbuffers_python==25.3.0.1.20240226043130+465630478360")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--index-url") .arg("https://buf.build/gen/python"), @r###" @@ -3320,7 +3327,7 @@ requires-python = "<=3.5" let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str(&format!("example @ {}", editable_dir.path().display()))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: false exit_code: 1 @@ -3346,7 +3353,7 @@ fn require_hashes_unknown_algorithm() -> Result<()> { "anyio==4.0.0 --hash=foo:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f", )?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3370,7 +3377,7 @@ fn require_hashes_missing_hash() -> Result<()> { requirements_txt.write_str("anyio==4.0.0")?; // Install without error when `--require-hashes` is omitted. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt"), @r###" success: true exit_code: 0 @@ -3385,7 +3392,7 @@ fn require_hashes_missing_hash() -> Result<()> { ); // Error when `--require-hashes` is provided. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3411,7 +3418,7 @@ fn require_hashes_missing_version() -> Result<()> { )?; // Install without error when `--require-hashes` is omitted. - uv_snapshot!(command(&context) + uv_snapshot!(sync(&context) .arg("requirements.txt"), @r###" success: true exit_code: 0 @@ -3426,7 +3433,7 @@ fn require_hashes_missing_version() -> Result<()> { ); // Error when `--require-hashes` is provided. - uv_snapshot!(command(&context) + uv_snapshot!(sync(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3452,7 +3459,7 @@ fn require_hashes_invalid_operator() -> Result<()> { )?; // Install without error when `--require-hashes` is omitted. - uv_snapshot!(command(&context) + uv_snapshot!(sync(&context) .arg("requirements.txt"), @r###" success: true exit_code: 0 @@ -3467,7 +3474,7 @@ fn require_hashes_invalid_operator() -> Result<()> { ); // Error when `--require-hashes` is provided. - uv_snapshot!(command(&context) + uv_snapshot!(sync(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3491,7 +3498,7 @@ fn require_hashes_wheel_no_binary() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--no-binary") .arg(":all:") @@ -3526,7 +3533,7 @@ fn require_hashes_wheel_only_binary() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--only-binary") .arg(":all:") @@ -3555,7 +3562,7 @@ fn require_hashes_source_no_binary() -> Result<()> { requirements_txt .write_str("source-distribution==0.0.1 --hash=sha256:1f83ed7498336c7f2ab9b002cf22583d91115ebc624053dc4eb3a45694490106")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--no-binary") .arg(":all:") @@ -3584,7 +3591,7 @@ fn require_hashes_source_only_binary() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--only-binary") .arg(":all:") @@ -3619,7 +3626,7 @@ fn require_hashes_wrong_digest() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3652,7 +3659,7 @@ fn require_hashes_wrong_algorithm() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha512:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3685,7 +3692,7 @@ fn require_hashes_source_url() -> Result<()> { requirements_txt .write_str("source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz --hash=sha256:1f83ed7498336c7f2ab9b002cf22583d91115ebc624053dc4eb3a45694490106")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: true @@ -3701,7 +3708,7 @@ fn require_hashes_source_url() -> Result<()> { ); // Reinstall with the right hash, and verify that it's reused. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes"), @r###" @@ -3723,7 +3730,7 @@ fn require_hashes_source_url() -> Result<()> { requirements_txt .write_str("source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz --hash=sha256:a7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes"), @r###" @@ -3755,7 +3762,7 @@ fn require_hashes_source_url_mismatch() -> Result<()> { requirements_txt .write_str("source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz --hash=sha256:a7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3786,7 +3793,7 @@ fn require_hashes_wheel_url() -> Result<()> { requirements_txt .write_str("anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: true @@ -3802,7 +3809,7 @@ fn require_hashes_wheel_url() -> Result<()> { ); // Reinstall with the right hash, and verify that it's reused. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes"), @r###" @@ -3824,7 +3831,7 @@ fn require_hashes_wheel_url() -> Result<()> { requirements_txt .write_str("anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl --hash=sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes"), @r###" @@ -3853,7 +3860,7 @@ fn require_hashes_wheel_url() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f\niniconfig==2.0.0 --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: true @@ -3880,7 +3887,7 @@ fn require_hashes_wheel_url_mismatch() -> Result<()> { requirements_txt .write_str("anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl --hash=sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3913,7 +3920,7 @@ fn require_hashes_git() -> Result<()> { requirements_txt .write_str("anyio @ git+https://github.com/agronholm/anyio@4a23745badf5bf5ef7928f1e346e9986bd696d82 --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3943,7 +3950,7 @@ fn require_hashes_source_tree() -> Result<()> { .display() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -3968,7 +3975,7 @@ fn require_hashes_re_download() -> Result<()> { requirements_txt.write_str("anyio==4.0.0")?; // Install without `--require-hashes`. - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt"), @r###" success: true exit_code: 0 @@ -3987,7 +3994,7 @@ fn require_hashes_re_download() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes"), @r###" @@ -4014,7 +4021,7 @@ fn require_hashes_re_download() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes"), @r###" @@ -4048,7 +4055,7 @@ fn require_hashes_wheel_path() -> Result<()> { .display() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: true @@ -4080,7 +4087,7 @@ fn require_hashes_wheel_path_mismatch() -> Result<()> { .display() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -4118,7 +4125,7 @@ fn require_hashes_source_path() -> Result<()> { .display() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: true @@ -4150,7 +4157,7 @@ fn require_hashes_source_path_mismatch() -> Result<()> { .display() ))?; - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -4183,7 +4190,7 @@ fn require_hashes_unnamed() -> Result<()> { https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f "} )?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: true @@ -4214,7 +4221,7 @@ fn require_hashes_editable() -> Result<()> { })?; // Install the editable packages. - uv_snapshot!(context.filters(), command(&context) + uv_snapshot!(context.filters(), sync_without_exclude_newer(&context) .arg(requirements_txt.path()) .arg("--require-hashes"), @r###" success: true @@ -4241,7 +4248,7 @@ fn require_hashes_repeated_dependency() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a\nanyio")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -4258,7 +4265,7 @@ fn require_hashes_repeated_dependency() -> Result<()> { requirements_txt .write_str("anyio\nanyio==4.0.0 --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: false @@ -4286,7 +4293,7 @@ fn require_hashes_repeated_hash() -> Result<()> { anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f " })?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: true @@ -4309,7 +4316,7 @@ fn require_hashes_repeated_hash() -> Result<()> { anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl --hash=sha512:f30761c1e8725b49c498273b90dba4b05c0fd157811994c806183062cb6647e773364ce45f0e1ff0b10e32fe6d0232ea5ad39476ccf37109d6b49603a09c11c2 " })?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes") .arg("--reinstall"), @r###" @@ -4335,7 +4342,7 @@ fn require_hashes_repeated_hash() -> Result<()> { anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl --hash=md5:420d85e19168705cdf0223621b18831a " })?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes") .arg("--reinstall"), @r###" @@ -4361,7 +4368,7 @@ fn require_hashes_repeated_hash() -> Result<()> { anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl --hash=md5:520d85e19168705cdf0223621b18831a " })?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes") .arg("--reinstall"), @r###" @@ -4396,7 +4403,7 @@ fn require_hashes_at_least_one() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes"), @r###" success: true @@ -4417,7 +4424,7 @@ fn require_hashes_at_least_one() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a --hash=md5:420d85e19168705cdf0223621b18831a")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes"), @r###" @@ -4439,7 +4446,7 @@ fn require_hashes_at_least_one() -> Result<()> { requirements_txt .write_str("anyio==4.0.0 --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a --hash=md5:1234")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes"), @r###" @@ -4469,7 +4476,7 @@ fn require_hashes_find_links_no_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4491,7 +4498,7 @@ fn require_hashes_find_links_no_hash() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("example-a-961b4c22==1.0.0 --hash=sha256:123")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4521,7 +4528,7 @@ fn require_hashes_find_links_no_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4550,7 +4557,7 @@ fn require_hashes_find_links_no_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--no-binary") .arg(":all:") @@ -4584,7 +4591,7 @@ fn require_hashes_find_links_valid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes") .arg("--find-links") @@ -4613,7 +4620,7 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("example-a-961b4c22==1.0.0 --hash=sha256:123")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4642,7 +4649,7 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:8838f9d005ff0432b258ba648d9cabb1cbdf06ac29d14f788b02edae544032ea")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4672,7 +4679,7 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4695,7 +4702,7 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--refresh") .arg("--reinstall") @@ -4722,7 +4729,7 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e --hash=sha256:a3cf07a05aac526131a2e8b6e4375ee6c6eaac8add05b88035e960ac6cd999ee")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--refresh") .arg("--reinstall") @@ -4758,7 +4765,7 @@ fn require_hashes_registry_no_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes") .arg("--index-url") @@ -4787,7 +4794,7 @@ fn require_hashes_registry_valid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--require-hashes") .arg("--find-links") @@ -4814,7 +4821,7 @@ fn require_hashes_registry_invalid_hash() -> Result<()> { let requirements_txt = context.temp_dir.child("requirements.txt"); requirements_txt.write_str("example-a-961b4c22==1.0.0 --hash=sha256:123")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4843,7 +4850,7 @@ fn require_hashes_registry_invalid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:8838f9d005ff0432b258ba648d9cabb1cbdf06ac29d14f788b02edae544032ea")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4873,7 +4880,7 @@ fn require_hashes_registry_invalid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--reinstall") .arg("--require-hashes") @@ -4896,7 +4903,7 @@ fn require_hashes_registry_invalid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--refresh") .arg("--reinstall") @@ -4923,7 +4930,7 @@ fn require_hashes_registry_invalid_hash() -> Result<()> { requirements_txt .write_str("example-a-961b4c22==1.0.0 --hash=sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e --hash=sha256:a3cf07a05aac526131a2e8b6e4375ee6c6eaac8add05b88035e960ac6cd999ee")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.txt") .arg("--refresh") .arg("--reinstall") @@ -4959,7 +4966,7 @@ fn target_built_distribution() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("iniconfig==2.0.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in") .arg("--target") .arg("target"), @r###" @@ -4994,7 +5001,7 @@ fn target_built_distribution() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("iniconfig==1.1.1")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in") .arg("--target") .arg("target"), @r###" @@ -5015,7 +5022,7 @@ fn target_built_distribution() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("flask")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in") .arg("--target") .arg("target"), @r###" @@ -5051,7 +5058,7 @@ fn target_source_distribution() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("iniconfig==2.0.0")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in") .arg("--no-binary") .arg("iniconfig") @@ -5100,7 +5107,7 @@ fn target_no_build_isolation() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("flit_core")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in"), @r###" success: true exit_code: 0 @@ -5117,7 +5124,7 @@ fn target_no_build_isolation() -> Result<()> { let requirements_in = context.temp_dir.child("requirements.in"); requirements_in.write_str("wheel")?; - uv_snapshot!(command(&context) + uv_snapshot!(sync_without_exclude_newer(&context) .arg("requirements.in") .arg("--no-build-isolation") .arg("--no-binary")