aboutsummaryrefslogtreecommitdiff
path: root/scripts/testing/maint-scenarios/23-pacnew-delete.sh
blob: 23cd8d165b2798feb85cef9e8fd6f534183d65d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# shellcheck shell=bash disable=SC2034  # sourced by run-maint-scenarios.sh
# Scenario: a .pacnew file is deleted through the validated priv verb.
#
# pacdiff --output finds the planted file; the remedy takes the path as its
# item and rm's it. A neighbouring non-pacnew file proves the verb's path
# validation keeps the blast radius to the named file.
SCENARIO_DESC="planted .pacnew removed by path"
SCENARIO_GROUP="packages"
SCENARIO_PROFILES="any"

scenario_break() {
    mexec "cp /etc/pacman.conf /etc/pacman.conf.pacnew && pacdiff --output | grep -q pacman.conf.pacnew"
}

scenario_fix() {
    mfix pacnew_delete /etc/pacman.conf.pacnew
}

scenario_assert() {
    mexec "test ! -e /etc/pacman.conf.pacnew && test -e /etc/pacman.conf" \
        && massert_metric pkg_pacnew ok
}