Files
syn-chat-bot/.venv/lib/python3.9/site-packages/icalendar/tests/test_with_doctest.py
Hyungi Ahn c2257d3a86 fix: 포트 충돌 회피 — note_bridge 8098, intent_service 8099
Jellyfin(8096), OrbStack(8097) 포트 충돌으로 변경.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 13:53:55 +09:00

107 lines
3.0 KiB
Python

"""This file tests the source code provided by the documentation.
See
- doctest documentation: https://docs.python.org/3/library/doctest.html
- Issue 443: https://github.com/collective/icalendar/issues/443
This file should be tests, too:
>>> print("Hello World!")
Hello World!
"""
import doctest
import importlib
import os
import sys
import pytest
HERE = os.path.dirname(__file__) or "."
ICALENDAR_PATH = os.path.dirname(HERE)
PYTHON_FILES = [
"/".join((dirpath, filename))
for dirpath, dirnames, filenames in os.walk(ICALENDAR_PATH)
for filename in filenames
if filename.lower().endswith(".py") and "fuzzing" not in dirpath
]
MODULE_NAMES = [
"icalendar"
+ python_file[len(ICALENDAR_PATH) : -3].replace("\\", "/").replace("/", ".")
for python_file in PYTHON_FILES
]
def test_this_module_is_among_them():
assert __name__ in MODULE_NAMES
@pytest.mark.parametrize("module_name", MODULE_NAMES)
def test_docstring_of_python_file(module_name, env_for_doctest):
"""This test runs doctest on the Python module."""
try:
module = importlib.import_module(module_name)
except ModuleNotFoundError as e:
if e.name == "pytz":
pytest.skip("pytz is not installed, skipping this module.")
raise
test_result = doctest.testmod(module, name=module_name, globs=env_for_doctest)
assert test_result.failed == 0, f"{test_result.failed} errors in {module_name}"
# This collection needs to exclude .tox and other subdirectories
DOCUMENTATION_PATH = os.path.join(HERE, "../../../")
try:
DOCUMENT_PATHS = [
os.path.join(DOCUMENTATION_PATH, subdir, filename)
for subdir in ["docs", "."]
for filename in os.listdir(os.path.join(DOCUMENTATION_PATH, subdir))
if filename.lower().endswith(".rst")
]
except FileNotFoundError:
raise OSError(
"Could not find the documentation - remove the build folder and try again."
)
@pytest.mark.parametrize(
"filename",
[
"README.rst",
"index.rst",
],
)
def test_files_is_included(filename):
assert any(path.endswith(filename) for path in DOCUMENT_PATHS)
@pytest.mark.parametrize("document", DOCUMENT_PATHS)
def test_documentation_file(document, zoneinfo_only, env_for_doctest, tzp):
"""This test runs doctest on a documentation file.
functions are also replaced to work.
"""
try:
import pytz
except ImportError:
pytest.skip("pytz not installed, skipping this file.")
try:
# set raise_on_error to False if you wand to see the error for debug
test_result = doctest.testfile(
document, module_relative=False, globs=env_for_doctest, raise_on_error=False
)
finally:
tzp.use_zoneinfo()
assert (
test_result.failed == 0
), f"{test_result.failed} errors in {os.path.basename(document)}"
def test_can_import_zoneinfo(env_for_doctest):
"""Allow importing zoneinfo for tests."""
assert "zoneinfo" in sys.modules