CI: stand up Gitea Actions (TST-03) + fix the defects it caught #123

Merged
dohertj2 merged 9 commits from fix/ci-selfhosted-tooling into main 2026-07-10 05:11:03 -04:00
Showing only changes of commit 70ef87aea2 - Show all commits
+27
View File
@@ -0,0 +1,27 @@
"""Shared pytest fixtures for the client test suite.
pytest-asyncio 1.x no longer installs a current event loop for *synchronous*
tests, and it clears the loop after each ``async`` test. Some synchronous tests
build a ``grpc.aio.Channel`` (via ``create_channel``), which calls
``asyncio.get_event_loop()`` and therefore raises
``RuntimeError: There is no current event loop`` on Python 3.12 when a prior
async test has left the policy with no current loop. Ensure every test starts
with a usable current loop so channel construction in a sync test is
order-independent.
"""
from __future__ import annotations
import asyncio
from collections.abc import Iterator
import pytest
@pytest.fixture(autouse=True)
def _ensure_current_event_loop() -> Iterator[None]:
try:
asyncio.get_event_loop()
except RuntimeError:
asyncio.set_event_loop(asyncio.new_event_loop())
yield