use crate::signal;
#[test]
fn stop_signal_is_detected_after_task_completion() -> anyhow::Result<()> {
let temp = tempfile::TempDir::new()?;
let cache_dir = temp.path().join(".ralph/cache");
signal::create_stop_signal(&cache_dir)?;
assert!(signal::stop_signal_exists(&cache_dir));
let cleared = signal::clear_stop_signal(&cache_dir)?;
assert!(cleared);
assert!(!signal::stop_signal_exists(&cache_dir));
Ok(())
}
#[test]
fn stop_signal_clear_is_idempotent() -> anyhow::Result<()> {
let temp = tempfile::TempDir::new()?;
let cache_dir = temp.path().join(".ralph/cache");
let cleared = signal::clear_stop_signal(&cache_dir)?;
assert!(!cleared);
Ok(())
}
#[test]
fn stop_signal_create_is_idempotent() -> anyhow::Result<()> {
let temp = tempfile::TempDir::new()?;
let cache_dir = temp.path().join(".ralph/cache");
signal::create_stop_signal(&cache_dir)?;
assert!(signal::stop_signal_exists(&cache_dir));
signal::create_stop_signal(&cache_dir)?;
assert!(signal::stop_signal_exists(&cache_dir));
Ok(())
}
#[test]
fn stop_signal_cleared_on_sequential_loop_exit() -> anyhow::Result<()> {
let temp = tempfile::TempDir::new()?;
let cache_dir = temp.path().join(".ralph/cache");
signal::create_stop_signal(&cache_dir)?;
assert!(signal::stop_signal_exists(&cache_dir));
let cleared = signal::clear_stop_signal(&cache_dir)?;
assert!(cleared);
assert!(!signal::stop_signal_exists(&cache_dir));
Ok(())
}
#[test]
fn stop_signal_clear_is_idempotent_for_loop_exit() -> anyhow::Result<()> {
let temp = tempfile::TempDir::new()?;
let cache_dir = temp.path().join(".ralph/cache");
let cleared = signal::clear_stop_signal(&cache_dir)?;
assert!(!cleared);
Ok(())
}