Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions crates/aprender-contracts-cli/src/bin/pv-sat/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion crates/aprender-contracts-cli/tests/ont4_relations_gate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> = v["gates"]
Expand Down
3 changes: 2 additions & 1 deletion crates/aprender-contracts-cli/tests/ont4b_shapes_gate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> = v["gates"]
.as_array()
Expand Down
5 changes: 5 additions & 0 deletions crates/aprender-contracts-cli/tests/ont5_consistency_gate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions crates/aprender-contracts/src/lint/consistency_gate_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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!(
Expand Down