mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-31 15:57:26 +00:00

And use test context helpers for commands consistently. Needed for https://github.com/astral-sh/uv/pull/6864
115 lines
3 KiB
Text
115 lines
3 KiB
Text
//! DO NOT EDIT
|
|
//!
|
|
//! Generated with `{{generated_with}}`
|
|
//! Scenarios from <{{generated_from}}>
|
|
//!
|
|
#![cfg(all(feature = "python", feature = "pypi", unix))]
|
|
|
|
use std::path::Path;
|
|
use std::process::Command;
|
|
|
|
use assert_cmd::assert::Assert;
|
|
use assert_cmd::prelude::*;
|
|
|
|
use common::{venv_to_interpreter};
|
|
|
|
use crate::common::{build_vendor_links_url, get_bin, packse_index_url, uv_snapshot, TestContext};
|
|
|
|
mod common;
|
|
|
|
|
|
fn assert_command(venv: &Path, command: &str, temp_dir: &Path) -> Assert {
|
|
Command::new(venv_to_interpreter(venv))
|
|
.arg("-c")
|
|
.arg(command)
|
|
.current_dir(temp_dir)
|
|
.assert()
|
|
}
|
|
|
|
fn assert_installed(venv: &Path, package: &'static str, version: &'static str, temp_dir: &Path) {
|
|
assert_command(
|
|
venv,
|
|
format!("import {package} as package; print(package.__version__, end='')").as_str(),
|
|
temp_dir,
|
|
)
|
|
.success()
|
|
.stdout(version);
|
|
}
|
|
|
|
fn assert_not_installed(venv: &Path, package: &'static str, temp_dir: &Path) {
|
|
assert_command(venv, format!("import {package}").as_str(), temp_dir).failure();
|
|
}
|
|
|
|
/// Create a `pip install` command with options shared across all scenarios.
|
|
fn command(context: &TestContext) -> Command {
|
|
let mut command = Command::new(get_bin());
|
|
command
|
|
.arg("pip")
|
|
.arg("install")
|
|
.arg("--index-url")
|
|
.arg(packse_index_url())
|
|
.arg("--find-links")
|
|
.arg(build_vendor_links_url());
|
|
context.add_shared_args(&mut command, true);
|
|
command.env_remove("UV_EXCLUDE_NEWER");
|
|
command
|
|
}
|
|
|
|
{{#scenarios}}
|
|
|
|
/// {{description}}
|
|
///
|
|
/// ```text
|
|
/// {{name}}
|
|
{{#tree}}
|
|
/// {{.}}
|
|
{{/tree}}
|
|
/// ```
|
|
{{#python_patch}}
|
|
#[cfg(feature = "python-patch")]
|
|
{{/python_patch}}
|
|
#[test]
|
|
fn {{module_name}}() {
|
|
let context = TestContext::new("{{environment.python}}");
|
|
|
|
// In addition to the standard filters, swap out package names for shorter messages
|
|
let mut filters = context.filters();
|
|
filters.push((r"{{name}}-", "package-"));
|
|
|
|
uv_snapshot!(filters, command(&context)
|
|
{{#resolver_options.prereleases}}
|
|
.arg("--prerelease=allow")
|
|
{{/resolver_options.prereleases}}
|
|
{{#resolver_options.no_build}}
|
|
.arg("--only-binary")
|
|
.arg("{{.}}")
|
|
{{/resolver_options.no_build}}
|
|
{{#resolver_options.no_binary}}
|
|
.arg("--no-binary")
|
|
.arg("{{.}}")
|
|
{{/resolver_options.no_binary}}
|
|
{{#root.requires}}
|
|
.arg("{{requirement}}")
|
|
{{/root.requires}}, @r###"<snapshot>
|
|
"###);
|
|
|
|
{{#expected.explanation}}
|
|
// {{expected.explanation}}
|
|
{{/expected.explanation}}
|
|
{{#expected.satisfiable}}
|
|
{{#expected.packages}}
|
|
assert_installed(
|
|
&context.venv,
|
|
"{{module_name}}",
|
|
"{{version}}",
|
|
&context.temp_dir
|
|
);
|
|
{{/expected.packages}}
|
|
{{/expected.satisfiable}}
|
|
{{^expected.satisfiable}}
|
|
{{#root.requires}}
|
|
assert_not_installed(&context.venv, "{{module_name}}", &context.temp_dir);
|
|
{{/root.requires}}
|
|
{{/expected.satisfiable}}
|
|
}
|
|
{{/scenarios}}
|