kvs/тесты/длин_тест/длин_тест.py

76 lines
2.6 KiB
Python
Raw Permalink 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.

#!/usr/bin/env python3
import subprocess
import sys
import os
# Пути относительно папки длин_тест/
PROJECT_ROOT = "../../"
SOURCE_REL = "тесты/длин_тест/длин_тест.квс"
def clean():
"""Удалить временные файлы после теста"""
files = [
"длин_тест.elf",
"длин_тест.csv",
"длин_тест.аст",
"длин_тест.токены",
"длин_тест.константа",
"длин_тест_pass4.log"
]
for f in files:
if os.path.exists(f):
os.remove(f)
def main():
print("DEBUG: Начало теста длин_тест", file=sys.stderr)
os.chdir(PROJECT_ROOT)
print(f"DEBUG: Рабочая папка = {os.getcwd()}", file=sys.stderr)
# 1. Сборка
print("DEBUG: Сборка длин_тест.квс", file=sys.stderr)
build = subprocess.run(["python3", "квс_сборка.py", SOURCE_REL],
capture_output=True, text=True)
if build.returncode != 0:
print(f"❌ Ошибка сборки: {build.returncode}", file=sys.stderr)
print(f"STDERR: {build.stderr}", file=sys.stderr)
clean()
sys.exit(1)
print("DEBUG: Сборка успешна", file=sys.stderr)
os.chdir("тесты/длин_тест")
if not os.path.exists("длин_тест.elf"):
print("❌ Файл длин_тест.elf не создан", file=sys.stderr)
clean()
sys.exit(1)
print("DEBUG: Запуск ELF", file=sys.stderr)
run = subprocess.run(["./длин_тест.elf"], capture_output=True, text=True)
print(f"DEBUG: Код возврата = {run.returncode}", file=sys.stderr)
print(f"DEBUG: stdout = {repr(run.stdout)}", file=sys.stderr)
# Ожидаемый вывод (с \x00, как в сложном_тесте)
expected_output = "Живой из 3!Успех!\n"
if run.stdout != expected_output:
print(f"❌ Вывод не совпадает", file=sys.stderr)
print(f" Ожидалось: {repr(expected_output)}", file=sys.stderr)
print(f" Получено: {repr(run.stdout)}", file=sys.stderr)
clean()
sys.exit(1)
if run.returncode != 0:
print(f"❌ Код возврата: ожидался 0, получен {run.returncode}", file=sys.stderr)
clean()
sys.exit(1)
print("", file=sys.stderr)
clean()
sys.exit(0)
if __name__ == "__main__":
main()