diff --git a/bt-daemon/src/lib.rs b/bt-daemon/src/lib.rs index 3fadfc9..8e3fa52 100644 --- a/bt-daemon/src/lib.rs +++ b/bt-daemon/src/lib.rs @@ -516,11 +516,10 @@ pub async fn run_traced( }; let socket = paths::socket_path(None); match flush_managed_run(&managed_run_id, &socket, MANAGED_RUN_FLUSH_TIMEOUT_MS).await { - Ok(result) if result.accepted_sessions == 0 => { - anyhow::bail!( - "managed run produced no accepted trace events; verify hook output and `bt trace status`" - ) - } + Ok(result) if result.accepted_sessions == 0 => tracing::warn!( + managed_run_id, + "managed run produced no accepted trace events" + ), Ok(result) if result.flushed => {} Ok(result) => tracing::warn!( managed_run_id, diff --git a/bt-daemon/tests/pipeline.rs b/bt-daemon/tests/pipeline.rs index 183b00f..e4a4cd2 100644 --- a/bt-daemon/tests/pipeline.rs +++ b/bt-daemon/tests/pipeline.rs @@ -1064,7 +1064,7 @@ impl Drop for EnvVarGuard { #[cfg(all(feature = "cli", unix))] #[tokio::test] -async fn managed_run_flushes_after_success_failure_and_signal_exit() { +async fn managed_run_flushes_and_preserves_agent_exit_status() { use std::os::unix::fs::PermissionsExt; let version = env!("CARGO_PKG_VERSION"); @@ -1081,12 +1081,19 @@ for argument in "$@"; do done session_id=$previous mode=$last -printf '{"session_id":"%s","hook_event_name":"SessionStart"}\n' "$session_id" | - "$BT_DAEMON_TEST_BIN" hook --source debug --managed-run-hook --no-spawn +case "$mode" in + untraced-success|untraced-failure) ;; + *) + printf '{"session_id":"%s","hook_event_name":"SessionStart"}\n' "$session_id" | + "$BT_DAEMON_TEST_BIN" hook --source debug --managed-run-hook --no-spawn + ;; +esac case "$mode" in success) exit 0 ;; failure) exit 7 ;; signal) kill -TERM "$$" ;; + untraced-success) exit 0 ;; + untraced-failure) exit 7 ;; *) exit 99 ;; esac "#, @@ -1127,6 +1134,18 @@ esac assert!(!signal_status.success()); assert_eq!(signal_status.code(), None); + assert!(run("managed-untraced", "untraced-success") + .await + .unwrap() + .success()); + assert_eq!( + run("managed-untraced", "untraced-failure") + .await + .unwrap() + .code(), + Some(7) + ); + assert_eq!( *flushes.lock().unwrap(), HashMap::from([