Single source of truth: which post-check tests run for which AlmaLinux
architecture × major. Driven entirely by
config/architectures.yaml — when this
table needs an update, the YAML is what changes; the logic in
tests/conftest.py::_skip_unsupported_arch and the per-arch fields it
reads will pick it up automatically.
| Arch | AL9 | AL10 | Notes |
|---|---|---|---|
x86_64 |
✅ | ✅ | Default tier; full coverage. |
aarch64 |
✅ | ✅ | Full coverage. |
s390x |
✅ | ✅ | Full coverage; container tests are slow under QEMU. |
ppc64le |
✅ | ✅ | Full coverage; container tests are slow under QEMU. |
i686 |
✅ | ✅ | Vault-only mirrorlist. Skips: container, ISO, upgrade. Parity NOT skipped — i686 must stay in lockstep with upstream NEVR; drift = real bug. |
x86_64_v2 |
❌ | ✅ | AL10 only. Image: quay.io/almalinuxorg/almalinux:10 with --platform=linux/amd64/v2. |
x86_64_v2 is rejected with a clear error if you pass it via
ALMA_ARCHES for an AL9 run (validated in
RuntimeConfig.from_env).
The autouse fixture _skip_unsupported_arch in
tests/conftest.py skips test variants that
don't apply, based on the arch's skip_categories list. The mapping
from category → test file lives in the same conftest
(_ARCH_SKIP_FILE_CATEGORIES + the requires_docker keyword for
container).
All test files below live under tests/release/.
| Test file | x86_64 | aarch64 | s390x | ppc64le | i686 | x86_64_v2 (AL10) |
|---|---|---|---|---|---|---|
test_repomd_signature.py |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
test_iso_checksums.py |
✅ | ✅ | ✅ | ✅ | ⏭️ iso |
✅ |
test_iso_presence.py |
✅ | ✅ | ✅ | ✅ | ⏭️ iso |
✅ |
test_mirrorlist.py |
✅ | ✅ | ✅ | ✅ | ✅ (vault-only) | ✅ |
test_almalinux_repos_pkg.py |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
test_release_parity.py |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ (AL10) |
test_noarch_parity.py |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ (AL10) |
test_dnf_install_all.py |
✅ | ✅ | ✅ (slow) | ✅ (slow) | ⏭️ container |
✅ |
test_dnf_upgrade.py |
✅ | ✅ | ✅ | ✅ | ⏭️ upgrade/container |
✅ |
test_os_release.py |
✅ | ✅ | ✅ | ✅ | ⏭️ container |
✅ |
Legend:
- ✅ — runs.
- ⏭️
<cat>— skipped viaskip_categories: [<cat>]inconfig/architectures.yaml. The skip reason in the report points back at the YAML so reviewers can see why without reading code.
expected_pkg_sections(major, arch) in
post_check/config.py decides which
[section] IDs in almalinux-repos's .repo files must exist for
the (major, arch) pair. The mirrorlist test, the
"every-section-shipped" test, and the pungi .repo synthesizer all
read from this single source.
| Section | x86_64 / x86_64_v2 | aarch64 / s390x / ppc64le | i686 |
|---|---|---|---|
baseos |
✅ | ✅ | ✅ |
appstream |
✅ | ✅ | ✅ |
crb |
✅ | ✅ | ✅ |
extras |
✅ | ✅ | ✅ |
highavailability |
✅ | ✅ | ❌ |
resilientstorage |
AL9 ✅ / AL10 ❌ | AL9 ✅ / AL10 ❌ | ❌ |
rt |
✅ | ❌ | ❌ |
nfv |
✅ | ❌ | ❌ |
sap |
✅ | ✅ | ❌ |
saphana |
✅ | ✅ | ❌ |
x86_64_v2 shares the same expected-section set as x86_64 (full set
including RT/NFV) — defined as the _ARCH_X86_FAMILY tuple in
config.py.
Used by dnf install / dnf upgrade / os-release tests
(post_check.helpers.docker.image_for(version, arch=…)).
| Arch | Image template | Resolves to (AL10) |
|---|---|---|
x86_64 |
almalinux:{major} (default) |
almalinux:10 |
aarch64 |
almalinux:{major} (default) |
almalinux:10 |
s390x |
almalinux:{major} (default) |
almalinux:10 |
ppc64le |
almalinux:{major} (default) |
almalinux:10 |
i686 |
n/a — container tests are skipped | n/a |
x86_64_v2 |
quay.io/almalinuxorg/almalinux:{major} |
quay.io/almalinuxorg/almalinux:10 |
Override via the docker_image field in
config/architectures.yaml. The template supports a single
placeholder, {major}, expanded from runtime_config.version.
The corresponding --platform is taken from docker_platform in the
same YAML entry — for x86_64_v2 that is linux/amd64/v2, matching
the user-facing invocation:
docker run --platform=linux/amd64/v2 quay.io/almalinuxorg/almalinux:10- Add an entry under
config/architectures.yaml. Required:docker_platform. Optional, in order of usefulness:supported_majors,pungi_host,pungi_host_by_major,docker_image,skip_categories,vault_only_mirrorlist. Usepungi_host_by_majorinstead ofpungi_hostwhen the pungi hostname varies across AlmaLinux majors — i686 does this because AL9 has no standalone i686 compose and rides underx86-64-pungi-9.almalinux.dev, while AL10 has its owni686-pungi-10.almalinux.dev. - If the arch has a non-default expected-section set, update the
per-major maps in
post_check/config.py::_EXPECTED_PKG_SECTIONS(or the_ARCH_*arch-tuples consumed by them). - Update this matrix.
- No test code changes should be needed — every per-arch behaviour is now driven from the YAML.