new file mode 100644
@@ -0,0 +1,28 @@
+# Session setup and banner for the wic test suite.
+
+import platform
+import sys
+from pathlib import Path
+
+import pytest
+
+_SRC = Path(__file__).resolve().parent.parent / "src"
+if str(_SRC) not in sys.path:
+ sys.path.insert(0, str(_SRC))
+
+try:
+ import wic.cli as _wic_cli
+except Exception as exc:
+ pytest.exit("cannot import wic from %s: %s" % (_SRC, exc), returncode=1)
+
+
+def pytest_report_header(config):
+ return "\n".join([
+ "wic test suite",
+ " host: %s %s %s" % (
+ platform.node(), platform.system(), platform.machine()),
+ " python: %s pytest: %s" % (
+ platform.python_version(), pytest.__version__),
+ " wic: %s (%s)" % (
+ getattr(_wic_cli, "__version__", "(unknown)"), _wic_cli.__file__),
+ ])
tests/conftest.py prepares the suite and describes the run. It adds the in-tree src/ to sys.path so the tests import the wic in the checkout without an install, then imports wic once up front: if that fails, the session stops immediately with pytest.exit() and the reason, rather than letting every test error out one by one against a missing or wrong wic. A pytest_report_header hook prints a short banner naming the host, the Python and pytest versions, and the wic under test with its version and imported path, so a run can be attributed when more than one checkout or virtualenv is in play. AI-Generated: codex/claude-opus 4.8 (xhigh) Signed-off-by: Trevor Woerner <twoerner@gmail.com> --- changes in v4: - move the wic-import check here from the run-tests.sh wrapper, so it runs on every invocation regardless of how pytest is launched; on failure the session stops with pytest.exit(). changes in v3: - no change in this revision. changes in v2: - v1 submitted the entire test suite as a single commit; v2 breaks the work into a reviewable series, and this patch is one step of it. --- tests/conftest.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tests/conftest.py