Fix PID reservation test race and update guardian heartbeat snapshot (#47871)

## Why

The PID reservation test could race with the backend's read on Windows by deleting the PID file from its cleanup task. The guardian heartbeat snapshot and environment normalization also needed to match the current permission-context wording.

## What changed

- Release the reservation lock and let `stop()` remove the stale PID file, then assert that the file is gone.
- Update the guardian heartbeat snapshot and normalization pattern to use `The active permission profile for environment`.

GitOrigin-RevId: d9cadae0e5d36cb2e1ab0517e2d7121cf2d0715d
This commit is contained in:
jif
2026-09-24 16:07:15 +00:00
committed by copyberry
parent 30758e5c77
commit 42266240fd
3 changed files with 9 additions and 9 deletions
@@ -109,16 +109,16 @@ async fn stop_waits_for_live_reservation_to_resolve() {
.await
.expect("open pid lock file");
assert!(try_lock_file(&reservation).expect("lock reservation"));
let cleanup = tokio::spawn(async move {
tokio::time::sleep(Duration::from_millis(50)).await;
let release_reservation = tokio::spawn(async move {
tokio::time::sleep(Duration::from_millis(/*millis*/ 50)).await;
// Let stop() remove the stale PID file under the reservation lock.
// Deleting it here would race with the backend's read on Windows.
drop(reservation);
tokio::fs::remove_file(pid_file)
.await
.expect("remove pid file");
});
backend.stop().await.expect("stop");
cleanup.await.expect("cleanup task");
release_reservation.await.expect("release reservation task");
assert!(!pid_file.exists());
}
#[tokio::test]
@@ -133,8 +133,8 @@ async fn heartbeat_repetitions_keep_later_human_authorization() -> anyhow::Resul
"$1\"<ENVIRONMENT>\"",
),
(
r#"(For this action on environment )"(?:local|remote)","#,
"$1\"<ENVIRONMENT>\",",
r#"(The active permission profile for environment )"(?:local|remote)""#,
"$1\"<ENVIRONMENT>\"",
),
(r#"(?m)^(\s*"cwd": )"[^"]*""#, "$1\"<CWD>\""),
(
@@ -147,7 +147,7 @@ Scenario: Three scheduled runs share one instruction body, a human overrides its
[24]
>>> PARENT TURN PERMISSION CONTEXT START
[25] For this action on environment "<ENVIRONMENT>", the active permission profile has no explicit denied-read paths/globs.
[25] The active permission profile for environment "<ENVIRONMENT>" has no explicit denied-read paths/globs.
[26] >>> PARENT TURN PERMISSION CONTEXT END