diff --git a/scripts/mbedtls_dev/test_generation.py b/scripts/mbedtls_dev/test_generation.py index 712c7996bf..b825df07b7 100644 --- a/scripts/mbedtls_dev/test_generation.py +++ b/scripts/mbedtls_dev/test_generation.py @@ -24,7 +24,7 @@ import os import posixpath import re -from abc import abstractmethod +from abc import ABCMeta, abstractmethod from typing import Callable, Dict, Iterable, List, Type, TypeVar from mbedtls_dev import build_tree @@ -33,7 +33,7 @@ from mbedtls_dev import test_case T = TypeVar('T') #pylint: disable=invalid-name -class BaseTarget: +class BaseTarget(metaclass=ABCMeta): """Base target for test case generation. Attributes: @@ -94,13 +94,12 @@ class BaseTarget: def generate_tests(cls): """Generate test cases for the target subclasses. - Classes will iterate over its subclasses, calling this method in each. - In abstract classes, no further changes are needed, as there is no + During generation, each class will iterate over any subclasses, calling + this method in each. + In abstract classes, no tests will be generated, as there is no function to generate tests for. - In classes which do implement a test function, this should be overrided - and a means to use `create_test_case()` should be added. In most cases - the subclasses can still be iterated over, as either the class will - have none, or it may continue. + In classes which do implement a test function, this should be overridden + and a means to use `create_test_case()` should be added. """ for subclass in sorted(cls.__subclasses__(), key=lambda c: c.__name__): yield from subclass.generate_tests() diff --git a/tests/scripts/generate_bignum_tests.py b/tests/scripts/generate_bignum_tests.py index 7a8ebd1d8a..3f556ce291 100755 --- a/tests/scripts/generate_bignum_tests.py +++ b/tests/scripts/generate_bignum_tests.py @@ -48,7 +48,7 @@ of BaseTarget in test_generation.py. import itertools import sys -from abc import abstractmethod +from abc import ABCMeta, abstractmethod from typing import Callable, Dict, Iterator, List, Optional, Tuple, TypeVar import scripts_path # pylint: disable=unused-import @@ -64,12 +64,12 @@ def quote_str(val): return "\"{}\"".format(val) -class BignumTarget(test_generation.BaseTarget): +class BignumTarget(test_generation.BaseTarget, metaclass=ABCMeta): """Target for bignum (mpi) test case generation.""" target_basename = 'test_suite_mpi.generated' -class BignumOperation(BignumTarget): +class BignumOperation(BignumTarget, metaclass=ABCMeta): """Common features for test cases covering binary bignum operations. This adds functionality common in binary operation tests. This includes @@ -118,7 +118,7 @@ class BignumOperation(BignumTarget): return super().description() @abstractmethod - def result(self) -> Optional[str]: + def result(self) -> str: """Get the result of the operation. This may be calculated during initialization and stored as `_result`, @@ -131,7 +131,7 @@ class BignumOperation(BignumTarget): """Generate a description of the argument val. This produces a simple description of the value, which are used in test - case naming, to avoid most generated cases only being numbered. + case naming, to add context to the test cases. """ if val == "": return "0 (null)"