|
| 1 | +import re |
| 2 | +import types |
| 3 | + |
1 | 4 | from copilot.generated import rpc |
2 | 5 |
|
3 | 6 |
|
4 | | -def test_python_codegen_does_not_export_quicktype_synthetic_permission_approval_name(): |
5 | | - assert not hasattr(rpc, "PermissionDecisionApproveForIonApproval") |
6 | | - assert "PermissionDecisionApproveForIonApproval" not in rpc.__all__ |
| 7 | +def test_permission_approval_exports_are_union_aliases(): |
| 8 | + approval_exports = [ |
| 9 | + name |
| 10 | + for name in rpc.__all__ |
| 11 | + if re.fullmatch(r"PermissionDecisionApproveFor.*Approval", name) |
| 12 | + ] |
| 13 | + assert approval_exports |
| 14 | + |
| 15 | + for name in approval_exports: |
| 16 | + exported = getattr(rpc, name) |
| 17 | + assert isinstance(exported, types.UnionType), ( |
| 18 | + f"{name} must be a union alias, not a synthetic dataclass" |
| 19 | + ) |
| 20 | + |
| 21 | + |
| 22 | +def test_permission_approval_union_loaders_deserialize_expected_variants(): |
| 23 | + session = rpc._load_PermissionDecisionApproveForSessionApproval( |
| 24 | + {"kind": "commands", "commandIdentifiers": ["git status"]} |
| 25 | + ) |
| 26 | + location = rpc._load_PermissionDecisionApproveForLocationApproval({"kind": "read"}) |
7 | 27 |
|
8 | | - assert hasattr(rpc, "PermissionDecisionApproveForSessionApproval") |
9 | | - assert hasattr(rpc, "PermissionDecisionApproveForLocationApproval") |
10 | | - assert "PermissionDecisionApproveForSessionApproval" in rpc.__all__ |
11 | | - assert "PermissionDecisionApproveForLocationApproval" in rpc.__all__ |
| 28 | + assert isinstance(session, rpc.PermissionDecisionApproveForSessionApprovalCommands) |
| 29 | + assert isinstance(location, rpc.PermissionDecisionApproveForLocationApprovalRead) |
0 commit comments