use super::*;
use crate::workspace::cwd;
#[test]
fn a_seeded_child_starts_in_the_directory_its_dispatcher_named() {
let (_h, ws) = fixture::workspace();
let parent_wt = fixture::spawn_root(&ws, "20260101-p1");
let g = crate::template::RealGit::new();
let outside = tempfile::TempDir::new().unwrap();
let target = std::fs::canonicalize(outside.path()).unwrap();
let mut request = req(&ws, "20260101-p1", &parent_wt, "g");
request.cwd = Some(&target);
let child = run(
&request,
&g,
&crate::prompt::SystemClock,
&crate::prompt::NanoIdGen,
&RecordingLauncher::ok(),
&test_rng(),
)
.unwrap();
assert_eq!(cwd::read(&ws, &child, &g), Some(target));
}
#[test]
fn an_unseeded_child_has_no_mark_so_it_works_in_its_worktree() {
let (_h, ws) = fixture::workspace();
let parent_wt = fixture::spawn_root(&ws, "20260101-p1");
let g = crate::template::RealGit::new();
let child = run(
&req(&ws, "20260101-p1", &parent_wt, "g"),
&g,
&crate::prompt::SystemClock,
&crate::prompt::NanoIdGen,
&RecordingLauncher::ok(),
&test_rng(),
)
.unwrap();
assert_eq!(cwd::read(&ws, &child, &g), None);
}
#[test]
fn a_dispatchers_own_working_directory_is_never_inherited() {
let (_h, ws) = fixture::workspace();
let parent_wt = fixture::spawn_root(&ws, "20260101-p1");
let g = crate::template::RealGit::new();
let elsewhere = tempfile::TempDir::new().unwrap();
cwd::write(&ws, "20260101-p1", elsewhere.path(), &g).unwrap();
let child = run(
&req(&ws, "20260101-p1", &parent_wt, "g"),
&g,
&crate::prompt::SystemClock,
&crate::prompt::NanoIdGen,
&RecordingLauncher::ok(),
&test_rng(),
)
.unwrap();
assert_eq!(cwd::read(&ws, &child, &g), None);
assert_eq!(
cwd::read(&ws, "20260101-p1", &g),
Some(elsewhere.path().to_path_buf())
);
}