mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 13:25:00 +00:00
Deduplicate test command creation (#4512)
This PR refactors the command creation in the test suite to remove the duplication. **1)** We add the same set of test stubbing args to almost any uv invocation in the tests: ```rust command .arg("--cache-dir") .arg(self.cache_dir.path()) .env("VIRTUAL_ENV", self.venv.as_os_str()) .env("UV_NO_WRAP", "1") .env("HOME", self.home_dir.as_os_str()) .env("UV_TOOLCHAIN_DIR", "") .env("UV_TEST_PYTHON_PATH", &self.python_path()) .current_dir(self.temp_dir.path()); if cfg!(all(windows, debug_assertions)) { // TODO(konstin): Reduce stack usage in debug mode enough that the tests pass with the // default windows stack of 1MB command.env("UV_STACK_SIZE", (8 * 1024 * 1024).to_string()); } ``` Centralizing these into a `TestContext::add_shared_args` method removes them from everywhere. **2)** Prefix all `TextContext` methods of the pip interface with `pip_`. This is now necessary due to `uv sync` vs. `uv pip sync`. **3)** Move command creation in the various test files into dedicated functions or methods to avoid repeating the arguments. Except for error message tests, there should be at most one `Command::new(get_bin())` call per test file. `EXCLUDE_NEWER` is exclusively used in `TestContext`. --- I'm considering adding a `TestCommand` on top of these changes (in another PR) that holds a reference to the `TextContext`, has `add_shared_args` as a method and uses `Fn(Self) -> Self` instead of `Fn(&mut Self) -> Self` for methods to improved chaining.
This commit is contained in:
parent
e1708689a9
commit
e6103dcab1
19 changed files with 1061 additions and 1846 deletions
|
@ -29,19 +29,9 @@ fn command(context: &TestContext, python_versions: &[&str]) -> Command {
|
|||
.arg("--index-url")
|
||||
.arg("{{index_url}}")
|
||||
.arg("--find-links")
|
||||
.arg("{{vendor_links}}")
|
||||
.arg("--cache-dir")
|
||||
.arg(context.cache_dir.path())
|
||||
.env("VIRTUAL_ENV", context.venv.as_os_str())
|
||||
.env("UV_NO_WRAP", "1")
|
||||
.env("UV_TEST_PYTHON_PATH", python_path)
|
||||
.current_dir(&context.temp_dir);
|
||||
|
||||
if cfg!(all(windows, debug_assertions)) {
|
||||
// TODO(konstin): Reduce stack usage in debug mode enough that the tests pass with the
|
||||
// default windows stack of 1MB
|
||||
command.env("UV_STACK_SIZE", (8 * 1024 * 1024).to_string());
|
||||
}
|
||||
.arg("{{vendor_links}}");
|
||||
context.add_shared_args(&mut command);
|
||||
command.env("UV_TEST_PYTHON_PATH", python_path);
|
||||
|
||||
command
|
||||
}
|
||||
|
|
|
@ -49,19 +49,8 @@ fn command(context: &TestContext) -> Command {
|
|||
.arg("--index-url")
|
||||
.arg("{{index_url}}")
|
||||
.arg("--find-links")
|
||||
.arg("{{vendor_links}}")
|
||||
.arg("--cache-dir")
|
||||
.arg(context.cache_dir.path())
|
||||
.env("VIRTUAL_ENV", context.venv.as_os_str())
|
||||
.env("UV_NO_WRAP", "1")
|
||||
.current_dir(&context.temp_dir);
|
||||
|
||||
if cfg!(all(windows, debug_assertions)) {
|
||||
// TODO(konstin): Reduce stack usage in debug mode enough that the tests pass with the
|
||||
// default windows stack of 1MB
|
||||
command.env("UV_STACK_SIZE", (8 * 1024 * 1024).to_string());
|
||||
}
|
||||
|
||||
.arg("{{vendor_links}}");
|
||||
context.add_shared_args(&mut command);
|
||||
command
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue