use assert_cmd::{cargo::cargo_bin_cmd, Command};
use assert_fs::TempDir;
use std::path::{Path, PathBuf};
pub struct TestEnv {
depot_dir: TempDir,
}
impl Default for TestEnv {
fn default() -> Self {
Self::new()
}
}
#[allow(dead_code)] impl TestEnv {
pub fn new() -> Self {
Self {
depot_dir: TempDir::new().unwrap(),
}
}
pub fn juliaup(&self) -> Command {
let mut cmd = cargo_bin_cmd!("juliaup");
cmd.env("JULIA_DEPOT_PATH", self.depot_dir.path());
cmd.env("JULIAUP_DEPOT_PATH", self.depot_dir.path());
cmd
}
pub fn julia(&self) -> Command {
let mut cmd = cargo_bin_cmd!("julia");
cmd.env("JULIA_DEPOT_PATH", self.depot_dir.path());
cmd.env("JULIAUP_DEPOT_PATH", self.depot_dir.path());
cmd
}
pub fn config_path(&self) -> PathBuf {
self.depot_dir.path().join("juliaup").join("juliaup.json")
}
pub fn depot_path(&self) -> &Path {
self.depot_dir.path()
}
}