| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | import loggingimport pathlibimport unittest.mockimport pytest# pylint: disable=import-private-name; testsfrom location_guessing_game_telegram_bot import _main@pytest.mark.parametrize(    ("args", "env", "telegram_token_path", "wikimap_export_path"),    (        (            [                "--telegram-token-path",                "/telegram/token.txt",                "--wikimap-export-path",                "/wikimap/export.json",            ],            {},            "/telegram/token.txt",            "/wikimap/export.json",        ),        (            [                "--telegram-token-path",                "/telegram/token.txt",                "--wikimap-export-path",                "/wikimap/export.json",            ],            {                "TELEGRAM_TOKEN_PATH": "overruled.txt",                "WIKIMAP_EXPORT_PATH": "/ineffective.json",            },            "/telegram/token.txt",            "/wikimap/export.json",        ),        (            ["--wikimap-export-path", "/wikimap/export.json"],            {                "TELEGRAM_TOKEN_PATH": "/telegram/token-via-env.txt",                "WIKIMAP_EXPORT_PATH": "/ineffective.json",            },            "/telegram/token-via-env.txt",            "/wikimap/export.json",        ),        (            [],            {                "TELEGRAM_TOKEN_PATH": "/telegram/token-via-env.txt",                "WIKIMAP_EXPORT_PATH": "/export.json",            },            "/telegram/token-via-env.txt",            "/export.json",        ),    ),)def test__main(args, env, telegram_token_path, wikimap_export_path):    with unittest.mock.patch(        "location_guessing_game_telegram_bot._run"    ) as run_mock, unittest.mock.patch(        "sys.argv", [""] + args    ), unittest.mock.patch.dict(        "os.environ", env    ):        _main()    run_mock.assert_called_once_with(        telegram_token_path=pathlib.Path(telegram_token_path),        wikimap_export_path=pathlib.Path(wikimap_export_path),    )@pytest.mark.parametrize(    ("args", "root_log_level", "log_format"),    (        ([], logging.INFO, "%(message)s"),        (            ["--debug"],            logging.DEBUG,            "%(asctime)s:%(levelname)s:%(name)s:%(funcName)s:%(message)s",        ),    ),)def test_logging_config(args, root_log_level, log_format):    with unittest.mock.patch(        "location_guessing_game_telegram_bot._run"    ) as run_mock, unittest.mock.patch(        "sys.argv",        ["", "--telegram-token-path", "/t", "--wikimap-export-path", "/w"] + args,    ), unittest.mock.patch(        "logging.basicConfig"    ) as logging_basic_config_mock:        _main()    run_mock.assert_called_once_with(        telegram_token_path=pathlib.Path("/t"), wikimap_export_path=pathlib.Path("/w")    )    logging_basic_config_mock.assert_called_once()    assert logging_basic_config_mock.call_args[1]["level"] == root_log_level    assert logging_basic_config_mock.call_args[1]["format"] == log_format
 |