Use TestContext::with_filter in more places (#18091)

This commit is contained in:
Zanie Blue
2026-02-18 14:12:00 -06:00
committed by GitHub
parent 585dac12a9
commit 94d64ff4ee
13 changed files with 119 additions and 138 deletions
+4 -6
View File
@@ -1757,10 +1757,9 @@ fn build_list_files_errors() -> Result<()> {
let built_by_uv = current_dir()?.join("../../test/packages/built-by-uv");
let mut filters = context.filters();
let context = context.with_filter(("--link-mode <LINK_MODE> ", ""));
// In CI, we run with link mode settings.
filters.push(("--link-mode <LINK_MODE> ", ""));
uv_snapshot!(filters, context.build()
uv_snapshot!(context.filters(), context.build()
.arg(&built_by_uv)
.arg("--out-dir")
.arg(context.temp_dir.join("output1"))
@@ -1780,10 +1779,9 @@ fn build_list_files_errors() -> Result<()> {
// Not a uv build backend package, we can't list it.
let anyio_local = current_dir()?.join("../../test/packages/anyio_local");
let mut filters = context.filters();
// Windows normalization
filters.push(("/crates/uv/../../", "/"));
uv_snapshot!(filters, context.build()
let context = context.with_filter(("/crates/uv/../../", "/"));
uv_snapshot!(context.filters(), context.build()
.arg(&anyio_local)
.arg("--out-dir")
.arg(context.temp_dir.join("output2"))
+7 -7
View File
@@ -37,13 +37,13 @@ fn cache_init_failure() -> Result<()> {
// Point the cache to a subdirectory within the read-only parent
let cache_dir = cache_parent.child("cache");
let mut filters = context.filters();
// Filter both the relative path (in the first line) and absolute path (in the cause)
filters.push((r"cache_parent/cache", "[CACHE_DIR]"));
filters.push((
r"failed to create directory `.*`",
"failed to create directory `[CACHE_DIR]`",
));
let context = context
.with_filter((r"cache_parent/cache", "[CACHE_DIR]"))
.with_filter((
r"failed to create directory `.*`",
"failed to create directory `[CACHE_DIR]`",
));
// Build the sync command manually to use our custom cache directory.
// We can't use context.sync() because it adds --cache-dir with the default cache.
@@ -56,7 +56,7 @@ fn cache_init_failure() -> Result<()> {
context.add_shared_env(&mut command, false);
// Running a command should fail with a chained error about cache initialization
uv_snapshot!(&filters, command, @"
uv_snapshot!(context.filters(), command, @"
success: false
exit_code: 2
----- stdout -----
+15 -17
View File
@@ -408,8 +408,7 @@ fn add_git_private_source() -> Result<()> {
fn add_git_private_raw() -> Result<()> {
let context = uv_test::test_context!("3.12");
let token = decode_token(READ_ONLY_GITHUB_TOKEN);
let mut filters = context.filters();
filters.push((&token, "***"));
let context = context.with_filter((&token, "***"));
let pyproject_toml = context.temp_dir.child("pyproject.toml");
pyproject_toml.write_str(indoc! {r#"
@@ -420,7 +419,7 @@ fn add_git_private_raw() -> Result<()> {
dependencies = []
"#})?;
uv_snapshot!(filters, context.add().arg(format!("uv-private-pypackage @ git+https://{token}@github.com/astral-test/uv-private-pypackage")).arg("--raw-sources"), @"
uv_snapshot!(context.filters(), context.add().arg(format!("uv-private-pypackage @ git+https://{token}@github.com/astral-test/uv-private-pypackage")).arg("--raw-sources"), @"
success: true
exit_code: 0
----- stdout -----
@@ -435,7 +434,7 @@ fn add_git_private_raw() -> Result<()> {
let pyproject_toml = context.read("pyproject.toml");
insta::with_settings!({
filters => filters.clone()
filters => context.filters()
}, {
assert_snapshot!(
pyproject_toml, @r#"
@@ -453,7 +452,7 @@ fn add_git_private_raw() -> Result<()> {
let lock = context.read("uv.lock");
insta::with_settings!({
filters => filters.clone(),
filters => context.filters(),
}, {
assert_snapshot!(
lock, @r#"
@@ -484,7 +483,7 @@ fn add_git_private_raw() -> Result<()> {
});
// Install from the lockfile.
uv_snapshot!(filters, context.sync().arg("--frozen"), @"
uv_snapshot!(context.filters(), context.sync().arg("--frozen"), @"
success: true
exit_code: 0
----- stdout -----
@@ -787,14 +786,14 @@ fn add_git_lfs() -> Result<()> {
// calls to `git` and `git_metadata` functions which don't have guaranteed execution order.
// In addition, we can get different error codes depending on where the failure occurs,
// although we know the error code cannot be 0.
let mut filters = context.filters();
filters.push((r"exit_code: -?[1-9]\d*", "exit_code: [ERROR_CODE]"));
filters.push((
"(?s)(----- stderr -----).*?The source distribution `[^`]+` is missing Git LFS artifacts.*",
"$1\n[PREFIX]The source distribution `[DISTRIBUTION]` is missing Git LFS artifacts",
));
let context = context
.with_filter((r"exit_code: -?[1-9]\d*", "exit_code: [ERROR_CODE]"))
.with_filter((
"(?s)(----- stderr -----).*?The source distribution `[^`]+` is missing Git LFS artifacts.*",
"$1\n[PREFIX]The source distribution `[DISTRIBUTION]` is missing Git LFS artifacts",
));
uv_snapshot!(filters, context.add()
uv_snapshot!(context.filters(), context.add()
.env(EnvVars::UV_INTERNAL__TEST_LFS_DISABLED, "1")
.arg("git+https://github.com/astral-sh/test-lfs-repo")
.arg("--rev").arg("0fe88f7c2e2883521bf065c108d9ee8eb115674b")
@@ -11122,8 +11121,7 @@ async fn add_index_empty_directory() -> Result<()> {
#[test]
fn add_index_with_ambiguous_relative_path() -> Result<()> {
let context = uv_test::test_context!("3.12");
let mut filters = context.filters();
filters.push((r"\./|\.\\\\", r"[PREFIX]"));
let context = context.with_filter((r"\./|\.\\", r"[PREFIX]"));
let pyproject_toml = context.temp_dir.child("pyproject.toml");
pyproject_toml.write_str(indoc! {r#"
@@ -11135,7 +11133,7 @@ fn add_index_with_ambiguous_relative_path() -> Result<()> {
"#})?;
#[cfg(unix)]
uv_snapshot!(filters, context.add().arg("iniconfig").arg("--index").arg("test-index"), @"
uv_snapshot!(context.filters(), context.add().arg("iniconfig").arg("--index").arg("test-index"), @"
success: false
exit_code: 2
----- stdout -----
@@ -11146,7 +11144,7 @@ fn add_index_with_ambiguous_relative_path() -> Result<()> {
");
#[cfg(windows)]
uv_snapshot!(filters, context.add().arg("iniconfig").arg("--index").arg("test-index"), @r"
uv_snapshot!(context.filters(), context.add().arg("iniconfig").arg("--index").arg("test-index"), @r"
success: false
exit_code: 2
----- stdout -----
+2 -3
View File
@@ -609,12 +609,11 @@ fn format_no_matching_version() -> Result<()> {
"})?;
// Run format with impossible version constraints - should fail
let mut filters = context.filters();
filters.push((
let context = context.with_filter((
r"\b[a-z0-9_]+-(?:apple|pc|unknown)-[a-z0-9_]+(?:-[a-z0-9_]+)?\b",
"[PLATFORM]",
));
uv_snapshot!(filters, context.format().arg("--version").arg(">=999.0.0"), @"
uv_snapshot!(context.filters(), context.format().arg("--version").arg(">=999.0.0"), @"
success: false
exit_code: 2
----- stdout -----
+2 -3
View File
@@ -13234,8 +13234,7 @@ fn git_source_refs() -> Result<()> {
fn git_source_missing_tag() -> Result<()> {
let context = uv_test::test_context!("3.12");
let mut filters = context.filters();
filters.push(("`.*/git fetch (.*)`", "`git fetch $1`"));
let context = context.with_filter(("`.*/git fetch (.*)`", "`git fetch $1`"));
let pyproject_toml = context.temp_dir.child("pyproject.toml");
pyproject_toml.write_str(indoc! {r#"
@@ -13250,7 +13249,7 @@ fn git_source_missing_tag() -> Result<()> {
uv-public-pypackage = { git = "https://github.com/astral-test/uv-public-pypackage", tag = "missing" }
"#})?;
uv_snapshot!(filters, context.pip_compile()
uv_snapshot!(context.filters(), context.pip_compile()
.arg("pyproject.toml"), @"
success: false
exit_code: 1
+19 -25
View File
@@ -215,13 +215,12 @@ fn invalid_pyproject_toml_option_unknown_field() -> Result<()> {
build-backend = "setuptools.build_meta"
"#})?;
let mut filters = context.filters();
filters.push((
let context = context.with_filter((
"expected one of `required-version`, `native-tls`, .*",
"expected one of `required-version`, `native-tls`, [...]",
));
uv_snapshot!(filters, context.pip_install()
uv_snapshot!(context.filters(), context.pip_install()
.arg("-r")
.arg("pyproject.toml"), @r#"
success: true
@@ -2205,14 +2204,12 @@ fn update_ref_git_public_https() {
#[test]
#[cfg(feature = "test-git")]
fn install_git_public_https_missing_branch_or_tag() {
let context = uv_test::test_context!(DEFAULT_PYTHON_VERSION);
let mut filters = context.filters();
// Windows does not style the command the same as Unix, so we must omit it from the snapshot
filters.push(("`.*/git(.exe)? fetch .*`", "`git fetch [...]`"));
filters.push(("exit status", "exit code"));
let context = uv_test::test_context!(DEFAULT_PYTHON_VERSION)
.with_filter(("`.*/git(.exe)? fetch .*`", "`git fetch [...]`"))
.with_filter(("exit status", "exit code"));
uv_snapshot!(filters, context.pip_install()
uv_snapshot!(context.filters(), context.pip_install()
// 2.0.0 does not exist
.arg("uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@2.0.0"), @"
success: false
@@ -2293,20 +2290,17 @@ async fn install_git_public_rate_limited_by_github_rest_api_429_response() {
#[test]
#[cfg(feature = "test-git")]
fn install_git_public_https_missing_commit() {
let context = uv_test::test_context!(DEFAULT_PYTHON_VERSION);
let mut filters = context.filters();
// Windows does not style the command the same as Unix, so we must omit it from the snapshot
filters.push(("`.*/git(.exe)? rev-parse .*`", "`git rev-parse [...]`"));
filters.push(("exit status", "exit code"));
let context = uv_test::test_context!(DEFAULT_PYTHON_VERSION)
.with_filter(("`.*/git(.exe)? rev-parse .*`", "`git rev-parse [...]`"))
.with_filter(("exit status", "exit code"))
// There are flakes on Windows where this irrelevant error is appended
.with_filter((
"fatal: unable to write response end packet: Broken pipe\n",
"",
));
// There are flakes on Windows where this irrelevant error is appended
filters.push((
"fatal: unable to write response end packet: Broken pipe\n",
"",
));
uv_snapshot!(filters, context.pip_install()
uv_snapshot!(context.filters(), context.pip_install()
// 2.0.0 does not exist
.arg("uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@79a935a7a1a0ad6d0bdf72dce0e16cb0a24a1b3b")
, @"
@@ -2536,16 +2530,16 @@ fn install_git_private_https_pat_not_authorized() {
// A revoked token
let token = "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";
let mut filters = context.filters();
// TODO(john): We need this filter because we are displaying the token when
// an underlying process error message is being displayed. We should actually
// mask it.
filters.push((token, "***"));
filters.push(("`.*/git fetch (.*)`", "`git fetch $1`"));
let context = context
.with_filter((token, "***"))
.with_filter(("`.*/git fetch (.*)`", "`git fetch $1`"));
// We provide a username otherwise (since the token is invalid), the git cli will prompt for a password
// and hang the test
uv_snapshot!(filters, context.pip_install()
uv_snapshot!(context.filters(), context.pip_install()
.arg(format!("uv-private-pypackage @ git+https://git:{token}@github.com/astral-test/uv-private-pypackage"))
, @"
success: false
+12 -14
View File
@@ -2622,12 +2622,11 @@ fn python_install_cached() {
");
// 3.12 isn't cached, so it can't be installed
let mut filters = context.filters();
filters.push((
let context = context.with_filter((
"cpython-3.12.*.tar.gz",
"cpython-3.12.[PATCH]-[DATE]-[PLATFORM].tar.gz",
));
uv_snapshot!(filters, context
uv_snapshot!(context.filters(), context
.python_install()
.arg("3.12")
.arg("--offline")
@@ -2733,13 +2732,13 @@ fn python_install_no_cache() {
");
// 3.12 isn't cached, so it can't be installed
let mut filters = context.filters();
filters.push((
"cpython-3.12.*.tar.gz",
"cpython-3.12.[PATCH]-[DATE]-[PLATFORM].tar.gz",
));
filters.push((r"releases/download/\d{8}/", "releases/download/[DATE]/"));
uv_snapshot!(filters, context
let context = context
.with_filter((
"cpython-3.12.*.tar.gz",
"cpython-3.12.[PATCH]-[DATE]-[PLATFORM].tar.gz",
))
.with_filter((r"releases/download/\d{8}/", "releases/download/[DATE]/"));
uv_snapshot!(context.filters(), context
.python_install()
.arg("3.12")
.arg("--offline"), @"
@@ -3497,11 +3496,10 @@ fn uninstall_last_patch() {
"
);
let mut filters = context.filters();
filters.push(("python3", "python"));
let context = context.with_filter(("python3", "python"));
#[cfg(unix)]
uv_snapshot!(filters, context.run().arg("python").arg("--version"), @"
uv_snapshot!(context.filters(), context.run().arg("python").arg("--version"), @"
success: false
exit_code: 2
----- stdout -----
@@ -3515,7 +3513,7 @@ fn uninstall_last_patch() {
);
#[cfg(windows)]
uv_snapshot!(filters, context.run().arg("python").arg("--version"), @r"
uv_snapshot!(context.filters(), context.run().arg("python").arg("--version"), @r"
success: false
exit_code: 2
----- stdout -----
+2 -3
View File
@@ -122,11 +122,10 @@ fn python_upgrade_without_version() {
+ cpython-3.13.1-[PLATFORM] (python3.13)
");
let mut filters = context.filters().clone();
filters.push((r"3.13.\d+", "3.13.[X]"));
let context = context.with_filter((r"3.13.\d+", "3.13.[X]"));
// Upgrade one patch version
uv_snapshot!(filters, context.python_upgrade().arg("3.13"), @"
uv_snapshot!(context.filters(), context.python_upgrade().arg("3.13"), @"
success: true
exit_code: 0
----- stdout -----
+10 -12
View File
@@ -143,9 +143,9 @@ fn run_with_python_version() -> Result<()> {
fn run_args() -> Result<()> {
let context = uv_test::test_context!("3.12");
let mut filters = context.filters();
filters.push((r"Usage: (uv|\.exe) run \[OPTIONS\] (?s).*", "[UV RUN HELP]"));
filters.push((r"usage: .*(\n|.*)*", "usage: [PYTHON HELP]"));
let context = context
.with_filter((r"Usage: uv(\.exe)? run \[OPTIONS\] (?s).*", "[UV RUN HELP]"))
.with_filter((r"usage: .*(\n|.*)*", "usage: [PYTHON HELP]"));
let pyproject_toml = context.temp_dir.child("pyproject.toml");
pyproject_toml.write_str(indoc! { r#"
@@ -162,7 +162,7 @@ fn run_args() -> Result<()> {
})?;
// We treat arguments before the command as uv arguments
uv_snapshot!(filters, context.run().arg("--help").arg("python"), @"
uv_snapshot!(context.filters(), context.run().arg("--help").arg("python"), @"
success: true
exit_code: 0
----- stdout -----
@@ -172,7 +172,7 @@ fn run_args() -> Result<()> {
");
// We don't treat arguments after the command as uv arguments
uv_snapshot!(filters, context.run().arg("python").arg("--help"), @"
uv_snapshot!(context.filters(), context.run().arg("python").arg("--help"), @"
success: true
exit_code: 0
----- stdout -----
@@ -180,7 +180,7 @@ fn run_args() -> Result<()> {
");
// Can use `--` to separate uv arguments from the command arguments.
uv_snapshot!(filters, context.run().arg("--").arg("python").arg("--version"), @"
uv_snapshot!(context.filters(), context.run().arg("--").arg("python").arg("--version"), @"
success: true
exit_code: 0
----- stdout -----
@@ -4452,12 +4452,11 @@ fn run_gui_script_explicit_stdin_unix() -> Result<()> {
#[test]
fn run_remote_pep723_script() {
let context = uv_test::test_context!("3.12").with_filtered_python_names();
let mut filters = context.filters();
filters.push((
let context = context.with_filter((
r"(?m)^Downloaded remote script to:.*\.py$",
"Downloaded remote script to: [TEMP_PATH].py",
));
uv_snapshot!(filters, context.run().arg("https://raw.githubusercontent.com/astral-sh/uv/df45b9ac2584824309ff29a6a09421055ad730f6/scripts/uv-run-remote-script-test.py").arg(EnvVars::CI), @"
uv_snapshot!(context.filters(), context.run().arg("https://raw.githubusercontent.com/astral-sh/uv/df45b9ac2584824309ff29a6a09421055ad730f6/scripts/uv-run-remote-script-test.py").arg(EnvVars::CI), @"
success: true
exit_code: 0
----- stdout -----
@@ -4735,13 +4734,12 @@ fn run_with_not_existing_env_file() -> Result<()> {
"
})?;
let mut filters = context.filters();
filters.push((
let context = context.with_filter((
r"(?m)^error: Failed to read environment file `.env.development`: .*$",
"error: Failed to read environment file `.env.development`: [ERR]",
));
uv_snapshot!(filters, context.run().arg("--env-file").arg(".env.development").arg("test.py"), @"
uv_snapshot!(context.filters(), context.run().arg("--env-file").arg(".env.development").arg("test.py"), @"
success: false
exit_code: 2
----- stdout -----
+10 -10
View File
@@ -12616,17 +12616,17 @@ fn sync_required_environment_hint() -> Result<()> {
Resolved 2 packages in [TIME]
");
let mut filters = context.filters();
filters.push((
r"You're on [^ ]+ \(`.*`\)",
"You're on [PLATFORM] (`[TAG]`)",
));
filters.push((
r"sys_platform == '[^']+' and platform_machine == '[^']+'",
"sys_platform == '[PLATFORM]' and platform_machine == '[MACHINE]'",
));
let context = context
.with_filter((
r"You're on [^ ]+ \(`.*`\)",
"You're on [PLATFORM] (`[TAG]`)",
))
.with_filter((
r"sys_platform == '[^']+' and platform_machine == '[^']+'",
"sys_platform == '[PLATFORM]' and platform_machine == '[MACHINE]'",
));
uv_snapshot!(filters, context.sync().env_remove(EnvVars::UV_EXCLUDE_NEWER), @r#"
uv_snapshot!(context.filters(), context.sync().env_remove(EnvVars::UV_EXCLUDE_NEWER), @r#"
success: false
exit_code: 2
----- stdout -----
+11 -12
View File
@@ -568,10 +568,9 @@ fn tool_install_suggest_other_packages_with_executable() {
.with_filtered_exe_suffix();
let tool_dir = context.temp_dir.child("tools");
let bin_dir = context.temp_dir.child("bin");
let mut filters = context.filters();
filters.push(("\\+ uvloop(.+)\n ", ""));
let context = context.with_filter(("\\+ uvloop(.+)\n ", ""));
uv_snapshot!(filters, context.tool_install()
uv_snapshot!(context.filters(), context.tool_install()
.arg("fastapi==0.111.0")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @"
@@ -2150,14 +2149,14 @@ fn tool_install_git_lfs() {
// calls to `git` and `git_metadata` functions which don't have guaranteed execution order.
// In addition, we can get different error codes depending on where the failure occurs,
// although we know the error code cannot be 0.
let mut filters = context.filters();
filters.push((r"exit_code: -?[1-9]\d*", "exit_code: [ERROR_CODE]"));
filters.push((
"(?s)(----- stderr -----).*?The source distribution `[^`]+` is missing Git LFS artifacts.*",
"$1\n[PREFIX]The source distribution `[DISTRIBUTION]` is missing Git LFS artifacts",
));
let context = context
.with_filter((r"exit_code: -?[1-9]\d*", "exit_code: [ERROR_CODE]"))
.with_filter((
"(?s)(----- stderr -----).*?The source distribution `[^`]+` is missing Git LFS artifacts.*",
"$1\n[PREFIX]The source distribution `[DISTRIBUTION]` is missing Git LFS artifacts",
));
uv_snapshot!(filters, context.tool_install()
uv_snapshot!(context.filters(), context.tool_install()
.arg("--reinstall")
.arg("--lfs")
.arg("test-lfs-repo @ git+https://github.com/astral-sh/test-lfs-repo@54e5eebd3c6851b1353fc7b1e5b4eca11e27581c")
@@ -2196,7 +2195,7 @@ fn tool_install_git_lfs() {
#[cfg(not(windows))]
uv_snapshot!(context.filters(), Command::new("test-lfs-repo-assets").env(EnvVars::PATH, bin_dir.as_os_str()), @r#"
success: false
exit_code: 1
exit_code: [ERROR_CODE]
----- stdout -----
----- stderr -----
@@ -2215,7 +2214,7 @@ fn tool_install_git_lfs() {
#[cfg(windows)]
uv_snapshot!(context.filters(), Command::new("test-lfs-repo-assets").env(EnvVars::PATH, bin_dir.as_os_str()), @r#"
success: false
exit_code: 1
exit_code: [ERROR_CODE]
----- stdout -----
----- stderr -----
+23 -23
View File
@@ -9,17 +9,17 @@ use uv_test::{uv_snapshot, venv_bin_path};
#[test]
fn tool_run_args() {
let context = uv_test::test_context!("3.12").with_filtered_counts();
let mut filters = context.filters();
filters.push((
r"Usage: uv tool run \[OPTIONS\] (?s).*",
"[UV TOOL RUN HELP]",
));
filters.push((r"usage: pytest \[options\] (?s).*", "[PYTEST HELP]"));
let context = context
.with_filter((
r"Usage: uv(\.exe)? tool run \[OPTIONS\] (?s).*",
"[UV TOOL RUN HELP]",
))
.with_filter((r"usage: pytest \[options\] (?s).*", "[PYTEST HELP]"));
let tool_dir = context.temp_dir.child("tools");
let bin_dir = context.temp_dir.child("bin");
// We treat arguments before the command as uv tool run arguments
uv_snapshot!(filters, context.tool_run()
uv_snapshot!(context.filters(), context.tool_run()
.arg("--help")
.arg("pytest")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
@@ -33,7 +33,7 @@ fn tool_run_args() {
");
// We don't treat arguments after the command as uv tool run arguments
uv_snapshot!(filters, context.tool_run()
uv_snapshot!(context.filters(), context.tool_run()
.arg("pytest")
.arg("--help")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
@@ -45,7 +45,7 @@ fn tool_run_args() {
");
// Can use `--` to separate uv arguments from the command arguments.
uv_snapshot!(filters, context.tool_run()
uv_snapshot!(context.filters(), context.tool_run()
.arg("--")
.arg("pytest")
.arg("--version")
@@ -309,12 +309,12 @@ fn tool_run_warn_executable_not_in_from() {
let tool_dir = context.temp_dir.child("tools");
let bin_dir = context.temp_dir.child("bin");
let mut filters = context.filters();
filters.push(("\\+ uvloop(.+)\n ", ""));
// Strip off the `fastapi` command output.
filters.push(("(?s)fastapi` instead.*", "fastapi` instead."));
let context = context
.with_filter(("\\+ uvloop(.+)\n ", ""))
// Strip off the `fastapi` command output.
.with_filter(("(?s)fastapi` instead.*", "fastapi` instead."));
uv_snapshot!(filters, context.tool_run()
uv_snapshot!(context.filters(), context.tool_run()
.arg("--from")
.arg("fastapi")
.arg("fastapi")
@@ -1113,14 +1113,14 @@ fn tool_run_git_lfs() {
// calls to `git` and `git_metadata` functions which don't have guaranteed execution order.
// In addition, we can get different error codes depending on where the failure occurs,
// although we know the error code cannot be 0.
let mut filters = context.filters();
filters.push((r"exit_code: -?[1-9]\d*", "exit_code: [ERROR_CODE]"));
filters.push((
"(?s)(----- stderr -----).*?The source distribution `[^`]+` is missing Git LFS artifacts.*",
"$1\n[PREFIX]The source distribution `[DISTRIBUTION]` is missing Git LFS artifacts",
));
let context = context
.with_filter((r"exit_code: -?[1-9]\d*", "exit_code: [ERROR_CODE]"))
.with_filter((
"(?s)(----- stderr -----).*?The source distribution `[^`]+` is missing Git LFS artifacts.*",
"$1\n[PREFIX]The source distribution `[DISTRIBUTION]` is missing Git LFS artifacts",
));
uv_snapshot!(filters, context.tool_run()
uv_snapshot!(context.filters(), context.tool_run()
.arg("--lfs")
.arg("test-lfs-repo @ git+https://github.com/astral-sh/test-lfs-repo@54e5eebd3c6851b1353fc7b1e5b4eca11e27581c")
.env(EnvVars::UV_INTERNAL__TEST_LFS_DISABLED, "1")
@@ -1143,7 +1143,7 @@ fn tool_run_git_lfs() {
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r#"
success: false
exit_code: 1
exit_code: [ERROR_CODE]
----- stdout -----
----- stderr -----
@@ -1171,7 +1171,7 @@ fn tool_run_git_lfs() {
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r#"
success: false
exit_code: 1
exit_code: [ERROR_CODE]
----- stdout -----
----- stderr -----
+2 -3
View File
@@ -1416,14 +1416,13 @@ fn path_with_trailing_space_gives_proper_error() {
// Set a custom cache directory with a trailing space
let path_with_trailing_slash = format!("{} ", context.cache_dir.path().display());
let mut filters = context.filters();
// Windows translates error messages, for example i get:
// ": Das System kann den angegebenen Pfad nicht finden. (os error 3)"
filters.push((
let context = context.with_filter((
r"CACHEDIR.TAG`: .* \(os error 3\)",
"CACHEDIR.TAG`: The system cannot find the path specified. (os error 3)",
));
uv_snapshot!(filters, std::process::Command::new(uv_test::get_bin!())
uv_snapshot!(context.filters(), std::process::Command::new(uv_test::get_bin!())
.arg("venv")
.env(EnvVars::UV_CACHE_DIR, path_with_trailing_slash), @r###"
success: false