42 lines
1.5 KiB
Rust
42 lines
1.5 KiB
Rust
//! Integration test for the event journal: parses the replayable
|
|
//! fixture shipped with the repository and exercises the append path.
|
|
|
|
use agent_manager::events::{self, Event, EventKind};
|
|
use std::path::PathBuf;
|
|
|
|
fn fixture() -> PathBuf {
|
|
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/fixtures/events-sample.jsonl")
|
|
}
|
|
|
|
#[test]
|
|
fn fixture_parses_valid_lines_and_skips_corrupt_ones() {
|
|
let events = events::parse_file(&fixture());
|
|
assert_eq!(events.len(), 2, "the corrupt line must be skipped");
|
|
assert_eq!(events[0].kind, EventKind::Start);
|
|
assert_eq!(events[0].agent.as_deref(), Some("claude-code"));
|
|
assert_eq!(events[0].pid, Some(1234));
|
|
assert_eq!(events[0].env_keys, vec!["OPENAI_KEY".to_string()]);
|
|
assert_eq!(events[1].kind, EventKind::Stop);
|
|
assert_eq!(events[1].duration_s, Some(1364));
|
|
assert_eq!(events[1].exit_code, Some(0));
|
|
assert_eq!(events[1].reason.as_deref(), Some("signal"));
|
|
}
|
|
|
|
#[test]
|
|
fn append_then_read_back_through_read_events() {
|
|
let dir = tempfile::tempdir().unwrap();
|
|
let mut log = events::EventLog::new(dir.path());
|
|
log.append(
|
|
&Event::now(EventKind::Run)
|
|
.with_agent("jcode")
|
|
.with_cwd(Some("/tmp/demo".to_string()))
|
|
.with_exit_code(0),
|
|
)
|
|
.unwrap();
|
|
let all: Vec<Event> = events::read_events(dir.path(), 10);
|
|
assert_eq!(all.len(), 1);
|
|
assert_eq!(all[0].agent.as_deref(), Some("jcode"));
|
|
assert_eq!(all[0].cwd.as_deref(), Some("/tmp/demo"));
|
|
assert_eq!(all[0].exit_code, Some(0));
|
|
}
|