# SPDX-License-Identifier: GPL-3.0-or-later """Post-install checks: backup_system_file ran during a real install. Expansion coverage (P4). The unit suite (tests/backup-system-file/) covers the helper's logic; this confirms it actually fires end-to-end — archsetup leaves a .archsetup.bak next to each pre-existing file it edits in place. These targets are edited unconditionally on every run (pacman.conf/makepkg.conf always sed'd, sudoers always appended), so their backups must exist. mkinitcpio.conf is edited only conditionally (the systemd-hook switch on non-ZFS, or the nvme module on NVMe systems), so it gets its own fixture-gated check below. Conditionally-edited files (locale.gen, geoclue, fstab) aren't asserted here since their edits depend on the base image. """ import pytest ALWAYS_BACKED_UP = [ "/etc/pacman.conf", "/etc/makepkg.conf", "/etc/sudoers", ] @pytest.mark.attribution("archsetup") @pytest.mark.parametrize("path", ALWAYS_BACKED_UP) def test_backup_created_for_edited_file(host, path): bak = host.file(path + ".archsetup.bak") assert bak.exists, "%s.archsetup.bak missing — backup_system_file did not fire" % path assert bak.is_file @pytest.mark.attribution("archsetup") def test_backup_created_for_mkinitcpio(host, zfs_root, has_nvme): # archsetup edits /etc/mkinitcpio.conf only when it has something to change: # the systemd-hook switch (non-ZFS only) or adding the nvme module (NVMe # systems). A ZFS root with no NVMe touches neither, so there's no backup. if zfs_root and not has_nvme: pytest.skip("ZFS root + no NVMe: archsetup doesn't edit mkinitcpio.conf") bak = host.file("/etc/mkinitcpio.conf.archsetup.bak") assert bak.exists, \ "/etc/mkinitcpio.conf.archsetup.bak missing — backup_system_file did not fire" assert bak.is_file