mirror of https://github.com/zulip/zulip.git
tests: Extract USING_TYPE_STRUCTURE.
This commit is contained in:
parent
cc3d87b078
commit
22ead64d54
|
@ -17,9 +17,9 @@ exclude_lines =
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# Don't require coverage for abstract methods; they're never called.
|
# Don't require coverage for abstract methods; they're never called.
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
# Don't require coverage for the settings.LOG_API_EVENT_TYPES code paths
|
# Don't require coverage for the USING_TYPE_STRUCTURE code paths
|
||||||
# These are only run in a special testing mode, so will fail normal coverage.
|
# These are only run in a special testing mode, so will fail normal coverage.
|
||||||
if settings.LOG_API_EVENT_TYPES:
|
if USING_TYPE_STRUCTURE
|
||||||
# PEP 484 overloading syntax
|
# PEP 484 overloading syntax
|
||||||
^\s*\.\.\.
|
^\s*\.\.\.
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,8 @@ from zerver.lib.types import ProfileFieldData, Validator
|
||||||
FuncT = Callable[..., Any]
|
FuncT = Callable[..., Any]
|
||||||
TypeStructure = TypeVar("TypeStructure")
|
TypeStructure = TypeVar("TypeStructure")
|
||||||
|
|
||||||
|
USING_TYPE_STRUCTURE = settings.LOG_API_EVENT_TYPES
|
||||||
|
|
||||||
# The type_structure system is designed to support using the validators in
|
# The type_structure system is designed to support using the validators in
|
||||||
# test_events.py to create documentation for our event formats.
|
# test_events.py to create documentation for our event formats.
|
||||||
#
|
#
|
||||||
|
@ -48,7 +50,7 @@ TypeStructure = TypeVar("TypeStructure")
|
||||||
# parallel system.
|
# parallel system.
|
||||||
def set_type_structure(type_structure: TypeStructure) -> Callable[[FuncT], Any]:
|
def set_type_structure(type_structure: TypeStructure) -> Callable[[FuncT], Any]:
|
||||||
def _set_type_structure(func: FuncT) -> FuncT:
|
def _set_type_structure(func: FuncT) -> FuncT:
|
||||||
if settings.LOG_API_EVENT_TYPES:
|
if USING_TYPE_STRUCTURE:
|
||||||
func.type_structure = type_structure # type: ignore[attr-defined] # monkey-patching
|
func.type_structure = type_structure # type: ignore[attr-defined] # monkey-patching
|
||||||
return func
|
return func
|
||||||
return _set_type_structure
|
return _set_type_structure
|
||||||
|
@ -165,7 +167,7 @@ def check_color(var_name: str, val: object) -> Optional[str]:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def check_none_or(sub_validator: Validator) -> Validator:
|
def check_none_or(sub_validator: Validator) -> Validator:
|
||||||
if settings.LOG_API_EVENT_TYPES:
|
if USING_TYPE_STRUCTURE:
|
||||||
type_structure = 'none_or_' + sub_validator.type_structure # type: ignore[attr-defined] # monkey-patching
|
type_structure = 'none_or_' + sub_validator.type_structure # type: ignore[attr-defined] # monkey-patching
|
||||||
else:
|
else:
|
||||||
type_structure = None
|
type_structure = None
|
||||||
|
@ -179,7 +181,7 @@ def check_none_or(sub_validator: Validator) -> Validator:
|
||||||
return f
|
return f
|
||||||
|
|
||||||
def check_list(sub_validator: Optional[Validator], length: Optional[int]=None) -> Validator:
|
def check_list(sub_validator: Optional[Validator], length: Optional[int]=None) -> Validator:
|
||||||
if settings.LOG_API_EVENT_TYPES:
|
if USING_TYPE_STRUCTURE:
|
||||||
if sub_validator:
|
if sub_validator:
|
||||||
type_structure = [sub_validator.type_structure] # type: ignore[attr-defined] # monkey-patching
|
type_structure = [sub_validator.type_structure] # type: ignore[attr-defined] # monkey-patching
|
||||||
else:
|
else:
|
||||||
|
@ -227,7 +229,7 @@ def check_dict(required_keys: Iterable[Tuple[str, Validator]]=[],
|
||||||
error = sub_validator(vname, val[k])
|
error = sub_validator(vname, val[k])
|
||||||
if error:
|
if error:
|
||||||
return error
|
return error
|
||||||
if settings.LOG_API_EVENT_TYPES:
|
if USING_TYPE_STRUCTURE:
|
||||||
type_structure[k] = sub_validator.type_structure # type: ignore[attr-defined] # monkey-patching
|
type_structure[k] = sub_validator.type_structure # type: ignore[attr-defined] # monkey-patching
|
||||||
|
|
||||||
for k, sub_validator in optional_keys:
|
for k, sub_validator in optional_keys:
|
||||||
|
@ -236,7 +238,7 @@ def check_dict(required_keys: Iterable[Tuple[str, Validator]]=[],
|
||||||
error = sub_validator(vname, val[k])
|
error = sub_validator(vname, val[k])
|
||||||
if error:
|
if error:
|
||||||
return error
|
return error
|
||||||
if settings.LOG_API_EVENT_TYPES:
|
if USING_TYPE_STRUCTURE:
|
||||||
type_structure[k] = sub_validator.type_structure # type: ignore[attr-defined] # monkey-patching
|
type_structure[k] = sub_validator.type_structure # type: ignore[attr-defined] # monkey-patching
|
||||||
|
|
||||||
if value_validator:
|
if value_validator:
|
||||||
|
@ -245,7 +247,7 @@ def check_dict(required_keys: Iterable[Tuple[str, Validator]]=[],
|
||||||
error = value_validator(vname, val[key])
|
error = value_validator(vname, val[key])
|
||||||
if error:
|
if error:
|
||||||
return error
|
return error
|
||||||
if settings.LOG_API_EVENT_TYPES:
|
if USING_TYPE_STRUCTURE:
|
||||||
type_structure['any'] = value_validator.type_structure # type: ignore[attr-defined] # monkey-patching
|
type_structure['any'] = value_validator.type_structure # type: ignore[attr-defined] # monkey-patching
|
||||||
|
|
||||||
if _allow_only_listed_keys:
|
if _allow_only_listed_keys:
|
||||||
|
@ -272,7 +274,7 @@ def check_union(allowed_type_funcs: Iterable[Validator]) -> Validator:
|
||||||
types for this variable.
|
types for this variable.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if settings.LOG_API_EVENT_TYPES:
|
if USING_TYPE_STRUCTURE:
|
||||||
type_structure = f'any("{[x.type_structure for x in allowed_type_funcs]}")' # type: ignore[attr-defined] # monkey-patching
|
type_structure = f'any("{[x.type_structure for x in allowed_type_funcs]}")' # type: ignore[attr-defined] # monkey-patching
|
||||||
else:
|
else:
|
||||||
type_structure = None # type: ignore[assignment] # monkey-patching
|
type_structure = None # type: ignore[assignment] # monkey-patching
|
||||||
|
|
Loading…
Reference in New Issue