diff --git a/functions b/functions index 2ba3c9220d..f24cc89e82 100644 --- a/functions +++ b/functions @@ -932,7 +932,7 @@ function is_package_installed() { fi if [[ "$os_PACKAGE" = "deb" ]]; then - dpkg -l "$@" > /dev/null 2> /dev/null + dpkg -s "$@" > /dev/null 2> /dev/null elif [[ "$os_PACKAGE" = "rpm" ]]; then rpm --quiet -q "$@" else diff --git a/tests/functions.sh b/tests/functions.sh index 27a6cfeec4..7d486d4cc5 100755 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -367,3 +367,25 @@ if [[ "$VAL" -ne 0 ]]; then else echo "is_package_installed() on non-existing package failed" fi + +# test against removed package...was a bug on Ubuntu +if is_ubuntu; then + PKG=cowsay + if ! (dpkg -s $PKG >/dev/null 2>&1); then + # it was never installed...set up the condition + sudo apt-get install -y cowsay >/dev/null 2>&1 + fi + if (dpkg -s $PKG >/dev/null 2>&1); then + # remove it to create the 'un' status + sudo dpkg -P $PKG >/dev/null 2>&1 + fi + + # now test the installed check on a deleted package + is_package_installed $PKG + VAL=$? + if [[ "$VAL" -ne 0 ]]; then + echo "OK" + else + echo "is_package_installed() on deleted package failed" + fi +fi