mirror of https://github.com/astral-sh/uv
76 lines
1.9 KiB
Rust
76 lines
1.9 KiB
Rust
#![cfg(feature = "python")]
|
|
|
|
use std::process::Command;
|
|
|
|
use anyhow::Result;
|
|
use assert_fs::prelude::*;
|
|
use insta_cmd::_macro_support::insta;
|
|
use insta_cmd::{assert_cmd_snapshot, get_cargo_bin};
|
|
|
|
use common::BIN_NAME;
|
|
|
|
mod common;
|
|
|
|
#[test]
|
|
fn create_venv() -> Result<()> {
|
|
let temp_dir = assert_fs::TempDir::new()?;
|
|
let venv = temp_dir.child(".venv");
|
|
|
|
insta::with_settings!({
|
|
filters => vec![
|
|
(r"Using Python 3\.\d+\.\d+ at .+", "Using Python [VERSION] at [PATH]"),
|
|
(temp_dir.to_str().unwrap(), "/home/ferris/project"),
|
|
]
|
|
}, {
|
|
assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME))
|
|
.arg("venv")
|
|
.arg(venv.as_os_str())
|
|
.arg("--python")
|
|
.arg("python3.12")
|
|
.current_dir(&temp_dir), @r###"
|
|
success: true
|
|
exit_code: 0
|
|
----- stdout -----
|
|
|
|
----- stderr -----
|
|
Using Python [VERSION] at [PATH]
|
|
Creating virtual environment at: /home/ferris/project/.venv
|
|
"###);
|
|
});
|
|
|
|
venv.assert(predicates::path::is_dir());
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn create_venv_defaults_to_cwd() -> Result<()> {
|
|
let temp_dir = assert_fs::TempDir::new()?;
|
|
let venv = temp_dir.child(".venv");
|
|
|
|
insta::with_settings!({
|
|
filters => vec![
|
|
(r"Using Python 3\.\d+\.\d+ at .+", "Using Python [VERSION] at [PATH]"),
|
|
(temp_dir.to_str().unwrap(), "/home/ferris/project"),
|
|
]
|
|
}, {
|
|
assert_cmd_snapshot!(Command::new(get_cargo_bin(BIN_NAME))
|
|
.arg("venv")
|
|
.arg("--python")
|
|
.arg("python3.12")
|
|
.current_dir(&temp_dir), @r###"
|
|
success: true
|
|
exit_code: 0
|
|
----- stdout -----
|
|
|
|
----- stderr -----
|
|
Using Python [VERSION] at [PATH]
|
|
Creating virtual environment at: .venv
|
|
"###);
|
|
});
|
|
|
|
venv.assert(predicates::path::is_dir());
|
|
|
|
Ok(())
|
|
}
|