1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# 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
<file>.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
|