uv/scripts/scenarios/templates/install.mustache
2025-06-18 15:06:09 +02:00

81 lines
2.2 KiB
Text

//! DO NOT EDIT
//!
//! Generated with `{{generated_with}}`
//! Scenarios from <{{generated_from}}>
//!
#![cfg(all(feature = "python", feature = "pypi", unix))]
use std::process::Command;
use uv_static::EnvVars;
use crate::common::{TestContext, build_vendor_links_url, packse_index_url, uv_snapshot};
/// Create a `pip install` command with options shared across all scenarios.
fn command(context: &TestContext) -> Command {
let mut command = context.pip_install();
command
.arg("--index-url")
.arg(packse_index_url())
.arg("--find-links")
.arg(build_vendor_links_url());
command.env_remove(EnvVars::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}}
{{#resolver_options.python_platform}}
.arg("--python-platform={{.}}")
{{/resolver_options.python_platform}}
{{#root.requires}}
.arg("{{requirement}}")
{{/root.requires}}, @r#"<snapshot>
"#);
{{#expected.explanation}}
// {{expected.explanation}}
{{/expected.explanation}}
{{#expected.satisfiable}}
{{#expected.packages}}
context.assert_installed("{{module_name}}", "{{version}}");
{{/expected.packages}}
{{/expected.satisfiable}}
{{^expected.satisfiable}}
{{#root.requires}}
context.assert_not_installed("{{module_name}}");
{{/root.requires}}
{{/expected.satisfiable}}
}
{{/scenarios}}