[pytest]
# Pytest configuration for Ohm Stream Downloader

# Test discovery patterns
python_files = test_*.py
python_classes = Test*
python_functions = test_*

# Test paths
testpaths = tests

# Output options
addopts =
    # Verbose output
    -v
    # Show local variables in tracebacks
    --showlocals
    # Show summary of all test outcomes
    -ra
    # Strict markers
    --strict-markers
    # Coverage reporting (if pytest-cov is installed)
    --cov=app
    --cov-report=term-missing
    --cov-report=html
    --no-cov-on-fail

# Markers
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    integration: marks tests as integration tests
    unit: marks tests as unit tests
    asyncio: marks tests as async tests
    network: marks tests that require network access

# Ignore paths
norecursedir = .git .tox dist build *.egg venv .venv

# Logging
log_cli = true
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)s] %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S

# Timeout (if pytest-timeout is installed)
timeout = 300

# Asyncio mode (if pytest-asyncio is installed)
asyncio_mode = auto

# Coverage options (if pytest-cov is installed)
[coverage:run]
source = app
omit =
    */tests/*
    */test_*.py
    */__pycache__/*
    */venv/*
    */.venv/*

[coverage:report]
exclude_lines =
    pragma: no cover
    def __repr__
    raise AssertionError
    raise NotImplementedError
    if __name__ == .__main__.:
    if TYPE_CHECKING:
    @abstractmethod
