#![allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
mod support;
use std::path::{Path, PathBuf};
use support::{assert_gate_refuses, assert_idempotent, read, scaffold_pack};
fn packs_dir() -> PathBuf {
Path::new(env!("CARGO_MANIFEST_DIR")).join("../../packs")
}
#[test]
fn process_mining_proof_pack_generates_and_is_idempotent() {
let (_dir, project) = scaffold_pack(&packs_dir().join("process-mining-proof-pack"));
ggen_engine::sync::sync(
&project,
ggen_engine::sync::SyncOptions {
consumer_mode: Default::default(),
dry_run: false,
..Default::default()
},
)
.expect("sync");
let test_py = read(
&project,
"tests/fortune5_k8s_planner_powl_ocel_proof_test.py",
);
assert!(
test_py.contains("PLANNER = \"autofde_lab.utils.load_registered_solver('Astar')\""),
"generated test must echo the real declared planner:\n{test_py}"
);
assert!(
test_py.contains(
"OCEL_REPLAY_ENGINE = \"autofde_lab.ocel.powl_replay.replay_structural_fires\""
),
"generated test must echo the real declared OCEL replay engine:\n{test_py}"
);
assert!(
test_py.contains(
"CONFORMANCE_CHECKER = \"autofde_lab.powl.conformance.check_ocel_conformance\""
),
"generated test must echo the real declared conformance checker:\n{test_py}"
);
assert!(
test_py.contains("def test_every_declared_stage_function_resolves_to_a_real_callable"),
"generated test must define the real, importable-and-callable proof:\n{test_py}"
);
let doc = read(&project, "docs/process-mining-proof/pipelines.md");
assert!(
doc.contains("fortune5_k8s_planner_powl_ocel"),
"reference doc must list the real worked pipeline:\n{doc}"
);
assert!(
doc.contains("autofde_lab.ocel.powl_replay.plan_lines_to_powl_node"),
"reference doc must cite the real POWL projector by name:\n{doc}"
);
assert_idempotent(&project);
}
#[test]
fn process_mining_proof_pack_gate_refuses_incomplete_pipeline() {
let (_dir, project) = scaffold_pack(&packs_dir().join("process-mining-proof-pack"));
ggen_engine::sync::sync(
&project,
ggen_engine::sync::SyncOptions {
consumer_mode: Default::default(),
dry_run: false,
..Default::default()
},
)
.expect("baseline sync");
assert_gate_refuses(
&project,
"@prefix pmp: <http://seanchatmangpt.github.io/packs/process-mining-proof#> .\n\
pmp:sabotage-incomplete-pipeline a pmp:ProofPipeline ;\n\
\x20\x20\x20\x20pmp:pipelineName \"sabotage\" ;\n\
\x20\x20\x20\x20pmp:planner \"some.planner\" ;\n\
\x20\x20\x20\x20pmp:domain \"some/domain\" .\n",
"010_pipeline_grounded_or_refused",
);
}