Skip to content

Commit f152180

Browse files
committed
Raise a CompilationError for unknown rules
1 parent e08816f commit f152180

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

protovalidate/internal/rules.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
import celpy
2121
from celpy import celtypes
22-
from google.protobuf import any_pb2, descriptor, duration_pb2, message, message_factory, timestamp_pb2
22+
from google.protobuf import any_pb2, descriptor, duration_pb2, message, message_factory, timestamp_pb2, unknown_fields # type: ignore[attr-defined]
2323

2424
from buf.validate import validate_pb2
2525
from protovalidate.internal.cel_field_presence import InterpretedRunner, in_has
@@ -565,6 +565,9 @@ def __init__(
565565
self._required = field_level.required
566566
if type_case is not None:
567567
rules: message.Message = getattr(field_level, type_case)
568+
if len(unknown_fields.UnknownFieldSet(rules)) > 0:
569+
msg = f"unknown rules in {rules.DESCRIPTOR.full_name}"
570+
raise CompilationError(msg)
568571
# For each set field in the message, look for the private rule
569572
# extension.
570573
for list_field, _ in rules.ListFields():
@@ -1031,6 +1034,9 @@ def _new_scalar_field_rule(
10311034
check_field_type(field, 0, "google.protobuf.Any")
10321035
result = AnyRules(self._env, self._funcs, field, field_level)
10331036
return result
1037+
else:
1038+
msg = f"unknown rule type {type_case!r}"
1039+
raise CompilationError(msg)
10341040

10351041
def _new_field_rule(
10361042
self,

0 commit comments

Comments
 (0)