Merge pull request 'Customer Mission #4 — a second, different contract target' (#32) from feat/customer-mission-4-second-contract into main
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
"""Customer Mission #4 — a second, different contract target (no tender-special-logic).
|
||||
|
||||
Pins what Mission #4 guards: TWO structurally different contract sub-types (a public tender and a
|
||||
private OEM Lastenheft) run through the identical engine and produce DIFFERENT, non-overlapping deltas
|
||||
with no per-contract code. That is the evidence that the later Scope→Journey selector can treat any
|
||||
contract as a plain Required set — no tender-shaped special case baked in.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
def _run():
|
||||
root = os.path.join(os.path.dirname(__file__), "..")
|
||||
r = subprocess.run(
|
||||
[sys.executable, "reference_scenarios/mission_second_contract.py"],
|
||||
cwd=root, env={**os.environ, "PYTHONPATH": "."}, capture_output=True, text=True,
|
||||
)
|
||||
assert r.returncode == 0, r.stderr
|
||||
return r.stdout
|
||||
|
||||
|
||||
def test_runs_end_to_end():
|
||||
out = _run()
|
||||
assert "Customer Mission #4" in out
|
||||
assert "kein Contract-Spezialfall" in out
|
||||
|
||||
|
||||
def test_two_distinct_contract_types_one_engine():
|
||||
out = _run()
|
||||
assert "public tender" in out and "private OEM spec" in out
|
||||
assert "keinen Contract-spezifischen Codepfad" in out
|
||||
|
||||
|
||||
def test_contracts_produce_different_deltas():
|
||||
out = _run()
|
||||
# the two contracts must be genuinely different: their deltas do not overlap
|
||||
assert "**Beiden gemeinsam:** —" in out
|
||||
# each carries its own distinctive missing capabilities
|
||||
assert "penetration_test_evidence" in out # tender-only
|
||||
assert "functional_safety_evidence" in out # OEM-only
|
||||
|
||||
|
||||
def test_evidence_relevance_differs_between_contracts():
|
||||
out = _run()
|
||||
# TISAX is worth more against the automotive OEM spec than the generic tender
|
||||
assert "**TISAX** | hoch (4) | hoch (6) |" in out
|
||||
assert "Relevanz ist eine Funktion des Ziels" in out
|
||||
|
||||
|
||||
def test_no_real_company_names():
|
||||
out = _run().lower()
|
||||
for name in ["eto", "owis", "winterhalter"]:
|
||||
assert name not in out
|
||||
Reference in New Issue
Block a user