diff --git a/tests/test_kin_docs_009_regression.py b/tests/test_kin_docs_009_regression.py new file mode 100644 index 0000000..aff6a33 --- /dev/null +++ b/tests/test_kin_docs_009_regression.py @@ -0,0 +1,56 @@ +"""Regression tests for KIN-DOCS-009 — Удалить дублирующий тест-метод в TestNoLegacyOutputFormatSection. + +Acceptance criteria: +1. TestNoLegacyOutputFormatSection содержит ровно один метод проверки отсутствия '## Output format' +2. Единственный метод называется test_no_prompt_contains_old_output_format_header +3. Удалённый дубль test_grep_output_format_is_empty отсутствует в классе +""" + +import inspect + +import pytest + +import tests.test_kin_docs_002_regression as target_module +from tests.test_kin_docs_002_regression import TestNoLegacyOutputFormatSection + + +def _get_test_methods(cls): + """Возвращает список имён методов, начинающихся с 'test_'.""" + return [ + name + for name, _ in inspect.getmembers(cls, predicate=inspect.isfunction) + if name.startswith("test_") + ] + + +class TestKinDocs009Regression: + """Верифицирует удаление дублирующего метода из TestNoLegacyOutputFormatSection.""" + + def test_class_has_exactly_one_test_method(self): + """TestNoLegacyOutputFormatSection содержит ровно один test_-метод.""" + methods = _get_test_methods(TestNoLegacyOutputFormatSection) + assert len(methods) == 1, ( + f"Ожидался 1 метод, найдено {len(methods)}: {methods}" + ) + + def test_canonical_method_exists(self): + """Метод test_no_prompt_contains_old_output_format_header существует в классе.""" + assert hasattr(TestNoLegacyOutputFormatSection, "test_no_prompt_contains_old_output_format_header"), ( + "Канонический метод test_no_prompt_contains_old_output_format_header отсутствует в классе" + ) + + def test_duplicate_method_is_removed(self): + """Удалённый дубль test_grep_output_format_is_empty отсутствует в классе.""" + assert not hasattr(TestNoLegacyOutputFormatSection, "test_grep_output_format_is_empty"), ( + "Дублирующий метод test_grep_output_format_is_empty всё ещё присутствует в классе" + ) + + def test_no_other_output_format_checking_methods(self): + """В классе нет скрытых методов, проверяющих '## Output format' по иному имени.""" + methods = _get_test_methods(TestNoLegacyOutputFormatSection) + # Единственный разрешённый метод + allowed = {"test_no_prompt_contains_old_output_format_header"} + unexpected = set(methods) - allowed + assert not unexpected, ( + f"Найдены неожиданные методы в TestNoLegacyOutputFormatSection: {unexpected}" + )