-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest_runtime_executor_by_kind.py
More file actions
62 lines (43 loc) · 2.26 KB
/
test_runtime_executor_by_kind.py
File metadata and controls
62 lines (43 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from __future__ import annotations
import copy
from pathlib import Path
import pytest
from Implementations.Reference.Runtime.contract_executor import (
ContractExecutionError,
execute_acceptance,
load_json,
)
ROOT = Path(__file__).resolve().parents[4]
def test_runtime_execution_uses_contract_unit_kind_not_example_id_for_examples0104() -> None:
acceptance = load_json(
ROOT / "Implementations" / "Reference" / "Runtime" / "acceptance" / "example01_pure_addition.acceptance.json"
)
contract = load_json(ROOT / acceptance["artifact_refs"]["contract_path"])
mutated = copy.deepcopy(contract)
mutated["example_id"] = "intentionally_wrong_example_id"
observed = execute_acceptance(acceptance, mutated)
assert observed["status"] == "ok"
assert observed["example_id"] == "intentionally_wrong_example_id"
assert observed["public_outputs"] == {"result": 6.0}
def test_runtime_execution_rejects_unsupported_contract_unit_kind() -> None:
acceptance = load_json(
ROOT / "Implementations" / "Reference" / "Runtime" / "acceptance" / "example01_pure_addition.acceptance.json"
)
contract = load_json(ROOT / acceptance["artifact_refs"]["contract_path"])
mutated = copy.deepcopy(contract)
mutated["units"][0]["kind"] = "unsupported_contract_unit_kind"
with pytest.raises(ContractExecutionError, match="unsupported contract unit kind"):
execute_acceptance(acceptance, mutated)
def test_runtime_execution_uses_contract_unit_kind_not_example_id_for_example05() -> None:
acceptance = load_json(
ROOT / "Implementations" / "Reference" / "Runtime" / "acceptance" / "example05_runtime_family.acceptance.json"
)
contract = load_json(ROOT / acceptance["artifact_refs"]["contract_path"])
wfrog = load_json(ROOT / acceptance["artifact_refs"]["wfrog_path"])
mutated = copy.deepcopy(contract)
mutated["example_id"] = "intentionally_wrong_example_id"
mutated["source_ref"]["example_id"] = "intentionally_wrong_example_id"
observed = execute_acceptance(acceptance, mutated, {"wfrog": wfrog})
assert observed["status"] == "ok"
assert observed["outputs"]["public"] == {"result": 15}
assert observed["contract_ref"]["source_ref"]["example_id"] == "intentionally_wrong_example_id"