<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/scripts/testing/tests, branch main</title>
<subtitle>Builds a full dev workstation from a bare Arch Linux install.
</subtitle>
<id>https://git.cjennings.net/archsetup/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/archsetup/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/'/>
<updated>2026-06-25T07:33:59+00:00</updated>
<entry>
<title>test(archsetup): expand validation coverage + fix ParallelDownloads (P4)</title>
<updated>2026-06-25T07:33:59+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-25T07:33:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=2d63802e77617e4840c81baceb709260341c251a'/>
<id>urn:sha1:2d63802e77617e4840c81baceb709260341c251a</id>
<content type='text'>
Add post-install checks beyond the original shell sweep, validated against a
live VM: test_hardening (sshd prohibit-password, quiet-printk sysctl, emptied
/etc/issue, console font, EFI mount perms), test_config_applied (pacman
ParallelDownloads/Color/multilib, makepkg flags, NetworkManager drop-ins,
fail2ban jail, reflector), and test_backups (the .archsetup.bak files
backup_system_file leaves behind — end-to-end proof of that feature).

The new tests caught a real bug: ParallelDownloads stayed at Arch's default 5
because the sed only matched a commented "#ParallelDownloads", but current Arch
ships it uncommented. Match both (^#?ParallelDownloads) so the intended 10 takes
effect.

Verified against a kept VM: 95 passed, 10 skipped (the one remaining failure was
the pre-fix ParallelDownloads on the already-built VM, which the sed fix
resolves on the next fresh install).
</content>
</entry>
<entry>
<title>test(archsetup): fix fixture scope and initramfs path in the sweep</title>
<updated>2026-06-25T06:27:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-25T06:27:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=08844e730f9acd0874f596bb9906f1f264824eba'/>
<id>urn:sha1:08844e730f9acd0874f596bb9906f1f264824eba</id>
<content type='text'>
VM run #2 exposed two test bugs (archsetup itself passed clean, 53/0/0):

- ScopeMismatch errors on 26 tests: the host-dependent fixtures were
  session-scoped, but Testinfra's host fixture is module-scoped, and a
  session fixture cannot request a module one. Drop those fixtures to
  module scope.

- test_console_font_in_initramfs hardcoded /boot/initramfs-linux.img; this
  fleet runs linux-lts, so the image is initramfs-linux-lts.img. Pick the
  main (non-fallback) initramfs by glob instead.
</content>
</entry>
<entry>
<title>test(archsetup): port full shell validation sweep to Testinfra (P2)</title>
<updated>2026-06-25T05:12:35+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-25T05:12:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=3cac3b3dfcd432395201a309920c2491ee9caf01'/>
<id>urn:sha1:3cac3b3dfcd432395201a309920c2491ee9caf01</id>
<content type='text'>
Port all ~26 post-install checks from validation.sh to pytest/Testinfra,
reaching parity before the cutover. Adds test_users, test_packages,
test_services, test_desktop, test_boot, test_keyring, and test_archsetup
(88 tests after parametrizing groups, services, timers, tools, and configs),
plus shared conftest fixtures for ZFS/NVMe/compositor/networking gating.

The shell sweep's three outcomes map cleanly: hard failures become assertions,
advisory warnings and unmet preconditions (headless compositor, slirp
networking, optional services, non-ZFS/non-NVMe hosts) become skips.

One correctness fix vs the shell sweep: check awww, not swww — archsetup
installs awww (swww's successor) and `pacman -Q swww` no longer matches.

Verified on the host: py_compile clean, pytest --collect-only green (88 tests).
The sweep against a real VM is verified by the make test run that follows.
</content>
</entry>
<entry>
<title>test(archsetup): scaffold Testinfra post-install validation (P1)</title>
<updated>2026-06-25T04:54:53+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-25T04:54:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=99a26d7de23bbfc757957c08e47606c3690df4cb'/>
<id>urn:sha1:99a26d7de23bbfc757957c08e47606c3690df4cb</id>
<content type='text'>
Stand up the Testinfra/pytest harness alongside the existing shell sweep so the two can be compared for parity before pytest takes over.

Adds scripts/testing/tests/ (conftest with failure attribution markers, a report hook, and a target_user fixture, plus three parity checks: user, ufw, dotfiles) and scripts/testing/lib/testinfra.sh, which injects a throwaway SSH key into the VM and runs pytest over SSH. The sweep is advisory here (RUN_TESTINFRA toggle, non-fatal) and does not yet affect pass/fail. Pulls python-pytest and python-pytest-testinfra into make deps.

Verified on the host: py_compile clean, pytest --collect-only green, bash -n and shellcheck clean. The sweep running against a real VM is verified by the next make test run.
</content>
</entry>
</feed>
