Added test to check that "make install" installs the expected set of files.

This commit is contained in:
Andrew Wood
2023-08-01 21:42:59 +01:00
parent e7e7649d2f
commit 8e3b47bf89
2 changed files with 56 additions and 0 deletions
+1
View File
@@ -1,6 +1,7 @@
0.0.20230801-UNRELEASED
* cleanup: added a test for terminal width detection to "`make test`"
* cleanup: added a test to "`make test`" to ensure that "`make install`" installs everything expected
1.7.24 - 30 July 2023
+55
View File
@@ -0,0 +1,55 @@
#!/bin/sh
#
# Test that "make install" installs the expected minimum set of files.
# Dummy assignments for "shellcheck".
testSubject="${testSubject:-false}"; workFile1="${workFile1:-.tmp1}"
makeDir="${testSubject%/*}"
if ! test -d "${makeDir}"; then
echo "could not find the directory to run \`make' in"
exit 2
fi
makeCommand=$(command -v gmake 2>/dev/null)
test -z "${makeCommand}" && makeCommand="make"
testInstallDir=$(mktemp -d)
if ! test -n "${testInstallDir}"; then
echo "failed to create temporary installation directory"
exit 2
fi
export DESTDIR="${testInstallDir}"
if ! ${makeCommand} -C "${makeDir}" install DESTDIR="${testInstallDir}" >"${workFile1}" 2>&1; then
echo "\`make install' exited $?"
rm -rf "${testInstallDir}"
exit 1
fi
exitStatus=0
if ! find "${testInstallDir}" -type f -name "pv.1*" | grep -Fq "pv.1"; then
echo "installation of man page failed"
exitStatus=1
fi
if ! find "${testInstallDir}" -type f -name "pv*" | grep -Fv "pv.1" | grep -Fq "pv"; then
echo "installation of binary failed"
exitStatus=1
fi
# Only check for message catalogue files if any were defined in the Makefile.
if grep "^CATALOGS" "${makeDir}/Makefile" 2>/dev/null | cut -d = -f 2 | grep -Fq .mo; then
if ! find "${testInstallDir}" -type f -name "*.mo" | grep -Fq ".mo"; then
echo "installation of localisation files failed"
exitStatus=1
fi
else
# There should always be some message catalogue files defined.
echo "no localisation files defined in the Makefile (\$CATALOGS is empty)"
exitStatus=1
fi
rm -rf "${testInstallDir}"
exit "${exitStatus}"
# EOF