Skip to content

catalog

catalog

Distro-slot catalog — facts about the shared matrix base images.

Everything in here is a property of a slot (the base image and how a test container on it behaves), never of a consuming repository: which Containerfile builds it, which podman the distro ships, whether the image is systemd-free, and which user runs the tests. Repo-specific choices (slot selection, extra packages, test phases) live in each repo's matrix.yml — see config.

Two slot kinds exist:

  • container — a regular distro image; tests run via su as the slot's test user.
  • nix — the wrapped-Python oddball (no su, no podman inside); the runner switches users via Python os.setuid and reports the Python version instead of a podman version.

SOURCE_MOUNT = '/src' module-attribute

WORKSPACE_DIR = '/workspace' module-attribute

RESULTS_MOUNT = '/results' module-attribute

PYTHON_VERSION = '3.12' module-attribute

OWNERSHIP_LABEL = 'io.terok.matrix-test' module-attribute

MATRIX_ENV = 'TEROK_MATRIX' module-attribute

EXPECT_ENV = 'TEROK_EXPECT' module-attribute

FLAVORS = ('podman', 'dbus') module-attribute

UV_IMAGE_TAG = '0.11' module-attribute

UV_MANAGED_PYTHON_DIR = '/opt/uv/python' module-attribute

SLOTS = {'debian12': SlotSpec(expected_podman='4.3.1'), 'ubuntu2404': SlotSpec(expected_podman='4.9.3'), 'ubuntu2604': SlotSpec(expected_podman='5.7.0'), 'debian13': SlotSpec(expected_podman='5.4.2'), 'fedora43': SlotSpec(expected_podman='5.8.4'), 'fedora44': SlotSpec(expected_podman='5.8.4'), 'podman': SlotSpec(expected_podman='latest', user='podman'), 'alpine': SlotSpec(expected_podman='5.3.2', non_systemd=True), 'void': SlotSpec(expected_podman='latest', non_systemd=True), 'mageia': SlotSpec(expected_podman='4.9.5'), 'nix': SlotSpec(kind=(SlotKind.NIX))} module-attribute

SlotKind

Bases: StrEnum

How a slot's test container is driven.

CONTAINER = 'container' class-attribute instance-attribute

NIX = 'nix' class-attribute instance-attribute

SlotSpec(expected_podman='latest', non_systemd=False, user='testrunner', kind=SlotKind.CONTAINER) dataclass

Facts about one matrix slot's base image.

Parameters:

Name Type Description Default
expected_podman str

Distro-shipped podman version the slot is pinned to; "latest" for rolling images (and for slot kinds that never read it, like nix).

'latest'
non_systemd bool

The runner hard-fails the slot if systemd is present — these slots exist to prove the systemd-free floor.

False
user str

Non-root user baked into the image (uid 1000).

'testrunner'
kind SlotKind

Driving mode, see SlotKind.

CONTAINER

expected_podman = 'latest' class-attribute instance-attribute

non_systemd = False class-attribute instance-attribute

user = 'testrunner' class-attribute instance-attribute

kind = SlotKind.CONTAINER class-attribute instance-attribute