Files
Balsam_167/tests/ump_logger/run_init_test.py
Andrey f741741cf8 Сохранить русские комментарии и настройки проекта в UTF-8
Добавить пояснения к исходникам, заголовкам TI, настройкам CCS и существующим проверкам. Зафиксировать правила кодировки, обзор модулей и аудит комментариев.
2026-10-12 12:24:48 +03:00

67 lines
6.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Проверка ump_logger на модели пк. Комментарии и исходный текст в UTF-8.
# Продолжает текущий вызов, список или выражение: """Boot regression independent of the external shared protocol checkout.; порядок аргументов сохраняется.
"""Boot regression independent of the external shared protocol checkout.
Run with GCC in PATH: python tests/ump_logger/run_init_test.py
The negative control must fail without the boot initialization call.
"""
# Подключает модуль os для этой проверки или подготовки сборки.
import os
# Импортирует необходимые имена: from pathlib import Path.
from pathlib import Path
# Подключает модуль subprocess для этой проверки или подготовки сборки.
import subprocess
# Подключает модуль tempfile для этой проверки или подготовки сборки.
import tempfile
# Задаёт root по выражению справа; значение используется последующими операциями.
root = Path(__file__).resolve().parents[2]
# Задаёт source по выражению справа; значение используется последующими операциями.
source = root / 'tests/ump_logger/init_test.c'
# Задаёт compiler по выражению справа; значение используется последующими операциями.
compiler = os.environ.get('CC', 'gcc')
# Открывает управляемый ресурс tempfile.TemporaryDirectory(prefix='ump-init-') as directory с автоматическим освобождением.
with tempfile.TemporaryDirectory(prefix='ump-init-') as directory:
# Задаёт directory по выражению справа; значение используется последующими операциями.
directory = Path(directory)
# Читает исходный файл или образ для последующей проверки и разбора.
text = source.read_text(encoding="utf-8").replace(
# Продолжает текущий вызов, список или выражение: '../../Source/Internal/log_to_mem.c',; порядок аргументов сохраняется.
'../../Source/Internal/log_to_mem.c',
# Продолжает текущий вызов, список или выражение: (root / 'Source/Internal/log_to_mem.c').as_posix(),; порядок аргументов сохраняется.
(root / 'Source/Internal/log_to_mem.c').as_posix(),
# Продолжает текущий вызов, список или выражение: ); порядок аргументов сохраняется.
)
# Перебирает initialize in (False, True) в указанном порядке.
for initialize in (False, True):
# Задаёт case по выражению справа; значение используется последующими операциями.
case = directory / 'init_test.c'
# Сохраняет подготовленный файл в указанном формате для следующего шага.
case.write_text(text if initialize else text.replace('ump_log_init();', ';'), encoding="utf-8")
# Задаёт executable по выражению справа; значение используется последующими операциями.
executable = directory / 'init_test.exe'
# Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
subprocess.run([
# Продолжает текущий вызов, список или выражение: compiler, '-Wno-unknown-pragmas', '-Wno-int-to-pointer-cast',; порядок аргументов сохраняется.
compiler, '-Wno-unknown-pragmas', '-Wno-int-to-pointer-cast',
# Продолжает текущий вызов, список или выражение: '-I' + str(root / 'tests/ump_logger/stubs'),; порядок аргументов сохраняется.
'-I' + str(root / 'tests/ump_logger/stubs'),
# Продолжает текущий вызов, список или выражение: '-I' + str(root / 'Source/Internal/Include'),; порядок аргументов сохраняется.
'-I' + str(root / 'Source/Internal/Include'),
# Продолжает текущий вызов, список или выражение: str(case), '-o', str(executable),; порядок аргументов сохраняется.
str(case), '-o', str(executable),
# Задаёт ], check по выражению справа; значение используется последующими операциями.
], check=True)
# Запускает внешний компилятор, генератор или тест; ненулевой результат проверяется параметрами вызова.
result = subprocess.run([str(executable)])
# Проверяет условие if initialize перед выполнением следующего блока.
if initialize:
# Проверяет обязательное условие result.returncode == 0, f'Initialization failed: {result.returncode}'; нарушение делает тест неуспешным.
assert result.returncode == 0, f'Initialization failed: {result.returncode}'
# Обрабатывает альтернативу предыдущего условия.
else:
# Проверяет обязательное условие result.returncode != 0, 'Negative control unexpectedly passed'; нарушение делает тест неуспешным.
assert result.returncode != 0, 'Negative control unexpectedly passed'
# Продолжает текущий вызов, список или выражение: print(f'{"Initialized boot" if initialize else "Dirty RAM negative control"}: PASS'); порядок аргументов сохраняется.
print(f'{"Initialized boot" if initialize else "Dirty RAM negative control"}: PASS')