gh-106368: Improve coverage reports for argument clinic (#107693)

This commit is contained in:
Alex Waygood 2023-08-06 20:40:55 +01:00 committed by GitHub
parent 9564e31cbc
commit ee3bf45e5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 6 deletions

View File

@ -7,6 +7,11 @@ exclude_lines =
# Don't complain if non-runnable code isn't run:
if 0:
if __name__ == .__main__.:
raise AssertionError\(
# Empty bodies in protocols or abstract methods
^\s*def [a-zA-Z0-9_]+\(.*\)(\s*->.*)?:\s*\.\.\.(\s*#.*)?$
^\s*\.\.\.(\s*#.*)?$
.*# pragma: no cover
.*# pragma: no branch

View File

@ -469,7 +469,7 @@ class Language(metaclass=abc.ABCMeta):
checksum_line = ""
def __init__(self, filename: str) -> None:
pass
...
@abc.abstractmethod
def render(
@ -477,10 +477,10 @@ class Language(metaclass=abc.ABCMeta):
clinic: Clinic | None,
signatures: Iterable[Module | Class | Function]
) -> str:
pass
...
def parse_line(self, line: str) -> None:
pass
...
def validate(self) -> None:
def assert_only_one(
@ -2862,6 +2862,9 @@ class CConverter(metaclass=CConverterAutoRegister):
f"Note: accessing self.function inside converter_init is disallowed!"
)
return super().__getattr__(attr)
# this branch is just here for coverage reporting
else: # pragma: no cover
pass
def converter_init(self) -> None:
pass
@ -3990,7 +3993,7 @@ def correct_name_for_self(
return "void *", "null"
if f.kind in (CLASS_METHOD, METHOD_NEW):
return "PyTypeObject *", "type"
raise RuntimeError("Unhandled type of function f: " + repr(f.kind))
raise AssertionError(f"Unhandled type of function f: {f.kind!r}")
def required_type_for_self_for_parser(
f: Function

View File

@ -178,11 +178,17 @@ class Monitor:
if self.verbose:
print(self.status())
if __name__ == '__main__':
for filename in sys.argv[1:]:
def _main(filenames: list[str] | None = None) -> None:
filenames = filenames or sys.argv[1:]
for filename in filenames:
with open(filename) as f:
cpp = Monitor(filename, verbose=True)
print()
print(filename)
for line_number, line in enumerate(f.read().split('\n'), 1):
cpp.writeline(line)
if __name__ == '__main__':
_main()