use super::layer_tests::{CountingEnv, LayerScenario, replay_events, scenario_cli};
use super::*;
use proptest::prelude::*;
use tempfile::tempdir;
proptest! {
#[test]
fn replay_is_repeatable_and_environment_free(extra_replays in 0..32usize) {
let temp = tempdir().expect("create temp dir");
test_support::fs::write(temp.path().join(".netsuke.toml"), "jobs = 7\n")
.expect("write project config");
let cli = scenario_cli(LayerScenario::Discovery, &temp).expect("build scenario cli");
let env = CountingEnv::default();
let discovered = collect_diag_file_layers_with_env(&cli, &env);
let discovery_lookups = env.get_calls();
prop_assert!(
discovery_lookups > 0,
"discovery should read the injected environment"
);
let first = replay_events(&discovered).expect("replay retained events");
prop_assert!(
first.iter().any(|event| event.contains("using config discovery")),
"the discovery branch should be replayed, got {first:?}"
);
for _ in 0..extra_replays {
prop_assert_eq!(
&replay_events(&discovered).expect("replay again"),
&first,
"repeated replay must emit identical events"
);
}
prop_assert_eq!(
env.get_calls(),
discovery_lookups,
"replay must not repeat environment access"
);
}
}