Ctrl K
ComunidadGuías…

tests/test_tests_actually_run.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""測試檔要真的跑得起來,不能安靜地什麼都不做。

VPS 上沒有 pytest,測試是用 `python3 tests/test_x.py` 一支一支跑的。
少了 `if __name__ == "__main__": unittest.main()` 的檔案,這樣執行會
**什麼都不做然後回傳 0**——在逐檔迴圈裡看起來跟通過一模一樣。

2026-09-02 抓到的第一個:tests/test_xkb_memory_service.py 的 32 個測試
在 VPS 上從來沒有跑過,而部署後的驗收一直是綠的。
"""
from __future__ import annotations

import re
import unittest
from pathlib import Path

TESTS = Path(__file__).resolve().parent

_MAIN = re.compile(r"^if __name__ == .__main__.:", re.M)


class TestsActuallyRunTest(unittest.TestCase):
    def test_every_test_file_runs_when_executed_directly(self) -> None:
        offenders = [
            path.name
            for path in sorted(TESTS.glob("test_*.py"))
            if not _MAIN.search(path.read_text(encoding="utf-8"))
        ]
        self.assertEqual(
            offenders, [],
            "加上 if __name__ == \"__main__\": unittest.main();"
            "否則在沒有 pytest 的機器上,這個檔案會安靜地回傳 0",
        )


if __name__ == "__main__":
    unittest.main()