sessions : am sessions --resume <id> (issue #32) - relance en arriere-plan avec les arguments et le cwd d'origine, cwd optionnel dans spawn_background, gardes running/repl/erreurs claires

This commit is contained in:
2026-08-17 08:48:30 -04:00
parent 314583ceee
commit 30cc49de3c
8 changed files with 96 additions and 12 deletions
+2
View File
@@ -31,6 +31,7 @@ fn spawn_detect_stop_cycle() {
std::path::Path::new(prog),
&args,
&env,
None,
)
.unwrap();
assert!(pid > 0);
@@ -57,6 +58,7 @@ fn spawning_a_failing_program_reports_an_error() {
std::path::Path::new(prog),
&args,
&env,
None,
)
.unwrap_err();
assert!(
+19 -2
View File
@@ -58,16 +58,33 @@ fn agent_session_roundtrip_and_counter() {
fn command_lists_sessions() {
let app = common::test_app("sesscmd", &["sessions"]);
sessions::start_agent(&app, "aider", 4242, None, None, vec![], vec![], None).unwrap();
let code = sessions_cmd::run(&app, None, None, None, None).unwrap();
let code = sessions_cmd::run(&app, None, None, None, None, None).unwrap();
assert_eq!(code, 0);
// --json path returns the row set without error.
sessions::finish_agent(&app, "aider", Some(4242), 0, true).unwrap();
}
#[test]
fn resume_unknown_or_repl_session_errors() {
let app = common::test_app("resume", &["sessions"]);
assert!(sessions_cmd::run(&app, None, None, None, None, Some("inconnue")).is_err());
sessions::start_repl(&app, "r1", None).unwrap();
assert!(sessions_cmd::run(&app, None, None, None, None, Some("r1")).is_err());
}
#[test]
fn resume_dry_run_announces() {
let app = common::test_app("resumedry", &["sessions", "--dry-run"]);
let id = sessions::start_agent(&app, "claude-code", 4242, None, None, vec![], vec![], None).unwrap();
sessions::finish_agent(&app, "claude-code", Some(4242), 0, true).unwrap();
let code = sessions_cmd::run(&app, None, None, None, None, Some(&id)).unwrap();
assert_eq!(code, 0, "dry-run resume");
}
#[test]
fn show_one_accepts_known_id() {
let app = common::test_app("sessshow", &["sessions"]);
let id = sessions::start_agent(&app, "jcode", 99, None, None, vec![], vec![], None).unwrap();
let code = sessions_cmd::run(&app, None, None, None, Some(&id)).unwrap();
let code = sessions_cmd::run(&app, None, None, None, Some(&id), None).unwrap();
assert_eq!(code, 0);
}