CI / lint (pull_request) Failing after 0s
CI / build-and-test (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
- Replace --dist=loadgroup (a no-op: it only groups by xdist_group marks) with --dist=load, and make module teardowns remove only their own SOURCE_DIR/DEST_DIR (never the shared worker-keyed TEST_DATA_DIR) so interleaved modules can't wipe each other's fixtures. Add a session-scoped cleanup of the per-worker dir. (loadfile grouped the whole test_features.py module onto one worker and slowed the full suite to 761s vs 224s with load.) - Mark the two setpriv privilege tests with a 'setpriv' marker and run the full merge suite as -m "not setpriv", so the dev/main gate can't go red on the env-dependent /root-traversal tests regardless of the runner uid. - Add a TLS basic test to the ci subset, add workflow_dispatch for on-demand full runs, and fix trailing newlines. - Measured: smoke -m ci = 28 passed/39s; full -n4 = 280 passed/11 skipped/1 xpassed in 224s (was 860s serial).
32 lines
955 B
Python
32 lines
955 B
Python
"""Shared pytest configuration for integration tests."""
|
|
import os
|
|
import shutil
|
|
import sys
|
|
import pytest
|
|
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "integration"))
|
|
|
|
from common import ServerManager, TEST_DATA_DIR
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def shared_server():
|
|
"""One server for the entire test session. Avoids 27+ server start/stop cycles.
|
|
|
|
Under pytest-xdist this session fixture is instantiated once per worker
|
|
process, so each worker gets its own server on an ephemeral port."""
|
|
server = ServerManager()
|
|
server.start()
|
|
yield server
|
|
server.stop()
|
|
|
|
|
|
@pytest.fixture(scope="session", autouse=True)
|
|
def _cleanup_worker_test_data():
|
|
"""Remove this (worker-keyed) TEST_DATA_DIR at the end of the session.
|
|
|
|
Modules clean only their own rows; this final pass ensures the per-worker
|
|
directory never lingers in the working tree."""
|
|
yield
|
|
shutil.rmtree(TEST_DATA_DIR, ignore_errors=True)
|