[ADD] титульный лист по бланку задания на практику

This commit is contained in:
Arseny
2026-09-02 03:29:54 +03:00
parent 6aed7f186d
commit fab9e19962
3 changed files with 217 additions and 2 deletions
+78
View File
@@ -231,3 +231,81 @@ def test_ptp_report_has_no_hardcoded_names() -> None:
source = inspect.getsource(ptp_report)
for forbidden in ("Посевин", "Коновалов", "Камалетдинов", "ИУ9-2"):
assert forbidden not in source
PTP_TASK_FM = (
"титульник: ptp-task\n"
"кафедра: Теоретическая информатика и компьютерные технологии\n"
"кафедра_индекс: ИУ9\n"
"студент: Булдаков А. С.\n"
"студент_полностью: Булдаков Арсений Сергеевич\n"
"группа: ИУ9-22Б\n"
"предприятие: МГТУ имени Н. Э. Баумана\n"
"команда: Система мониторинга радиоэфира\n"
"хранилище: https://monitor.yss.su/IU9/radio-serv\n"
"руководитель: Посевин Д. П.\n"
"дата_выдачи_день: 29\n"
"дата_выдачи_месяц: июня\n"
"дата_выдачи_год: 2026\n"
"пункт_1: Изучить принципы построения систем пеленгации.\n"
"пункт_2: Получить задание в составе команды:\n"
"пункт_10: Написать отчёт.\n"
)
def test_ptp_task_renders_items_in_numeric_order() -> None:
"""Пункт 10 идёт после пункта 2, а не между 1 и 2 как при сортировке строк."""
tex = render_fm(PTP_TASK_FM)
first = tex.index("Изучить принципы построения систем пеленгации.")
second = tex.index("Получить задание в составе команды:")
third = tex.index("Написать отчёт.")
assert first < second < third
def test_ptp_task_requires_items() -> None:
with pytest.raises(ValueError, match="пункт_1"):
render_fm("титульник: ptp-task\nстудент: Булдаков А. С.\n")
def test_ptp_task_has_blank_furniture() -> None:
tex = render_fm(PTP_TASK_FM)
for fragment in (
"УТВЕРЖДАЮ",
"Заведующий кафедрой",
"З\\,А\\\\,А\\,Н\\\\,Е",
"на прохождение учебной практики",
"Дата выдачи задания",
"Руководитель практики от кафедры",
):
assert fragment in tex
def test_ptp_task_student_line_carries_group() -> None:
tex = render_fm(PTP_TASK_FM)
assert "Булдаков Арсений Сергеевич, ИУ9-22Б" in tex
def test_ptp_task_team_line_follows_item_with_colon() -> None:
tex = render_fm(PTP_TASK_FM)
colon_item = tex.index("Получить задание в составе команды:")
team = tex.index("Система мониторинга радиоэфира (хранилище")
next_item = tex.index("Написать отчёт.")
assert colon_item < team < next_item
def test_ptp_task_has_no_emblem() -> None:
"""В бланке задания эмблемы нет."""
tex = render_fm(PTP_TASK_FM)
titlepage = tex[tex.index("\\begin{titlepage}") : tex.index("\\end{titlepage}")]
assert "emblem" not in titlepage
def test_ptp_task_has_no_hardcoded_assignment_text() -> None:
"""Пункты задания и имена приходят только из front matter."""
import inspect
from md2gost.latex.titlepages import ptp_task
source = inspect.getsource(ptp_task)
for forbidden in ("Web", "2D-игра", "GitFlic", "Javascript", "Посевин", "Коновалов"):
assert forbidden not in source