Improve depends.py readability
Switch from SHA224 & SHA384 testing to SHA256 and SHA512.
Signed-off-by: Andrzej Kurek <andrzej.kurek@arm.com>
diff --git a/tests/scripts/depends.py b/tests/scripts/depends.py
index a2c939a..48e2f2b 100755
--- a/tests/scripts/depends.py
+++ b/tests/scripts/depends.py
@@ -143,8 +143,7 @@
"""Change the library configuration file (mbedtls_config.h) to the reference state.
The reference state is the one from which the tested configurations are
derived."""
- # Turn off memory management options that are not relevant to
- # the tests and slow them down.
+ # Turn off options that are not relevant to the tests and slow them down.
run_config_pl(options, ['full'])
run_config_pl(options, ['unset', 'MBEDTLS_MEMORY_BACKTRACE'])
run_config_pl(options, ['unset', 'MBEDTLS_MEMORY_BUFFER_ALLOC_C'])
@@ -190,8 +189,7 @@
log_line('starting ' + self.name)
def configure(self, options):
- '''Set library configuration options as required for the job.
-config_file_name indicates which file to modify.'''
+ '''Set library configuration options as required for the job.'''
set_reference_config(options)
for key, value in sorted(self.config_settings.items()):
if value is True:
@@ -277,7 +275,7 @@
# These are not necessarily dependencies, but just minimal required changes
# if a given define is the only one enabled from an exclusive group.
EXCLUSIVE_GROUPS = {
- 'MBEDTLS_SHA224_C': ['MBEDTLS_SHA256_C'],
+ 'MBEDTLS_SHA256_C': ['MBEDTLS_SHA224_C'],
'MBEDTLS_SHA384_C': ['MBEDTLS_SHA512_C'],
'MBEDTLS_SHA512_C': ['!MBEDTLS_SSL_COOKIE_C'],
'MBEDTLS_ECP_DP_CURVE448_ENABLED': ['!MBEDTLS_ECDSA_C',
@@ -351,7 +349,9 @@
class ComplementaryDomain(BaseDomain): # pylint: disable=too-few-public-methods
"""A domain consisting of a set of loosely-related settings.
Establish a list of configuration symbols. For each symbol, run a test job
-with this symbol unset."""
+with this symbol unset.
+If exclude is a regular expression, skip generated jobs whose description
+would match this regular expression."""
def __init__(self, symbols, commands, exclude=None):
"""Build a domain for the specified list of configuration symbols.
Each job in the domain disables one of the specified symbols.
@@ -367,9 +367,12 @@
self.jobs.append(job)
class DualDomain(ExclusiveDomain, ComplementaryDomain): # pylint: disable=too-few-public-methods
- """A domain that contains both the ExclusiveDomain and BaseDomain tests"""
+ """A domain that contains both the ExclusiveDomain and BaseDomain tests.
+Both parent class __init__ calls are performed in any order and
+each call adds respective jobs. The job array initialization is done once in
+BaseDomain, before the parent __init__ calls."""
def __init__(self, symbols, commands, exclude=None):
- super().__init__(symbols=symbols, commands=commands, exclude=exclude)
+ super().__init__(symbols, commands, exclude)
class CipherInfo: # pylint: disable=too-few-public-methods
"""Collect data about cipher.h."""
@@ -402,7 +405,6 @@
# Find cipher IDs (block permutations and stream ciphers --- chaining
# and padding modes are exercised separately) information by parsing
# cipher.h, as the information is not readily available in mbedtls_config.h.
-
cipher_info = CipherInfo()
# Find block cipher chaining and padding mode enabling macros by name.
cipher_chaining_symbols = self.config_symbols_matching(r'MBEDTLS_CIPHER_MODE_\w+\Z')
@@ -417,12 +419,15 @@
build_and_test),
# Elliptic curves. Run the test suites.
'curves': ExclusiveDomain(curve_symbols, build_and_test),
- # Hash algorithms. Exclude configurations with only one
- # hash which is obsolete. Run the test suites. Exclude
- # SHA512 and SHA256, as these are tested with SHA384 and SHA224.
+ # Hash algorithms. Exclude three groups:
+ # - Exclusive domain of MD, RIPEMD, SHA1 (obsolete);
+ # - Exclusive domain of SHA224 (tested with and depends on SHA256);
+ # - Complementary domain of SHA224 and SHA384 - tested with and depend
+ # on SHA256 and SHA512, respectively.
'hashes': DualDomain(hash_symbols, build_and_test,
- exclude=r'MBEDTLS_(MD|RIPEMD|SHA1_|SHA256_|SHA512_)' \
- '|!MBEDTLS_(SHA256_|SHA512_)'),
+ exclude=r'MBEDTLS_(MD|RIPEMD|SHA1_)' \
+ '|MBEDTLS_SHA224_'\
+ '|!MBEDTLS_(SHA224_|SHA384_)'),
# Key exchange types. Only build the library and the sample
# programs.
'kex': ExclusiveDomain(key_exchange_symbols,