diff --git a/crates/aprender-contracts-cli/src/bin/pv-sat/tests.rs b/crates/aprender-contracts-cli/src/bin/pv-sat/tests.rs index c632147f69..533447d153 100644 --- a/crates/aprender-contracts-cli/src/bin/pv-sat/tests.rs +++ b/crates/aprender-contracts-cli/src/bin/pv-sat/tests.rs @@ -90,6 +90,11 @@ fn corpus() -> tempfile::TempDir { let dir = tempfile::tempdir().expect("tempdir"); for entry in std::fs::read_dir(src).expect("fixture") { let entry = entry.expect("entry"); + // The ont4/ont4b gates lint this fixture in place (#5446), and pv leaves a `.pv/` directory in it; copy + // the corpus files only, never that directory. + if !entry.file_type().expect("file type").is_file() { + continue; + } std::fs::copy(entry.path(), dir.path().join(entry.file_name())).expect("copy"); } dir diff --git a/crates/aprender-contracts-cli/tests/ont4_relations_gate.rs b/crates/aprender-contracts-cli/tests/ont4_relations_gate.rs index 1fc8f2b871..6e5855a057 100644 --- a/crates/aprender-contracts-cli/tests/ont4_relations_gate.rs +++ b/crates/aprender-contracts-cli/tests/ont4_relations_gate.rs @@ -178,7 +178,8 @@ fn the_legacy_ratchet_rejects_a_rise_and_passes_a_hold() { /// R-8: the gate is computed in every `pv lint` run, not only under `--gate`. #[test] fn the_full_run_computes_the_relations_gate() { - let dir = s(&repo_contracts()); + // A small fixture corpus: the gate list does not depend on the corpus, and the repo tree costs ~27 s in a debug pv (#5446). + let dir = s(&fixture("relations-ok")); let r = pv(&["lint", &dir, "--format", "json"]); let v = json_of(&r); let names: Vec = v["gates"] diff --git a/crates/aprender-contracts-cli/tests/ont4b_shapes_gate.rs b/crates/aprender-contracts-cli/tests/ont4b_shapes_gate.rs index 59014352b8..da73452c40 100644 --- a/crates/aprender-contracts-cli/tests/ont4b_shapes_gate.rs +++ b/crates/aprender-contracts-cli/tests/ont4b_shapes_gate.rs @@ -262,7 +262,8 @@ fn the_tracked_repo_graph_is_fresh() { /// R-8: the gate is computed in every `pv lint` run. #[test] fn the_full_run_computes_the_shapes_gate() { - let r = pv(&["lint", &s(&repo_contracts()), "--format", "json"]); + // A small fixture corpus: the gate list does not depend on the corpus, and the repo tree costs ~27 s in a debug pv (#5446). + let r = pv(&["lint", &s(&fixture("relations-ok")), "--format", "json"]); let v = json_of(&r); let names: Vec = v["gates"] .as_array() diff --git a/crates/aprender-contracts-cli/tests/ont5_consistency_gate.rs b/crates/aprender-contracts-cli/tests/ont5_consistency_gate.rs index 7b8d7b4cd0..db0506e891 100644 --- a/crates/aprender-contracts-cli/tests/ont5_consistency_gate.rs +++ b/crates/aprender-contracts-cli/tests/ont5_consistency_gate.rs @@ -68,6 +68,11 @@ fn corpus() -> tempfile::TempDir { for entry in std::fs::read_dir(repo().join("tests/fixtures/ont/relations-ok")).expect("fixture") { let entry = entry.expect("entry"); + // The ont4/ont4b gates lint this fixture in place (#5446), and pv leaves a `.pv/` directory in it; a parallel + // test must copy the corpus files only, never that directory. + if !entry.file_type().expect("file type").is_file() { + continue; + } std::fs::copy(entry.path(), dir.path().join(entry.file_name())).expect("copy"); } dir diff --git a/crates/aprender-contracts/src/lint/consistency_gate_tests.rs b/crates/aprender-contracts/src/lint/consistency_gate_tests.rs index c8131b4935..6154d5b593 100644 --- a/crates/aprender-contracts/src/lint/consistency_gate_tests.rs +++ b/crates/aprender-contracts/src/lint/consistency_gate_tests.rs @@ -17,6 +17,10 @@ fn corpus(consistent: bool) -> tempfile::TempDir { let dir = tempfile::tempdir().expect("tempdir"); for entry in std::fs::read_dir(fixture()).expect("fixture dir") { let entry = entry.expect("entry"); + // The ont4/ont4b/ont5 gate tests lint this fixture in place (#5446) and pv leaves a `.pv/` directory in it. + if !entry.file_type().expect("file type").is_file() { + continue; + } let mut text = std::fs::read_to_string(entry.path()).expect("fixture file"); if consistent && entry.file_name() == "a.yaml" { assert!(