mirror of
https://github.com/aljazceru/goose.git
synced 2026-02-23 15:34:27 +01:00
Co-authored-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Wendy Tang <wendytang@squareup.com> Co-authored-by: Jarrod Sibbison <72240382+jsibbison-square@users.noreply.github.com> Co-authored-by: Alex Hancock <alex.hancock@example.com> Co-authored-by: Alex Hancock <alexhancock@block.xyz> Co-authored-by: Lifei Zhou <lifei@squareup.com> Co-authored-by: Wes <141185334+wesrblock@users.noreply.github.com> Co-authored-by: Max Novich <maksymstepanenko1990@gmail.com> Co-authored-by: Zaki Ali <zaki@squareup.com> Co-authored-by: Salman Mohammed <smohammed@squareup.com> Co-authored-by: Kalvin C <kalvinnchau@users.noreply.github.com> Co-authored-by: Alec Thomas <alec@swapoff.org> Co-authored-by: lily-de <119957291+lily-de@users.noreply.github.com> Co-authored-by: kalvinnchau <kalvin@block.xyz> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Rizel Scarlett <rizel@squareup.com> Co-authored-by: bwrage <bwrage@squareup.com> Co-authored-by: Kalvin Chau <kalvin@squareup.com> Co-authored-by: Alice Hau <110418948+ahau-square@users.noreply.github.com> Co-authored-by: Alistair Gray <ajgray@stripe.com> Co-authored-by: Nahiyan Khan <nahiyan.khan@gmail.com> Co-authored-by: Alex Hancock <alexhancock@squareup.com> Co-authored-by: Nahiyan Khan <nahiyan@squareup.com> Co-authored-by: marcelle <1852848+laanak08@users.noreply.github.com> Co-authored-by: Yingjie He <yingjiehe@block.xyz> Co-authored-by: Yingjie He <yingjiehe@squareup.com> Co-authored-by: Lily Delalande <ldelalande@block.xyz> Co-authored-by: Adewale Abati <acekyd01@gmail.com> Co-authored-by: Ebony Louis <ebony774@gmail.com> Co-authored-by: Angie Jones <jones.angie@gmail.com> Co-authored-by: Ebony Louis <55366651+EbonyLouis@users.noreply.github.com>
71 lines
1.9 KiB
Rust
71 lines
1.9 KiB
Rust
/// Helper function to set up a temporary home directory for testing, returns path of that temp dir.
|
|
/// Also creates a default profiles.json to avoid obscure test failures when there are no profiles.
|
|
#[cfg(test)]
|
|
pub fn run_with_tmp_dir<F: FnOnce() -> T, T>(func: F) -> T {
|
|
use std::ffi::OsStr;
|
|
use tempfile::tempdir;
|
|
|
|
let temp_dir = tempdir().unwrap();
|
|
let temp_dir_path = temp_dir.path().to_path_buf();
|
|
setup_profile(&temp_dir_path, None);
|
|
|
|
temp_env::with_vars(
|
|
[
|
|
("HOME", Some(temp_dir_path.as_os_str())),
|
|
("DATABRICKS_HOST", Some(OsStr::new("tmp_host_url"))),
|
|
],
|
|
func,
|
|
)
|
|
}
|
|
|
|
#[cfg(test)]
|
|
#[allow(dead_code)]
|
|
pub async fn run_with_tmp_dir_async<F, Fut, T>(func: F) -> T
|
|
where
|
|
F: FnOnce() -> Fut,
|
|
Fut: std::future::Future<Output = T>,
|
|
{
|
|
use std::ffi::OsStr;
|
|
use tempfile::tempdir;
|
|
|
|
let temp_dir = tempdir().unwrap();
|
|
let temp_dir_path = temp_dir.path().to_path_buf();
|
|
setup_profile(&temp_dir_path, None);
|
|
|
|
temp_env::async_with_vars(
|
|
[
|
|
("HOME", Some(temp_dir_path.as_os_str())),
|
|
("DATABRICKS_HOST", Some(OsStr::new("tmp_host_url"))),
|
|
],
|
|
func(),
|
|
)
|
|
.await
|
|
}
|
|
|
|
#[cfg(test)]
|
|
use std::path::Path;
|
|
|
|
#[cfg(test)]
|
|
/// Setup a goose profile for testing, and an optional profile string
|
|
fn setup_profile(temp_dir_path: &Path, profile_string: Option<&str>) {
|
|
use std::fs;
|
|
|
|
let profile_path = temp_dir_path
|
|
.join(".config")
|
|
.join("goose")
|
|
.join("profiles.json");
|
|
fs::create_dir_all(profile_path.parent().unwrap()).unwrap();
|
|
let default_profile = r#"
|
|
{
|
|
"profile_items": {
|
|
"default": {
|
|
"provider": "databricks",
|
|
"model": "claude-3-5-sonnet-2",
|
|
"additional_extensions": []
|
|
}
|
|
}
|
|
}"#;
|
|
|
|
fs::write(&profile_path, profile_string.unwrap_or(default_profile)).unwrap();
|
|
}
|