summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am2
-rwxr-xr-xtests/shrink-rpath-with-allowed-prefixes.sh47
2 files changed, 48 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 4290fe3..32218e8 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -21,7 +21,7 @@ no_rpath_arch_TESTS = \
src_TESTS = \
plain-fail.sh plain-run.sh shrink-rpath.sh set-interpreter-short.sh \
set-interpreter-long.sh set-rpath.sh no-rpath.sh big-dynstr.sh \
- set-rpath-library.sh soname.sh
+ set-rpath-library.sh soname.sh shrink-rpath-with-allowed-prefixes.sh
build_TESTS = \
$(no_rpath_arch_TESTS)
diff --git a/tests/shrink-rpath-with-allowed-prefixes.sh b/tests/shrink-rpath-with-allowed-prefixes.sh
new file mode 100755
index 0000000..db24da2
--- /dev/null
+++ b/tests/shrink-rpath-with-allowed-prefixes.sh
@@ -0,0 +1,47 @@
+#! /bin/sh -e
+SCRATCH=scratch/$(basename $0 .sh)
+
+rm -rf ${SCRATCH}
+mkdir -p ${SCRATCH}
+mkdir -p ${SCRATCH}/libsA
+mkdir -p ${SCRATCH}/libsB
+
+cp main ${SCRATCH}/
+cp libfoo.so libbar.so ${SCRATCH}/libsA/
+cp libfoo.so libbar.so ${SCRATCH}/libsB/
+
+oldRPath=$(../src/patchelf --print-rpath ${SCRATCH}/main)
+if test -z "$oldRPath"; then oldRPath="/oops"; fi
+pathA="$(pwd)/${SCRATCH}/libsA"
+pathB="$(pwd)/${SCRATCH}/libsB"
+../src/patchelf --force-rpath --set-rpath $oldRPath:$pathA:$pathB ${SCRATCH}/main
+
+cp ${SCRATCH}/main ${SCRATCH}/mainA
+cp ${SCRATCH}/main ${SCRATCH}/mainB
+
+../src/patchelf --shrink-rpath ${SCRATCH}/main
+../src/patchelf --shrink-rpath --allowed-rpath-prefixes $oldRPath:$pathA ${SCRATCH}/mainA
+../src/patchelf --shrink-rpath --allowed-rpath-prefixes $oldRPath:$pathB ${SCRATCH}/mainB
+
+check() {
+ exe=$1
+ mustContain=$2
+ mustNotContain=$3
+
+ rpath=$(../src/patchelf --print-rpath $exe)
+ echo "RPATH of $exe after: $rpath"
+
+ if ! echo "$rpath" | grep -q $mustContain; then
+ echo "RPATH didn't contain '$mustContain' when it should have"
+ exit 1
+ fi
+
+ if echo "$rpath" | grep -q $mustNotContain; then
+ echo "RPATH contained '$mustNotContain' when it shouldn't have"
+ exit 1
+ fi
+}
+
+check ${SCRATCH}/main $pathA $pathB
+check ${SCRATCH}/mainA $pathA $pathB
+check ${SCRATCH}/mainB $pathB $pathA