Skip to content

Commit c01d250

Browse files
test_driver.py: Add method to prefix test driver exposed identifiers
Signed-off-by: Ronald Cron <ronald.cron@arm.com>
1 parent 7fc8676 commit c01d250

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

scripts/mbedtls_framework/test_driver.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,15 @@ def get_identifiers_with_prefixes(self, prefixes: Set[str]):
153153
identifiers_with_prefixes.add(identifier)
154154
return identifiers_with_prefixes
155155

156+
def prefix_identifiers(self, identifiers_to_prefix: Set[str]):
157+
"""
158+
In all test driver files, prefix each identifier in `identifiers_to_prefix`
159+
with the test driver prefix: <DRIVER>_ for uppercase identifiers,
160+
and <driver>_ for lowercase ones.
161+
"""
162+
for f in iter_code_files(self.dst_dir):
163+
self.__prefix_identifiers_in_file(f, identifiers_to_prefix, self.driver)
164+
156165
@staticmethod
157166
def __rewrite_inclusions_in_file(file: Path, headers: Set[str],
158167
src_include_dir: str, driver: str,) -> None:
@@ -183,3 +192,28 @@ def repl(m: Match) -> str:
183192
new_text = include_line_re.sub(repl, text)
184193
if changed:
185194
file.write_text(new_text, encoding="utf-8")
195+
196+
@staticmethod
197+
def __prefix_identifiers_in_file(file: Path, identifiers: Set[str], \
198+
prefix: str) -> None:
199+
"""
200+
In `file`, prefix each identifier in `identifiers` with the uppercase
201+
form of `prefix` if the identifier is uppercase, or with the lowercase
202+
form of `prefix` otherwise.
203+
"""
204+
c_identifier_re = re.compile(r"\b[A-Za-z_][A-Za-z0-9_]*\b")
205+
text = file.read_text(encoding="utf-8")
206+
prefix_uppercased = prefix.upper()
207+
prefix_lowercased = prefix.lower()
208+
209+
def repl(m: Match) -> str:
210+
identifier = m.group(0)
211+
if identifier in identifiers:
212+
if identifier[0].isupper():
213+
return f"{prefix_uppercased}_{identifier}"
214+
else:
215+
return f"{prefix_lowercased}_{identifier}"
216+
return identifier
217+
218+
new_text = c_identifier_re.sub(repl, text)
219+
file.write_text(new_text, encoding="utf-8")

0 commit comments

Comments
 (0)