//! 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 uv_static::EnvVars; use crate::common::{ build_vendor_links_url, get_bin, packse_index_url, uv_snapshot, venv_to_interpreter, TestContext, }; 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_options(&mut command, true); 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###" "###); {{#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}}