Move the type_word->name_set mapping into its own method

No behavior change.
This commit is contained in:
Gilles Peskine 2019-11-21 17:17:01 +01:00
parent 4408dfd0fc
commit ffe2d6e71b

View file

@ -100,6 +100,17 @@ class Inputs:
'tag_length': ['1', '63'],
}
def get_names(self, type_word):
"""Return the set of known names of values of the given type."""
return {
'status': self.statuses,
'algorithm': self.algorithms,
'ecc_curve': self.ecc_curves,
'dh_group': self.dh_groups,
'key_type': self.key_types,
'key_usage': self.key_usage_flags,
}[type_word]
def gather_arguments(self):
"""Populate the list of values for macro arguments.
@ -313,7 +324,7 @@ def normalize(expr):
"""
return re.sub(NORMALIZE_STRIP_RE, '', expr)
def do_test(options, inputs, type_word, names):
def do_test(options, inputs, type_word):
"""Test psa_constant_names for the specified type.
Run program on names.
@ -324,6 +335,7 @@ def do_test(options, inputs, type_word, names):
that have been tested and ``errors`` is the list of errors that were
encountered.
"""
names = inputs.get_names(type_word)
expressions = sorted(inputs.generate_expressions(names))
values = run_c(options, type_word, expressions)
output = subprocess.check_output([options.program, type_word] + values)
@ -348,13 +360,9 @@ def run_tests(options, inputs):
"""
count = 0
errors = []
for type_word, names in [('status', inputs.statuses),
('algorithm', inputs.algorithms),
('ecc_curve', inputs.ecc_curves),
('dh_group', inputs.dh_groups),
('key_type', inputs.key_types),
('key_usage', inputs.key_usage_flags)]:
c, e = do_test(options, inputs, type_word, names)
for type_word in ['status', 'algorithm', 'ecc_curve', 'dh_group',
'key_type', 'key_usage']:
c, e = do_test(options, inputs, type_word)
count += c
errors += e
return count, errors