Prepare psa_test_cases to mix manual and automatic dependencies

No change to the generated files.

Signed-off-by: Gilles Peskine <[email protected]>
This commit is contained in:
Gilles Peskine
2024-12-11 11:13:05 +01:00
parent 5f0d6551b4
commit a3d2eaffcc
3 changed files with 35 additions and 3 deletions
@@ -12,6 +12,7 @@ from typing import Callable, Dict, Iterator, List, Optional #pylint: disable=unu
from . import crypto_knowledge
from . import psa_information
from . import psa_test_case
from . import test_case
@@ -69,7 +70,7 @@ class HashPSALowLevel:
function: str, note: str,
arguments: List[str]) -> test_case.TestCase:
"""Construct one test case involving a hash."""
tc = test_case.TestCase()
tc = psa_test_case.TestCase()
tc.set_description('{}{} {}'
.format(function,
' ' + note if note else '',
@@ -5,6 +5,8 @@
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
#
from typing import List, Set
from . import test_case
@@ -18,3 +20,28 @@ class TestCase(test_case.TestCase):
def __init__(self) -> None:
super().__init__()
del self.dependencies
self.manual_dependencies = [] #type: List[str]
self.automatic_dependencies = set() #type: Set[str]
@staticmethod
def infer_dependencies(_arguments: List[str]) -> List[str]:
"""Infer dependencies based on the test case arguments."""
return [] # not implemented yet
def set_arguments(self, arguments: List[str]) -> None:
"""Set test case arguments and automatically infer dependencies."""
super().set_arguments(arguments)
self.automatic_dependencies.update(self.infer_dependencies(arguments))
def set_dependencies(self, dependencies: List[str]) -> None:
"""Override any previously added automatic or manual dependencies."""
self.manual_dependencies = dependencies
self.automatic_dependencies.clear()
def add_dependencies(self, dependencies: List[str]) -> None:
"""Add manual dependencies."""
self.manual_dependencies += dependencies
def get_dependencies(self) -> List[str]:
return sorted(self.automatic_dependencies) + self.manual_dependencies
+6 -2
View File
@@ -65,6 +65,9 @@ class TestCase:
def set_description(self, description: str) -> None:
self.description = description
def get_dependencies(self) -> List[str]:
return self.dependencies
def set_dependencies(self, dependencies: List[str]) -> None:
self.dependencies = dependencies
@@ -117,9 +120,10 @@ class TestCase:
for reason in self.skip_reasons:
out.write('## # skipped because: ' + reason + '\n')
out.write(prefix + self.description + '\n')
if self.dependencies:
dependencies = self.get_dependencies()
if dependencies:
out.write(prefix + 'depends_on:' +
':'.join(self.dependencies) + '\n')
':'.join(dependencies) + '\n')
out.write(prefix + self.function + ':' +
':'.join(self.arguments) + '\n')