huskies: merge 1238 bug worktree tests fail on macOS: tests clobber global HOME

This commit is contained in:
Huskies Agent
2026-07-21 12:10:20 +00:00
parent 22710571df
commit 8a32c1ffd8
20 changed files with 488 additions and 248 deletions
+26 -10
View File
@@ -177,16 +177,32 @@ mod tests {
use tempfile::TempDir;
fn init_git_repo(dir: &std::path::Path) {
Command::new("git")
.args(["init"])
.current_dir(dir)
.output()
.expect("git init");
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output()
.expect("git commit");
use crate::git_test_support::git_ok;
git_ok(
Command::new("git").args(["init"]).current_dir(dir).output(),
"git init",
);
git_ok(
Command::new("git")
.args(["config", "user.email", "test@test.com"])
.current_dir(dir)
.output(),
"git config user.email",
);
git_ok(
Command::new("git")
.args(["config", "user.name", "Test"])
.current_dir(dir)
.output(),
"git config user.name",
);
git_ok(
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output(),
"git commit",
);
}
fn empty_config() -> ProjectConfig {
+26 -10
View File
@@ -216,16 +216,32 @@ mod tests {
use tempfile::TempDir;
fn init_git_repo(dir: &Path) {
Command::new("git")
.args(["init"])
.current_dir(dir)
.output()
.expect("git init");
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output()
.expect("git commit");
use crate::git_test_support::git_ok;
git_ok(
Command::new("git").args(["init"]).current_dir(dir).output(),
"git init",
);
git_ok(
Command::new("git")
.args(["config", "user.email", "test@test.com"])
.current_dir(dir)
.output(),
"git config user.email",
);
git_ok(
Command::new("git")
.args(["config", "user.name", "Test"])
.current_dir(dir)
.output(),
"git config user.name",
);
git_ok(
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output(),
"git commit",
);
}
fn empty_config() -> ProjectConfig {
+38 -13
View File
@@ -64,11 +64,20 @@ pub(crate) fn create_worktree_sync(
.current_dir(project_root)
.output();
// Try to create branch. If it already exists that's fine.
let _ = Command::new("git")
// Try to create branch. If it already exists that's fine; any other
// failure (e.g. unborn HEAD, invalid branch name) must surface here
// rather than resurface later as a confusing "git worktree add" error.
let output = Command::new("git")
.args(["branch", branch])
.current_dir(project_root)
.output();
.output()
.map_err(|e| format!("git branch: {e}"))?;
if !output.status.success() {
let stderr = String::from_utf8_lossy(&output.stderr);
if !stderr.contains("already exists") {
return Err(format!("git branch failed: {stderr}"));
}
}
// Create worktree
let output = Command::new("git")
@@ -227,16 +236,32 @@ mod tests {
use tempfile::TempDir;
fn init_git_repo(dir: &Path) {
Command::new("git")
.args(["init"])
.current_dir(dir)
.output()
.expect("git init");
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output()
.expect("git commit");
use crate::git_test_support::git_ok;
git_ok(
Command::new("git").args(["init"]).current_dir(dir).output(),
"git init",
);
git_ok(
Command::new("git")
.args(["config", "user.email", "test@test.com"])
.current_dir(dir)
.output(),
"git config user.email",
);
git_ok(
Command::new("git")
.args(["config", "user.name", "Test"])
.current_dir(dir)
.output(),
"git config user.name",
);
git_ok(
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output(),
"git commit",
);
}
#[test]
+26 -10
View File
@@ -74,16 +74,32 @@ mod tests {
use tempfile::TempDir;
fn init_git_repo(dir: &std::path::Path) {
Command::new("git")
.args(["init"])
.current_dir(dir)
.output()
.expect("git init");
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output()
.expect("git commit");
use crate::git_test_support::git_ok;
git_ok(
Command::new("git").args(["init"]).current_dir(dir).output(),
"git init",
);
git_ok(
Command::new("git")
.args(["config", "user.email", "test@test.com"])
.current_dir(dir)
.output(),
"git config user.email",
);
git_ok(
Command::new("git")
.args(["config", "user.name", "Test"])
.current_dir(dir)
.output(),
"git config user.name",
);
git_ok(
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output(),
"git commit",
);
}
fn empty_config() -> ProjectConfig {
+26 -10
View File
@@ -98,16 +98,32 @@ mod tests {
use tempfile::TempDir;
fn init_git_repo(dir: &Path) {
Command::new("git")
.args(["init"])
.current_dir(dir)
.output()
.expect("git init");
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output()
.expect("git commit");
use crate::git_test_support::git_ok;
git_ok(
Command::new("git").args(["init"]).current_dir(dir).output(),
"git init",
);
git_ok(
Command::new("git")
.args(["config", "user.email", "test@test.com"])
.current_dir(dir)
.output(),
"git config user.email",
);
git_ok(
Command::new("git")
.args(["config", "user.name", "Test"])
.current_dir(dir)
.output(),
"git config user.name",
);
git_ok(
Command::new("git")
.args(["commit", "--allow-empty", "-m", "init"])
.current_dir(dir)
.output(),
"git commit",
);
}
fn empty_config() -> ProjectConfig {