mirror of
https://github.com/pi-hole/pi-hole
synced 2024-12-22 14:58:08 +00:00
Merge pull request #4828 from pi-hole/centos7-can-do-one
Drop explicit support for CentOS 7 from the install script
This commit is contained in:
commit
71bc237639
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@ -43,7 +43,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
distro: [debian_10, debian_11, ubuntu_18, ubuntu_20, ubuntu_22, centos_7, centos_8, fedora_34]
|
distro: [debian_10, debian_11, ubuntu_18, ubuntu_20, ubuntu_22, centos_8, fedora_34]
|
||||||
env:
|
env:
|
||||||
DISTRO: ${{matrix.distro}}
|
DISTRO: ${{matrix.distro}}
|
||||||
steps:
|
steps:
|
||||||
|
@ -366,6 +366,21 @@ package_manager_detect() {
|
|||||||
LIGHTTPD_GROUP="lighttpd"
|
LIGHTTPD_GROUP="lighttpd"
|
||||||
LIGHTTPD_CFG="lighttpd.conf.fedora"
|
LIGHTTPD_CFG="lighttpd.conf.fedora"
|
||||||
|
|
||||||
|
# If the host OS is centos (or a derivative), epel is required for lighttpd
|
||||||
|
if ! grep -qiE 'fedora|fedberry' /etc/redhat-release; then
|
||||||
|
if rpm -qa | grep -qi 'epel'; then
|
||||||
|
printf " %b EPEL repository already installed\\n" "${TICK}"
|
||||||
|
else
|
||||||
|
local RH_RELEASE EPEL_PKG
|
||||||
|
# EPEL not already installed, add it based on the release version
|
||||||
|
RH_RELEASE=$(grep -oP '(?<= )[0-9]+(?=\.?)' /etc/redhat-release)
|
||||||
|
EPEL_PKG="https://dl.fedoraproject.org/pub/epel/epel-release-latest-${RH_RELEASE}.noarch.rpm"
|
||||||
|
printf " %b Enabling EPEL package repository (https://fedoraproject.org/wiki/EPEL)\\n" "${INFO}"
|
||||||
|
"${PKG_INSTALL[@]}" "${EPEL_PKG}"
|
||||||
|
printf " %b Installed %s\\n" "${TICK}" "${EPEL_PKG}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# If neither apt-get or yum/dnf package managers were found
|
# If neither apt-get or yum/dnf package managers were found
|
||||||
else
|
else
|
||||||
# we cannot install required packages
|
# we cannot install required packages
|
||||||
@ -375,140 +390,6 @@ package_manager_detect() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
select_rpm_php(){
|
|
||||||
# If the host OS is Fedora,
|
|
||||||
if grep -qiE 'fedora|fedberry' /etc/redhat-release; then
|
|
||||||
# all required packages should be available by default with the latest fedora release
|
|
||||||
: # continue
|
|
||||||
# or if host OS is CentOS,
|
|
||||||
elif grep -qiE 'centos|scientific|alma|rocky' /etc/redhat-release; then
|
|
||||||
# Pi-Hole currently supports CentOS 7+ with PHP7+
|
|
||||||
SUPPORTED_CENTOS_VERSION=7
|
|
||||||
SUPPORTED_CENTOS_PHP_VERSION=7
|
|
||||||
# Check current CentOS major release version
|
|
||||||
CURRENT_CENTOS_VERSION=$(grep -oP '(?<= )[0-9]+(?=\.?)' /etc/redhat-release)
|
|
||||||
# Check if CentOS version is supported
|
|
||||||
if [[ $CURRENT_CENTOS_VERSION -lt $SUPPORTED_CENTOS_VERSION ]]; then
|
|
||||||
printf " %b CentOS %s is not supported.\\n" "${CROSS}" "${CURRENT_CENTOS_VERSION}"
|
|
||||||
printf " Please update to CentOS release %s or later.\\n" "${SUPPORTED_CENTOS_VERSION}"
|
|
||||||
# exit the installer
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
# php-json is not required on CentOS 7 as it is already compiled into php
|
|
||||||
# verify via `php -m | grep json`
|
|
||||||
if [[ $CURRENT_CENTOS_VERSION -eq 7 ]]; then
|
|
||||||
# create a temporary array as arrays are not designed for use as mutable data structures
|
|
||||||
CENTOS7_PIHOLE_WEB_DEPS=()
|
|
||||||
for i in "${!PIHOLE_WEB_DEPS[@]}"; do
|
|
||||||
if [[ ${PIHOLE_WEB_DEPS[i]} != "php-json" ]]; then
|
|
||||||
CENTOS7_PIHOLE_WEB_DEPS+=( "${PIHOLE_WEB_DEPS[i]}" )
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# re-assign the clean dependency array back to PIHOLE_WEB_DEPS
|
|
||||||
PIHOLE_WEB_DEPS=("${CENTOS7_PIHOLE_WEB_DEPS[@]}")
|
|
||||||
unset CENTOS7_PIHOLE_WEB_DEPS
|
|
||||||
fi
|
|
||||||
|
|
||||||
if rpm -qa | grep -qi 'epel'; then
|
|
||||||
printf " %b EPEL repository already installed\\n" "${TICK}"
|
|
||||||
else
|
|
||||||
# CentOS requires the EPEL repository to gain access to Fedora packages
|
|
||||||
EPEL_PKG="https://dl.fedoraproject.org/pub/epel/epel-release-latest-${CURRENT_CENTOS_VERSION}.noarch.rpm"
|
|
||||||
printf " %b Enabling EPEL package repository (https://fedoraproject.org/wiki/EPEL)\\n" "${INFO}"
|
|
||||||
"${PKG_INSTALL[@]}" ${EPEL_PKG}
|
|
||||||
printf " %b Installed %s\\n" "${TICK}" "${EPEL_PKG}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# The default php on CentOS 7.x is 5.4 which is EOL
|
|
||||||
# Check if the version of PHP available via installed repositories is >= to PHP 7
|
|
||||||
AVAILABLE_PHP_VERSION=$("${PKG_MANAGER}" info php | grep -i version | grep -o '[0-9]\+' | head -1)
|
|
||||||
if [[ $AVAILABLE_PHP_VERSION -ge $SUPPORTED_CENTOS_PHP_VERSION ]]; then
|
|
||||||
# Since PHP 7 is available by default, install via default PHP package names
|
|
||||||
: # do nothing as PHP is current
|
|
||||||
printf "PHP 7 is installed"
|
|
||||||
else
|
|
||||||
REMI_PKG="remi-release"
|
|
||||||
REMI_REPO="remi-php72"
|
|
||||||
REMI_REPO_URL="https://rpms.remirepo.net/enterprise/${REMI_PKG}-$(rpm -E '%{rhel}').rpm"
|
|
||||||
|
|
||||||
# The PHP version available via default repositories is older than version 7
|
|
||||||
dialog --no-shadow --keep-tite \
|
|
||||||
--title "PHP 7 Update (recommended)" \
|
|
||||||
--defaultno \
|
|
||||||
--yesno "PHP 7.x is recommended for both security and language features.\
|
|
||||||
\\n\\nWould you like to install PHP7 via Remi's RPM repository?\
|
|
||||||
\\n\\nSee: https://rpms.remirepo.net for more information"\
|
|
||||||
"${r}" "${c}" && result=0 || result=$?
|
|
||||||
|
|
||||||
case ${result} in
|
|
||||||
"${DIALOG_OK}" )
|
|
||||||
printf " %b Installing PHP 7 via Remi's RPM repository\\n" "${INFO}"
|
|
||||||
"${PKG_INSTALL[@]}" "yum-utils" &> /dev/null
|
|
||||||
if rpm -q ${REMI_PKG} &> /dev/null; then
|
|
||||||
printf " %b Remi's RPM repository is already installed\\n" "${TICK}"
|
|
||||||
else
|
|
||||||
printf " %b Enabling Remi's RPM repository (https://rpms.remirepo.net)\\n" "${INFO}"
|
|
||||||
yum -y install "${REMI_REPO_URL}"
|
|
||||||
printf " %b Installed %s from %s\\n" "${TICK}" "${REMI_PKG}" "${REMI_REPO_URL}"
|
|
||||||
printf " %b Remi's RPM repository has been enabled for PHP7\\n" "${TICK}"
|
|
||||||
fi
|
|
||||||
yum-config-manager --disable 'remi-php*'
|
|
||||||
yum-config-manager --enable "${REMI_REPO}"
|
|
||||||
|
|
||||||
# trigger an install/update of PHP to ensure previous version of PHP is updated from REMI
|
|
||||||
if "${PKG_INSTALL[@]}" "php-cli" &> /dev/null; then
|
|
||||||
printf " %b PHP7 installed/updated via Remi's RPM repository\\n" "${TICK}"
|
|
||||||
else
|
|
||||||
printf " %b There was a problem updating to PHP7 via Remi's RPM repository\\n" "${CROSS}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
# User chose not to install PHP 7 via Remi's RPM repository
|
|
||||||
"${DIALOG_CANCEL}")
|
|
||||||
# User decided to NOT update PHP from REMI, attempt to install the default available PHP version
|
|
||||||
printf " %b User opt-out of PHP 7 upgrade on CentOS. Deprecated PHP may be in use.\\n" "${INFO}"
|
|
||||||
;;
|
|
||||||
|
|
||||||
# User closed the dialog window
|
|
||||||
"${DIALOG_ESC}")
|
|
||||||
printf " %b Escape pressed, exiting installer at Remi dialog window\\n" "${CROSS}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
# Warn user of unsupported version of Fedora or CentOS
|
|
||||||
dialog --no-shadow --keep-tite \
|
|
||||||
--title "Unsupported RPM based distribution" \
|
|
||||||
--defaultno \
|
|
||||||
--no-button "Exit" \
|
|
||||||
--yes-button "Continue" \
|
|
||||||
--yesno "Would you like to continue installation on an unsupported RPM based distribution?\
|
|
||||||
\\n\\nPlease ensure the following packages have been installed manually:\
|
|
||||||
\\n\\n- lighttpd\\n- lighttpd-fastcgi\\n- PHP version 7+"\
|
|
||||||
"${r}" "${c}" && result=0 || result=$?
|
|
||||||
|
|
||||||
case ${result} in
|
|
||||||
# User chose to continue installation on an unsupported RPM based distribution
|
|
||||||
"${DIALOG_OK}")
|
|
||||||
printf " %b User opted to continue installation on an unsupported RPM based distribution.\\n" "${INFO}"
|
|
||||||
;;
|
|
||||||
# User chose not to continue installation on an unsupported RPM based distribution
|
|
||||||
"${DIALOG_CANCEL}")
|
|
||||||
printf " %b User opted not to continue installation on an unsupported RPM based distribution.\\n" "${INFO}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
"${DIALOG_ESC}")
|
|
||||||
printf " %b Escape pressed, exiting installer at unsupported RPM based distribution dialog window\\n" "${CROSS}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# A function for checking if a directory is a git repository
|
# A function for checking if a directory is a git repository
|
||||||
is_repo() {
|
is_repo() {
|
||||||
# Use a named, local variable instead of the vague $1, which is the first argument passed to this function
|
# Use a named, local variable instead of the vague $1, which is the first argument passed to this function
|
||||||
@ -2653,12 +2534,6 @@ main() {
|
|||||||
printf " %b Checking for / installing Required dependencies for this install script...\\n" "${INFO}"
|
printf " %b Checking for / installing Required dependencies for this install script...\\n" "${INFO}"
|
||||||
install_dependent_packages "${INSTALLER_DEPS[@]}"
|
install_dependent_packages "${INSTALLER_DEPS[@]}"
|
||||||
|
|
||||||
#In case of RPM based distro, select the proper PHP version
|
|
||||||
if [[ "$PKG_MANAGER" == "yum" || "$PKG_MANAGER" == "dnf" ]] ; then
|
|
||||||
select_rpm_php
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# If the setup variable file exists,
|
# If the setup variable file exists,
|
||||||
if [[ -f "${setupVars}" ]]; then
|
if [[ -f "${setupVars}" ]]; then
|
||||||
# if it's running unattended,
|
# if it's running unattended,
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
FROM centos:7
|
|
||||||
RUN yum install -y dialog git python3
|
|
||||||
|
|
||||||
ENV GITDIR /etc/.pihole
|
|
||||||
ENV SCRIPTDIR /opt/pihole
|
|
||||||
|
|
||||||
RUN mkdir -p $GITDIR $SCRIPTDIR /etc/pihole
|
|
||||||
ADD . $GITDIR
|
|
||||||
RUN cp $GITDIR/advanced/Scripts/*.sh $GITDIR/gravity.sh $GITDIR/pihole $GITDIR/automated\ install/*.sh $SCRIPTDIR/
|
|
||||||
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$SCRIPTDIR
|
|
||||||
|
|
||||||
ADD test/centos7.epel.override /etc/yum/pluginconf.d/fastestmirror.conf
|
|
||||||
RUN true && \
|
|
||||||
chmod +x $SCRIPTDIR/*
|
|
||||||
|
|
||||||
ENV SKIP_INSTALL true
|
|
||||||
ENV OS_CHECK_DOMAIN_NAME dev-supportedos.pi-hole.net
|
|
||||||
|
|
||||||
#sed '/# Start the installer/Q' /opt/pihole/basic-install.sh > /opt/pihole/stub_basic-install.sh && \
|
|
@ -1,7 +0,0 @@
|
|||||||
[main]
|
|
||||||
verbose = 0
|
|
||||||
socket_timeout = 3
|
|
||||||
enabled = 1
|
|
||||||
hostfilepath = /var/cache/yum/timedhosts.txt
|
|
||||||
maxhostfileage = 1
|
|
||||||
exclude=.edu
|
|
@ -1107,7 +1107,7 @@ def test_package_manager_has_installer_deps(host):
|
|||||||
install_dependent_packages ${INSTALLER_DEPS[@]}
|
install_dependent_packages ${INSTALLER_DEPS[@]}
|
||||||
''')
|
''')
|
||||||
|
|
||||||
assert 'No package' not in output.stdout # centos7 still exits 0...
|
assert 'No package' not in output.stdout
|
||||||
assert output.rc == 0
|
assert output.rc == 0
|
||||||
|
|
||||||
|
|
||||||
@ -1117,11 +1117,10 @@ def test_package_manager_has_pihole_deps(host):
|
|||||||
output = host.run('''
|
output = host.run('''
|
||||||
source /opt/pihole/basic-install.sh
|
source /opt/pihole/basic-install.sh
|
||||||
package_manager_detect
|
package_manager_detect
|
||||||
select_rpm_php
|
|
||||||
install_dependent_packages ${PIHOLE_DEPS[@]}
|
install_dependent_packages ${PIHOLE_DEPS[@]}
|
||||||
''')
|
''')
|
||||||
|
|
||||||
assert 'No package' not in output.stdout # centos7 still exits 0...
|
assert 'No package' not in output.stdout
|
||||||
assert output.rc == 0
|
assert output.rc == 0
|
||||||
|
|
||||||
|
|
||||||
@ -1131,9 +1130,8 @@ def test_package_manager_has_web_deps(host):
|
|||||||
output = host.run('''
|
output = host.run('''
|
||||||
source /opt/pihole/basic-install.sh
|
source /opt/pihole/basic-install.sh
|
||||||
package_manager_detect
|
package_manager_detect
|
||||||
select_rpm_php
|
|
||||||
install_dependent_packages ${PIHOLE_WEB_DEPS[@]}
|
install_dependent_packages ${PIHOLE_WEB_DEPS[@]}
|
||||||
''')
|
''')
|
||||||
|
|
||||||
assert 'No package' not in output.stdout # centos7 still exits 0...
|
assert 'No package' not in output.stdout
|
||||||
assert output.rc == 0
|
assert output.rc == 0
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
from .conftest import (
|
|
||||||
tick_box,
|
|
||||||
info_box,
|
|
||||||
mock_command,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_php_upgrade_default_optout_centos_eq_7(host):
|
|
||||||
'''
|
|
||||||
confirms the default behavior to opt-out of installing PHP7 from REMI
|
|
||||||
'''
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
|
|
||||||
'Deprecated PHP may be in use.')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert not remi_package.is_installed
|
|
||||||
|
|
||||||
|
|
||||||
def test_php_upgrade_user_optout_centos_eq_7(host):
|
|
||||||
'''
|
|
||||||
confirms installer behavior when user opt-out of installing PHP7 from REMI
|
|
||||||
(php not currently installed)
|
|
||||||
'''
|
|
||||||
# dialog returns Cancel for user prompt
|
|
||||||
mock_command('dialog', {'*': ('', '1')}, host)
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
|
|
||||||
'Deprecated PHP may be in use.')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert not remi_package.is_installed
|
|
||||||
|
|
||||||
|
|
||||||
def test_php_upgrade_user_optin_centos_eq_7(host):
|
|
||||||
'''
|
|
||||||
confirms installer behavior when user opt-in to installing PHP7 from REMI
|
|
||||||
(php not currently installed)
|
|
||||||
'''
|
|
||||||
# dialog returns Continue for user prompt
|
|
||||||
mock_command('dialog', {'*': ('', '0')}, host)
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
assert 'opt-out' not in package_manager_detect.stdout
|
|
||||||
expected_stdout = info_box + (' Enabling Remi\'s RPM repository '
|
|
||||||
'(https://rpms.remirepo.net)')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
expected_stdout = tick_box + (' Remi\'s RPM repository has '
|
|
||||||
'been enabled for PHP7')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert remi_package.is_installed
|
|
@ -1,68 +0,0 @@
|
|||||||
from .conftest import (
|
|
||||||
tick_box,
|
|
||||||
info_box,
|
|
||||||
mock_command,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_php_upgrade_default_continue_centos_gte_8(host):
|
|
||||||
'''
|
|
||||||
confirms the latest version of CentOS continues / does not optout
|
|
||||||
(should trigger on CentOS7 only)
|
|
||||||
'''
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
unexpected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS.'
|
|
||||||
' Deprecated PHP may be in use.')
|
|
||||||
assert unexpected_stdout not in package_manager_detect.stdout
|
|
||||||
# ensure remi was not installed on latest CentOS
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert not remi_package.is_installed
|
|
||||||
|
|
||||||
|
|
||||||
def test_php_upgrade_user_optout_skipped_centos_gte_8(host):
|
|
||||||
'''
|
|
||||||
confirms installer skips user opt-out of installing PHP7 from REMI on
|
|
||||||
latest CentOS (should trigger on CentOS7 only)
|
|
||||||
(php not currently installed)
|
|
||||||
'''
|
|
||||||
# dialog dialog returns Cancel for user prompt
|
|
||||||
mock_command('dialog', {'*': ('', '1')}, host)
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
unexpected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS.'
|
|
||||||
' Deprecated PHP may be in use.')
|
|
||||||
assert unexpected_stdout not in package_manager_detect.stdout
|
|
||||||
# ensure remi was not installed on latest CentOS
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert not remi_package.is_installed
|
|
||||||
|
|
||||||
|
|
||||||
def test_php_upgrade_user_optin_skipped_centos_gte_8(host):
|
|
||||||
'''
|
|
||||||
confirms installer skips user opt-in to installing PHP7 from REMI on
|
|
||||||
latest CentOS (should trigger on CentOS7 only)
|
|
||||||
(php not currently installed)
|
|
||||||
'''
|
|
||||||
# dialog dialog returns Continue for user prompt
|
|
||||||
mock_command('dialog', {'*': ('', '0')}, host)
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
assert 'opt-out' not in package_manager_detect.stdout
|
|
||||||
unexpected_stdout = info_box + (' Enabling Remi\'s RPM repository '
|
|
||||||
'(https://rpms.remirepo.net)')
|
|
||||||
assert unexpected_stdout not in package_manager_detect.stdout
|
|
||||||
unexpected_stdout = tick_box + (' Remi\'s RPM repository has '
|
|
||||||
'been enabled for PHP7')
|
|
||||||
assert unexpected_stdout not in package_manager_detect.stdout
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert not remi_package.is_installed
|
|
@ -7,23 +7,6 @@ from .conftest import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_release_supported_version_check_centos(host):
|
|
||||||
'''
|
|
||||||
confirms installer exits on unsupported releases of CentOS
|
|
||||||
'''
|
|
||||||
# modify /etc/redhat-release to mock an unsupported CentOS release
|
|
||||||
host.run('echo "CentOS Linux release 6.9" > /etc/redhat-release')
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
expected_stdout = cross_box + (' CentOS 6 is not supported.')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
expected_stdout = 'Please update to CentOS release 7 or later'
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
|
|
||||||
|
|
||||||
def test_enable_epel_repository_centos(host):
|
def test_enable_epel_repository_centos(host):
|
||||||
'''
|
'''
|
||||||
confirms the EPEL package repository is enabled when installed on CentOS
|
confirms the EPEL package repository is enabled when installed on CentOS
|
||||||
@ -31,7 +14,6 @@ def test_enable_epel_repository_centos(host):
|
|||||||
package_manager_detect = host.run('''
|
package_manager_detect = host.run('''
|
||||||
source /opt/pihole/basic-install.sh
|
source /opt/pihole/basic-install.sh
|
||||||
package_manager_detect
|
package_manager_detect
|
||||||
select_rpm_php
|
|
||||||
''')
|
''')
|
||||||
expected_stdout = info_box + (' Enabling EPEL package repository '
|
expected_stdout = info_box + (' Enabling EPEL package repository '
|
||||||
'(https://fedoraproject.org/wiki/EPEL)')
|
'(https://fedoraproject.org/wiki/EPEL)')
|
||||||
@ -40,86 +22,3 @@ def test_enable_epel_repository_centos(host):
|
|||||||
assert expected_stdout in package_manager_detect.stdout
|
assert expected_stdout in package_manager_detect.stdout
|
||||||
epel_package = host.package('epel-release')
|
epel_package = host.package('epel-release')
|
||||||
assert epel_package.is_installed
|
assert epel_package.is_installed
|
||||||
|
|
||||||
|
|
||||||
def test_php_version_lt_7_detected_upgrade_default_optout_centos(host):
|
|
||||||
'''
|
|
||||||
confirms the default behavior to opt-out of upgrading to PHP7 from REMI
|
|
||||||
'''
|
|
||||||
# first we will install the default php version to test installer behavior
|
|
||||||
php_install = host.run('yum install -y php')
|
|
||||||
assert php_install.rc == 0
|
|
||||||
php_package = host.package('php')
|
|
||||||
default_centos_php_version = php_package.version.split('.')[0]
|
|
||||||
if int(default_centos_php_version) >= 7: # PHP7 is supported/recommended
|
|
||||||
pytest.skip("Test deprecated . Detected default PHP version >= 7")
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
|
|
||||||
'Deprecated PHP may be in use.')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert not remi_package.is_installed
|
|
||||||
|
|
||||||
|
|
||||||
def test_php_version_lt_7_detected_upgrade_user_optout_centos(host):
|
|
||||||
'''
|
|
||||||
confirms installer behavior when user opt-out to upgrade to PHP7 via REMI
|
|
||||||
'''
|
|
||||||
# first we will install the default php version to test installer behavior
|
|
||||||
php_install = host.run('yum install -y php')
|
|
||||||
assert php_install.rc == 0
|
|
||||||
php_package = host.package('php')
|
|
||||||
default_centos_php_version = php_package.version.split('.')[0]
|
|
||||||
if int(default_centos_php_version) >= 7: # PHP7 is supported/recommended
|
|
||||||
pytest.skip("Test deprecated . Detected default PHP version >= 7")
|
|
||||||
# dialog returns Cancel for user prompt
|
|
||||||
mock_command('dialog', {'*': ('', '1')}, host)
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
''')
|
|
||||||
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
|
|
||||||
'Deprecated PHP may be in use.')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert not remi_package.is_installed
|
|
||||||
|
|
||||||
|
|
||||||
def test_php_version_lt_7_detected_upgrade_user_optin_centos(host):
|
|
||||||
'''
|
|
||||||
confirms installer behavior when user opt-in to upgrade to PHP7 via REMI
|
|
||||||
'''
|
|
||||||
# first we will install the default php version to test installer behavior
|
|
||||||
php_install = host.run('yum install -y php')
|
|
||||||
assert php_install.rc == 0
|
|
||||||
php_package = host.package('php')
|
|
||||||
default_centos_php_version = php_package.version.split('.')[0]
|
|
||||||
if int(default_centos_php_version) >= 7: # PHP7 is supported/recommended
|
|
||||||
pytest.skip("Test deprecated . Detected default PHP version >= 7")
|
|
||||||
# dialog returns Continue for user prompt
|
|
||||||
mock_command('dialog', {'*': ('', '0')}, host)
|
|
||||||
package_manager_detect = host.run('''
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
package_manager_detect
|
|
||||||
select_rpm_php
|
|
||||||
install_dependent_packages PIHOLE_WEB_DEPS[@]
|
|
||||||
''')
|
|
||||||
expected_stdout = info_box + (' User opt-out of PHP 7 upgrade on CentOS. '
|
|
||||||
'Deprecated PHP may be in use.')
|
|
||||||
assert expected_stdout not in package_manager_detect.stdout
|
|
||||||
expected_stdout = info_box + (' Enabling Remi\'s RPM repository '
|
|
||||||
'(https://rpms.remirepo.net)')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
expected_stdout = tick_box + (' Remi\'s RPM repository has '
|
|
||||||
'been enabled for PHP7')
|
|
||||||
assert expected_stdout in package_manager_detect.stdout
|
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert remi_package.is_installed
|
|
||||||
updated_php_package = host.package('php')
|
|
||||||
updated_php_version = updated_php_package.version.split('.')[0]
|
|
||||||
assert int(updated_php_version) == 7
|
|
||||||
|
@ -6,11 +6,8 @@ def test_epel_and_remi_not_installed_fedora(host):
|
|||||||
package_manager_detect = host.run('''
|
package_manager_detect = host.run('''
|
||||||
source /opt/pihole/basic-install.sh
|
source /opt/pihole/basic-install.sh
|
||||||
package_manager_detect
|
package_manager_detect
|
||||||
select_rpm_php
|
|
||||||
''')
|
''')
|
||||||
assert package_manager_detect.stdout == ''
|
assert package_manager_detect.stdout == ''
|
||||||
|
|
||||||
epel_package = host.package('epel-release')
|
epel_package = host.package('epel-release')
|
||||||
assert not epel_package.is_installed
|
assert not epel_package.is_installed
|
||||||
remi_package = host.package('remi-release')
|
|
||||||
assert not remi_package.is_installed
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
[tox]
|
|
||||||
envlist = py38
|
|
||||||
|
|
||||||
[testenv]
|
|
||||||
whitelist_externals = docker
|
|
||||||
deps = -rrequirements.txt
|
|
||||||
commands = docker build -f _centos_7.Dockerfile -t pytest_pihole:test_container ../
|
|
||||||
pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py ./test_centos_fedora_common_support.py ./test_centos_common_support.py ./test_centos_7_support.py
|
|
@ -5,4 +5,4 @@ envlist = py38
|
|||||||
whitelist_externals = docker
|
whitelist_externals = docker
|
||||||
deps = -rrequirements.txt
|
deps = -rrequirements.txt
|
||||||
commands = docker build -f _centos_8.Dockerfile -t pytest_pihole:test_container ../
|
commands = docker build -f _centos_8.Dockerfile -t pytest_pihole:test_container ../
|
||||||
pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py ./test_centos_fedora_common_support.py ./test_centos_common_support.py ./test_centos_8_support.py
|
pytest {posargs:-vv -n auto} ./test_any_automated_install.py ./test_any_utils.py ./test_centos_fedora_common_support.py ./test_centos_common_support.py
|
||||||
|
Loading…
Reference in New Issue
Block a user