blob: 8702a394510bc4cb4ca1654196f3f9b79a33d1ab [file] [log] [blame] [edit]
#! /bin/sh
# Script to test a directory listing. We use this to verify that the list of
# files installed by "make install" or "cmake --install" matches what we expect.
set -e
# Ensure stable ordering of `sort` output
LANG=C
LC_ALL=C
export LANG LC_ALL
if [ "$1" = "" -o "$2" = "" ] ; then
echo "Usage: $0 <dir> <manifest name> [<build type>]" >&2
exit 1
fi
input_dir="$1"
expected_manifest="$2"
build_type="${3:-release}"
actual_file=`basename $expected_manifest`.actual
expected_file=`basename $expected_manifest`.expected
sed=sed
# Helper for Solaris
if [ -f /usr/bin/gsed ] ; then
sed=/usr/bin/gsed
fi
find "$input_dir" -print | \
sort | \
xargs -n1 -- ls -l -d -n | \
$sed -E -e 's/ {2,}/ /g' | \
cut -d' ' -f '1,9-' \
> "$actual_file"
# The CMake install is a bit annoying now. Its installed files are actually
# dependent on the build type. So, if the build type is not "release", we need
# to modify the expected manifest to match the actual one.
cat "$expected_manifest" | \
$sed -E -e "s/pcre2-targets-release.cmake/pcre2-targets-$build_type.cmake/" \
> "$expected_file"
if ! diff -u "$expected_file" "$actual_file"; then
echo "Installed files differ from expected"
echo "===Actual==="
cat "$actual_file"
echo "===End==="
exit 1
fi
echo "Installed files match expected"
rm -f "$actual_file" "$expected_file"