mirror of
https://github.com/pi-hole/pi-hole.git
synced 2025-09-25 19:19:08 +02:00
Alpine Linux Support and Tests (#6275)
This commit is contained in:
commit
0a837dd955
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@ -73,6 +73,8 @@ jobs:
|
|||||||
fedora_40,
|
fedora_40,
|
||||||
fedora_41,
|
fedora_41,
|
||||||
fedora_42,
|
fedora_42,
|
||||||
|
alpine_3_21,
|
||||||
|
alpine_3_22,
|
||||||
]
|
]
|
||||||
env:
|
env:
|
||||||
DISTRO: ${{matrix.distro}}
|
DISTRO: ${{matrix.distro}}
|
||||||
|
@ -778,7 +778,7 @@ process_status(){
|
|||||||
:
|
:
|
||||||
else
|
else
|
||||||
# non-Docker system
|
# non-Docker system
|
||||||
if service "${i}" status | grep -E 'is\srunning' &> /dev/null; then
|
if service "${i}" status | grep -q -E 'is\srunning|started'; then
|
||||||
status_of_process="active"
|
status_of_process="active"
|
||||||
else
|
else
|
||||||
status_of_process="inactive"
|
status_of_process="inactive"
|
||||||
|
@ -86,6 +86,7 @@ if [[ "$*" == *"once"* ]]; then
|
|||||||
if [[ "$*" != *"quiet"* ]]; then
|
if [[ "$*" != *"quiet"* ]]; then
|
||||||
echo -ne " ${INFO} Running logrotate ..."
|
echo -ne " ${INFO} Running logrotate ..."
|
||||||
fi
|
fi
|
||||||
|
mkdir -p "${STATEFILE%/*}"
|
||||||
/usr/sbin/logrotate --force --state "${STATEFILE}" /etc/pihole/logrotate
|
/usr/sbin/logrotate --force --state "${STATEFILE}" /etc/pihole/logrotate
|
||||||
else
|
else
|
||||||
# Handle rotation for each log file
|
# Handle rotation for each log file
|
||||||
@ -115,4 +116,3 @@ else
|
|||||||
echo -e "${OVER} ${TICK} Deleted ${deleted} queries from long-term query database"
|
echo -e "${OVER} ${TICK} Deleted ${deleted} queries from long-term query database"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
40
advanced/Templates/pihole-FTL.openrc
Normal file
40
advanced/Templates/pihole-FTL.openrc
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#!/sbin/openrc-run
|
||||||
|
# shellcheck shell=sh disable=SC2034
|
||||||
|
|
||||||
|
: "${PI_HOLE_SCRIPT_DIR:=/opt/pihole}"
|
||||||
|
|
||||||
|
command="/usr/bin/pihole-FTL"
|
||||||
|
command_user="pihole:pihole"
|
||||||
|
supervisor=supervise-daemon
|
||||||
|
command_args_foreground="-f"
|
||||||
|
command_background=true
|
||||||
|
pidfile="/run/${RC_SVCNAME}_openrc.pid"
|
||||||
|
extra_started_commands="reload"
|
||||||
|
|
||||||
|
respawn_max=5
|
||||||
|
respawn_period=60
|
||||||
|
capabilities="^CAP_NET_BIND_SERVICE,CAP_NET_RAW,CAP_NET_ADMIN,CAP_SYS_NICE,CAP_IPC_LOCK,CAP_CHOWN,CAP_SYS_TIME"
|
||||||
|
|
||||||
|
depend() {
|
||||||
|
want net
|
||||||
|
provide dns
|
||||||
|
}
|
||||||
|
|
||||||
|
checkconfig() {
|
||||||
|
$command -f test
|
||||||
|
}
|
||||||
|
|
||||||
|
start_pre() {
|
||||||
|
sh "${PI_HOLE_SCRIPT_DIR}/pihole-FTL-prestart.sh"
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_post() {
|
||||||
|
sh "${PI_HOLE_SCRIPT_DIR}/pihole-FTL-poststop.sh"
|
||||||
|
}
|
||||||
|
|
||||||
|
reload() {
|
||||||
|
checkconfig || return $?
|
||||||
|
ebegin "Reloading ${RC_SVCNAME}"
|
||||||
|
start-stop-daemon --signal HUP --pidfile "${pidfile}"
|
||||||
|
eend $?
|
||||||
|
}
|
@ -154,6 +154,36 @@ Pi-hole dependency meta package
|
|||||||
EOM
|
EOM
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# List of required packages on APK based systems
|
||||||
|
PIHOLE_META_VERSION_APK=0.1
|
||||||
|
PIHOLE_META_DEPS_APK=(
|
||||||
|
bash
|
||||||
|
bash-completion
|
||||||
|
bind-tools
|
||||||
|
binutils
|
||||||
|
coreutils
|
||||||
|
cronie
|
||||||
|
curl
|
||||||
|
dialog
|
||||||
|
git
|
||||||
|
grep
|
||||||
|
iproute2-minimal # piholeARPTable.sh
|
||||||
|
iproute2-ss # piholeDebug.sh
|
||||||
|
jq
|
||||||
|
libcap
|
||||||
|
logrotate
|
||||||
|
lscpu # piholeDebug.sh
|
||||||
|
lshw # piholeDebug.sh
|
||||||
|
ncurses
|
||||||
|
procps-ng
|
||||||
|
psmisc
|
||||||
|
shadow
|
||||||
|
sudo
|
||||||
|
tzdata
|
||||||
|
unzip
|
||||||
|
wget
|
||||||
|
)
|
||||||
|
|
||||||
######## Undocumented Flags. Shhh ########
|
######## Undocumented Flags. Shhh ########
|
||||||
# These are undocumented flags; some of which we can use when repairing an installation
|
# These are undocumented flags; some of which we can use when repairing an installation
|
||||||
# The runUnattended flag is one example of this
|
# The runUnattended flag is one example of this
|
||||||
@ -271,7 +301,15 @@ package_manager_detect() {
|
|||||||
PKG_COUNT="${PKG_MANAGER} check-update | grep -E '(.i686|.x86|.noarch|.arm|.src|.riscv64)' | wc -l || true"
|
PKG_COUNT="${PKG_MANAGER} check-update | grep -E '(.i686|.x86|.noarch|.arm|.src|.riscv64)' | wc -l || true"
|
||||||
# The command we will use to remove packages (used in the uninstaller)
|
# The command we will use to remove packages (used in the uninstaller)
|
||||||
PKG_REMOVE="${PKG_MANAGER} remove -y"
|
PKG_REMOVE="${PKG_MANAGER} remove -y"
|
||||||
# If neither apt-get or yum/dnf package managers were found
|
|
||||||
|
# If neither apt-get or yum/dnf package managers were found, check for apk.
|
||||||
|
elif is_command apk; then
|
||||||
|
PKG_MANAGER="apk"
|
||||||
|
UPDATE_PKG_CACHE="${PKG_MANAGER} update"
|
||||||
|
PKG_INSTALL="${PKG_MANAGER} add"
|
||||||
|
PKG_COUNT="${PKG_MANAGER} list --upgradable -q | wc -l"
|
||||||
|
PKG_REMOVE="${PKG_MANAGER} del"
|
||||||
|
|
||||||
else
|
else
|
||||||
# we cannot install required packages
|
# we cannot install required packages
|
||||||
printf " %b No supported package manager found\\n" "${CROSS}"
|
printf " %b No supported package manager found\\n" "${CROSS}"
|
||||||
@ -282,13 +320,20 @@ package_manager_detect() {
|
|||||||
|
|
||||||
build_dependency_package(){
|
build_dependency_package(){
|
||||||
# This function will build a package that contains all the dependencies needed for Pi-hole
|
# This function will build a package that contains all the dependencies needed for Pi-hole
|
||||||
|
if is_command apk ; then
|
||||||
|
local str="APK based system detected. Dependencies will be installed using a virtual package named pihole-meta"
|
||||||
|
printf " %b %s...\\n" "${INFO}" "${str}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
# remove any leftover build directory that may exist
|
# remove any leftover build directory that may exist
|
||||||
rm -rf /tmp/pihole-meta_*
|
rm -rf /tmp/pihole-meta_*
|
||||||
|
|
||||||
# Create a fresh build directory with random name
|
# Create a fresh build directory with random name
|
||||||
|
# Busybox Compat: `mktemp` long flags unsupported
|
||||||
|
# -d flag is short form of --directory
|
||||||
local tempdir
|
local tempdir
|
||||||
tempdir="$(mktemp --directory /tmp/pihole-meta_XXXXX)"
|
tempdir="$(mktemp -d /tmp/pihole-meta_XXXXX)"
|
||||||
chmod 0755 "${tempdir}"
|
chmod 0755 "${tempdir}"
|
||||||
|
|
||||||
if is_command apt-get; then
|
if is_command apt-get; then
|
||||||
@ -1177,7 +1222,12 @@ installConfigs() {
|
|||||||
# Load final service
|
# Load final service
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
else
|
else
|
||||||
install -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL.service" '/etc/init.d/pihole-FTL'
|
local INIT="service"
|
||||||
|
if is_command openrc; then
|
||||||
|
INIT="openrc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL.${INIT}" '/etc/init.d/pihole-FTL'
|
||||||
fi
|
fi
|
||||||
install -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL-prestart.sh" "${PI_HOLE_INSTALL_DIR}/pihole-FTL-prestart.sh"
|
install -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL-prestart.sh" "${PI_HOLE_INSTALL_DIR}/pihole-FTL-prestart.sh"
|
||||||
install -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL-poststop.sh" "${PI_HOLE_INSTALL_DIR}/pihole-FTL-poststop.sh"
|
install -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL-poststop.sh" "${PI_HOLE_INSTALL_DIR}/pihole-FTL-poststop.sh"
|
||||||
@ -1266,6 +1316,8 @@ enable_service() {
|
|||||||
if is_command systemctl; then
|
if is_command systemctl; then
|
||||||
# use that to enable the service
|
# use that to enable the service
|
||||||
systemctl -q enable "${1}"
|
systemctl -q enable "${1}"
|
||||||
|
elif is_command openrc; then
|
||||||
|
rc-update add "${1}" "${2:-default}" &> /dev/null
|
||||||
else
|
else
|
||||||
# Otherwise, use update-rc.d to accomplish this
|
# Otherwise, use update-rc.d to accomplish this
|
||||||
update-rc.d "${1}" defaults >/dev/null
|
update-rc.d "${1}" defaults >/dev/null
|
||||||
@ -1282,6 +1334,8 @@ disable_service() {
|
|||||||
if is_command systemctl; then
|
if is_command systemctl; then
|
||||||
# use that to disable the service
|
# use that to disable the service
|
||||||
systemctl -q disable "${1}"
|
systemctl -q disable "${1}"
|
||||||
|
elif is_command openrc; then
|
||||||
|
rc-update del "${1}" "${2:-default}" &> /dev/null
|
||||||
else
|
else
|
||||||
# Otherwise, use update-rc.d to accomplish this
|
# Otherwise, use update-rc.d to accomplish this
|
||||||
update-rc.d "${1}" disable >/dev/null
|
update-rc.d "${1}" disable >/dev/null
|
||||||
@ -1294,6 +1348,8 @@ check_service_active() {
|
|||||||
if is_command systemctl; then
|
if is_command systemctl; then
|
||||||
# use that to check the status of the service
|
# use that to check the status of the service
|
||||||
systemctl -q is-enabled "${1}" 2>/dev/null
|
systemctl -q is-enabled "${1}" 2>/dev/null
|
||||||
|
elif is_command openrc; then
|
||||||
|
rc-status default boot | grep -q "${1}"
|
||||||
else
|
else
|
||||||
# Otherwise, fall back to service command
|
# Otherwise, fall back to service command
|
||||||
service "${1}" status &>/dev/null
|
service "${1}" status &>/dev/null
|
||||||
@ -1395,8 +1451,27 @@ install_dependent_packages() {
|
|||||||
printf " %b Error: Unable to find Pi-hole dependency package.\\n" "${COL_RED}"
|
printf " %b Error: Unable to find Pi-hole dependency package.\\n" "${COL_RED}"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
# Install Alpine packages
|
||||||
|
elif is_command apk; then
|
||||||
|
local repo_str="Ensuring alpine 'community' repo is enabled."
|
||||||
|
printf "%b %b %s" "${OVER}" "${INFO}" "${repo_str}"
|
||||||
|
|
||||||
# If neither apt-get or yum/dnf package managers were found
|
local pattern='^\s*#(.*/community/?)\s*$'
|
||||||
|
sed -Ei "s:${pattern}:\1:" /etc/apk/repositories
|
||||||
|
if grep -Eq "${pattern}" /etc/apk/repositories; then
|
||||||
|
# Repo still commented out = Failure
|
||||||
|
printf "%b %b %s\\n" "${OVER}" "${CROSS}" "${repo_str}"
|
||||||
|
else
|
||||||
|
printf "%b %b %s\\n" "${OVER}" "${TICK}" "${repo_str}"
|
||||||
|
fi
|
||||||
|
printf " %b %s..." "${INFO}" "${str}"
|
||||||
|
if { ${PKG_INSTALL} -q -t "pihole-meta=${PIHOLE_META_VERSION_APK}" "${PIHOLE_META_DEPS_APK[@]}" &>/dev/null; }; then
|
||||||
|
printf "%b %b %s\\n" "${OVER}" "${TICK}" "${str}"
|
||||||
|
else
|
||||||
|
printf "%b %b %s\\n" "${OVER}" "${CROSS}" "${str}"
|
||||||
|
printf " %b Error: Unable to install Pi-hole dependency package.\\n" "${COL_RED}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
# we cannot install the dependency package
|
# we cannot install the dependency package
|
||||||
printf " %b No supported package manager found\\n" "${CROSS}"
|
printf " %b No supported package manager found\\n" "${CROSS}"
|
||||||
@ -1421,6 +1496,15 @@ installCron() {
|
|||||||
# Randomize update checker time
|
# Randomize update checker time
|
||||||
sed -i "s/59 17/$((1 + RANDOM % 58)) $((12 + RANDOM % 8))/" /etc/cron.d/pihole
|
sed -i "s/59 17/$((1 + RANDOM % 58)) $((12 + RANDOM % 8))/" /etc/cron.d/pihole
|
||||||
printf "%b %b %s\\n" "${OVER}" "${TICK}" "${str}"
|
printf "%b %b %s\\n" "${OVER}" "${TICK}" "${str}"
|
||||||
|
|
||||||
|
# Switch off of busybox cron on alpine
|
||||||
|
if is_command openrc; then
|
||||||
|
printf " %b Switching from busybox crond to cronie...\\n" "${INFO}"
|
||||||
|
stop_service crond
|
||||||
|
disable_service crond
|
||||||
|
enable_service cronie
|
||||||
|
restart_service cronie
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Gravity is a very important script as it aggregates all of the domains into a single HOSTS formatted list,
|
# Gravity is a very important script as it aggregates all of the domains into a single HOSTS formatted list,
|
||||||
@ -1470,7 +1554,7 @@ create_pihole_user() {
|
|||||||
# then create and add her to the pihole group
|
# then create and add her to the pihole group
|
||||||
local str="Creating user 'pihole'"
|
local str="Creating user 'pihole'"
|
||||||
printf "%b %b %s..." "${OVER}" "${INFO}" "${str}"
|
printf "%b %b %s..." "${OVER}" "${INFO}" "${str}"
|
||||||
if useradd -r --no-user-group -g pihole -s /usr/sbin/nologin pihole; then
|
if useradd -r --no-user-group -g pihole -s "$(command -v nologin)" pihole; then
|
||||||
printf "%b %b %s\\n" "${OVER}" "${TICK}" "${str}"
|
printf "%b %b %s\\n" "${OVER}" "${TICK}" "${str}"
|
||||||
else
|
else
|
||||||
printf "%b %b %s\\n" "${OVER}" "${CROSS}" "${str}"
|
printf "%b %b %s\\n" "${OVER}" "${CROSS}" "${str}"
|
||||||
@ -1485,7 +1569,7 @@ create_pihole_user() {
|
|||||||
# create and add pihole user to the pihole group
|
# create and add pihole user to the pihole group
|
||||||
local str="Creating user 'pihole'"
|
local str="Creating user 'pihole'"
|
||||||
printf "%b %b %s..." "${OVER}" "${INFO}" "${str}"
|
printf "%b %b %s..." "${OVER}" "${INFO}" "${str}"
|
||||||
if useradd -r --no-user-group -g pihole -s /usr/sbin/nologin pihole; then
|
if useradd -r --no-user-group -g pihole -s "$(command -v nologin)" pihole; then
|
||||||
printf "%b %b %s\\n" "${OVER}" "${TICK}" "${str}"
|
printf "%b %b %s\\n" "${OVER}" "${TICK}" "${str}"
|
||||||
else
|
else
|
||||||
printf "%b %b %s\\n" "${OVER}" "${CROSS}" "${str}"
|
printf "%b %b %s\\n" "${OVER}" "${CROSS}" "${str}"
|
||||||
|
@ -118,9 +118,12 @@ gravity_swap_databases() {
|
|||||||
|
|
||||||
# Swap databases and remove or conditionally rename old database
|
# Swap databases and remove or conditionally rename old database
|
||||||
# Number of available blocks on disk
|
# Number of available blocks on disk
|
||||||
availableBlocks=$(stat -f --format "%a" "${gravityDIR}")
|
# Busybox Compat: `stat` long flags unsupported
|
||||||
|
# -f flag is short form of --file-system.
|
||||||
|
# -c flag is short form of --format.
|
||||||
|
availableBlocks=$(stat -f -c "%a" "${gravityDIR}")
|
||||||
# Number of blocks, used by gravity.db
|
# Number of blocks, used by gravity.db
|
||||||
gravityBlocks=$(stat --format "%b" "${gravityDBfile}")
|
gravityBlocks=$(stat -c "%b" "${gravityDBfile}")
|
||||||
# Only keep the old database if available disk space is at least twice the size of the existing gravity.db.
|
# Only keep the old database if available disk space is at least twice the size of the existing gravity.db.
|
||||||
# Better be safe than sorry...
|
# Better be safe than sorry...
|
||||||
oldAvail=false
|
oldAvail=false
|
||||||
|
18
test/_alpine_3_21.Dockerfile
Normal file
18
test/_alpine_3_21.Dockerfile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
FROM alpine:3.21
|
||||||
|
|
||||||
|
ENV GITDIR=/etc/.pihole
|
||||||
|
ENV SCRIPTDIR=/opt/pihole
|
||||||
|
RUN sed -i 's/#\(.*\/community\)/\1/' /etc/apk/repositories
|
||||||
|
RUN apk --no-cache add bash coreutils curl git jq openrc shadow
|
||||||
|
|
||||||
|
RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole
|
||||||
|
ADD . $GITDIR
|
||||||
|
RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $GITDIR/advanced/Scripts/COL_TABLE $SCRIPTDIR/
|
||||||
|
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR
|
||||||
|
|
||||||
|
RUN true && \
|
||||||
|
chmod +x $SCRIPTDIR/*
|
||||||
|
|
||||||
|
ENV SKIP_INSTALL=true
|
||||||
|
|
||||||
|
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \
|
18
test/_alpine_3_22.Dockerfile
Normal file
18
test/_alpine_3_22.Dockerfile
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
FROM alpine:3.22
|
||||||
|
|
||||||
|
ENV GITDIR=/etc/.pihole
|
||||||
|
ENV SCRIPTDIR=/opt/pihole
|
||||||
|
RUN sed -i 's/#\(.*\/community\)/\1/' /etc/apk/repositories
|
||||||
|
RUN apk --no-cache add bash coreutils curl git jq openrc shadow
|
||||||
|
|
||||||
|
RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole
|
||||||
|
ADD . $GITDIR
|
||||||
|
RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $GITDIR/advanced/Scripts/COL_TABLE $SCRIPTDIR/
|
||||||
|
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR
|
||||||
|
|
||||||
|
RUN true && \
|
||||||
|
chmod +x $SCRIPTDIR/*
|
||||||
|
|
||||||
|
ENV SKIP_INSTALL=true
|
||||||
|
|
||||||
|
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \
|
@ -22,6 +22,7 @@ def test_supported_package_manager(host):
|
|||||||
# break supported package managers
|
# break supported package managers
|
||||||
host.run("rm -rf /usr/bin/apt-get")
|
host.run("rm -rf /usr/bin/apt-get")
|
||||||
host.run("rm -rf /usr/bin/rpm")
|
host.run("rm -rf /usr/bin/rpm")
|
||||||
|
host.run("rm -rf /sbin/apk")
|
||||||
package_manager_detect = host.run(
|
package_manager_detect = host.run(
|
||||||
"""
|
"""
|
||||||
source /opt/pihole/basic-install.sh
|
source /opt/pihole/basic-install.sh
|
||||||
@ -77,10 +78,21 @@ def test_installPihole_fresh_install_readableFiles(host):
|
|||||||
},
|
},
|
||||||
host,
|
host,
|
||||||
)
|
)
|
||||||
|
mock_command_2(
|
||||||
|
"rc-service",
|
||||||
|
{
|
||||||
|
"rc-service pihole-FTL enable": ("", "0"),
|
||||||
|
"rc-service pihole-FTL restart": ("", "0"),
|
||||||
|
"rc-service pihole-FTL start": ("", "0"),
|
||||||
|
"*": ('echo "rc-service call with $@"', "0"),
|
||||||
|
},
|
||||||
|
host,
|
||||||
|
)
|
||||||
# try to install man
|
# try to install man
|
||||||
host.run("command -v apt-get > /dev/null && apt-get install -qq man")
|
host.run("command -v apt-get > /dev/null && apt-get install -qq man")
|
||||||
host.run("command -v dnf > /dev/null && dnf install -y man")
|
host.run("command -v dnf > /dev/null && dnf install -y man")
|
||||||
host.run("command -v yum > /dev/null && yum install -y man")
|
host.run("command -v yum > /dev/null && yum install -y man")
|
||||||
|
host.run("command -v apk > /dev/null && apk add mandoc man-pages")
|
||||||
# Workaround to get FTLv6 installed until it reaches master branch
|
# Workaround to get FTLv6 installed until it reaches master branch
|
||||||
host.run('echo "' + FTL_BRANCH + '" > /etc/pihole/ftlbranch')
|
host.run('echo "' + FTL_BRANCH + '" > /etc/pihole/ftlbranch')
|
||||||
install = host.run(
|
install = host.run(
|
||||||
@ -103,7 +115,7 @@ def test_installPihole_fresh_install_readableFiles(host):
|
|||||||
maninstalled = False
|
maninstalled = False
|
||||||
piholeuser = "pihole"
|
piholeuser = "pihole"
|
||||||
exit_status_success = 0
|
exit_status_success = 0
|
||||||
test_cmd = 'su --shell /bin/bash --command "test -{0} {1}" -p {2}'
|
test_cmd = 'su -s /bin/bash -c "test -{0} {1}" -p {2}'
|
||||||
# check files in /etc/pihole for read, write and execute permission
|
# check files in /etc/pihole for read, write and execute permission
|
||||||
check_etc = test_cmd.format("r", "/etc/pihole", piholeuser)
|
check_etc = test_cmd.format("r", "/etc/pihole", piholeuser)
|
||||||
actual_rc = host.run(check_etc).rc
|
actual_rc = host.run(check_etc).rc
|
||||||
|
10
test/tox.alpine_3_21.ini
Normal file
10
test/tox.alpine_3_21.ini
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[tox]
|
||||||
|
envlist = py3
|
||||||
|
|
||||||
|
[testenv:py3]
|
||||||
|
allowlist_externals = docker
|
||||||
|
deps = -rrequirements.txt
|
||||||
|
setenv =
|
||||||
|
COLUMNS=120
|
||||||
|
commands = docker buildx build --load --progress plain -f _alpine_3_21.Dockerfile -t pytest_pihole:test_container ../
|
||||||
|
pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py
|
10
test/tox.alpine_3_22.ini
Normal file
10
test/tox.alpine_3_22.ini
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[tox]
|
||||||
|
envlist = py3
|
||||||
|
|
||||||
|
[testenv:py3]
|
||||||
|
allowlist_externals = docker
|
||||||
|
deps = -rrequirements.txt
|
||||||
|
setenv =
|
||||||
|
COLUMNS=120
|
||||||
|
commands = docker buildx build --load --progress plain -f _alpine_3_22.Dockerfile -t pytest_pihole:test_container ../
|
||||||
|
pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py
|
Loading…
x
Reference in New Issue
Block a user