zapretgui/tests/test_winws_missing_lua_function.py
loop-uh e58cdd1db0
All checks were successful
Zapret source guards / validate (push) Successful in 7s
Windows-сборка / Dev Dev 21.1.6.17 опубликован
Ошибка запуска про несуществующую Lua-функцию подсказывает, какую функцию вы имели в виду; длинный текст в строке статуса пресета больше не обрезается
- «desync function 'X' does not exist»: опечатка — «Возможно, имелось в виду
  hostfakesplit» и что исправить; функция из неподключённого lua-файла —
  какую строку --lua-init добавить. Совет переустановить программу остался
  только для случая, когда нужная строка уже есть.
- Похожее имя ищет одна функция справочника closest_lua_function_names —
  её же использует проверка в редакторе пресета.
- Строка статуса пресета переносит длинные сообщения на следующие строки,
  подсказка по строке курсора тоже показывается целиком.
2026-09-28 19:10:33 +03:00

40 lines
1.8 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.

"""Ошибка запуска «desync function 'X' does not exist» объясняется по делу.
Отсутствующий на диске lua-файл winws2 сообщает раньше другим текстом, поэтому
здесь причина — опечатка в имени функции (с подсказкой похожего имени) или
функция из lua-файла, который пресет не подключил. Совет «переустановите
программу» для опечатки вводил в заблуждение.
"""
from __future__ import annotations
import unittest
from winws_runtime.health.winws_exit_diagnosis import diagnose_winws_exit
def _diagnose(name: str):
return diagnose_winws_exit(87, f"github version v1.0.3\ndesync function '{name}' does not exist\n")
class MissingLuaFunctionDiagnosisTests(unittest.TestCase):
def test_typo_suggests_the_intended_function(self) -> None:
diagnosis = _diagnose("hostfakespli")
self.assertIn("опечатка", diagnosis.cause)
self.assertIn("«hostfakesplit»", diagnosis.cause)
self.assertIn("«hostfakesplit»", diagnosis.solution)
self.assertNotIn("Переустановите", diagnosis.solution)
def test_function_from_unloaded_file_names_the_lua_init_line(self) -> None:
diagnosis = _diagnose("rst_flood")
self.assertIn("lua/zapret-rst-flood.lua", diagnosis.cause)
self.assertIn("--lua-init=@lua/zapret-rst-flood.lua", diagnosis.solution)
def test_unknown_name_without_close_match(self) -> None:
diagnosis = _diagnose("zzzqqq")
self.assertIn("нет ни в одном lua-файле", diagnosis.cause)
self.assertIn("--lua-desync", diagnosis.solution)
if __name__ == "__main__":
unittest.main()