]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
tests/: Support run_some from exported tarball
authorSerge Hallyn <serge@hallyn.com>
Sat, 25 May 2024 13:40:11 +0000 (08:40 -0500)
committerAlejandro Colomar <alx@kernel.org>
Wed, 26 Jun 2024 22:09:27 +0000 (00:09 +0200)
common/config.sh currently tries to find the top directory by looking
for .git.  There are also many places under tests/ where we use
hard-coded ../../.. to find things like ${TOP_DIR}/lib.

We don't actually ship the tests with 'make dist'.  So we will
be exporting tests/ as a separate tarball.  In particular, I want
to then import this in the debian package.  However, there it will
be under shadow.git/debian/tests, not shadow.git/tests.

To support this, accept the environment variable BUILD_BASE_DIR,
which should point to shadow.git.

An alternative would be to move the tests to their own git
tree.  However, keeping tests in separate git tree tends to
lead to repos getting out of sync.  And we'd still need to accept
something like BUILD_BASE_DIR.

Note there are a lot of tests under run-all, which I'm not converting
as they currently are not being run in CI, so I'm more likely to
break something.

Changelog:
  2024 05 26: Incorporate feedback from alejandro-colomar

Link: <https://salsa.debian.org/debian/shadow/-/merge_requests/21>
Link: <https://salsa.debian.org/debian/shadow/-/merge_requests/22>
Cc: Chris Hofstaedtler <zeha@debian.org>
Signed-off-by: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Cherry-picked-from: d55367bb161b ("tests/: Support run_some from exported tarball")
Signed-off-by: Alejandro Colomar <alx@kernel.org>
tests/common/config.sh
tests/libsubid/04_nss/Makefile
tests/libsubid/04_nss/subidnss.test
tests/libsubid/04_nss/test_range

index a2f8df030e2da58cfd3a4ee4e323e4f15836783b..926cdae553c77a8c4c3e36b14540ee6a146856a2 100644 (file)
@@ -2,14 +2,16 @@
 
 set -e
 
-build_path=$(pwd)
-while [ "${build_path}" != "/" -a ! -e "${build_path}/.git" ]; do
-       build_path=$(dirname ${build_path})
-done
-if [ ! -e "${build_path}/.git" ]; then
-       echo "Not inside git directory" 1>&2
-       exit 1
+if [ -n "${BUILD_BASE_DIR}" ]; then
+    build_path="${BUILD_BASE_DIR}"
+else
+    build_path=$(git rev-parse --show-toplevel)
 fi
+if [ -z "${build_path}" ]; then
+    echo "Failed to find build base path"
+    exit 1
+fi
+export build_path
 
 # Save the configuration files in tmp.
 save_config ()
index dd5acf7283c7031a3cbeb79feade083bd1c3f4e5..79c2fc9dc01dcea65203a60f325fe5b61658cdf4 100644 (file)
@@ -1,12 +1,15 @@
 all: test_nss libsubid_zzz.so
 
-test_nss: test_nss.c ../../../lib/nss.c
-       gcc -c -I../../../lib/ -I../../.. -o test_nss.o test_nss.c
-       gcc -o test_nss test_nss.o ../../../lib/.libs/libshadow.a -ldl
+BASE_TEST_DIR ?= $(shell git rev-parse --show-toplevel)
+basedir := $(BASE_TEST_DIR)
+
+test_nss: test_nss.c $(basedir)/lib/nss.c
+       gcc -c -I$(basedir)/lib/ -I$(basedir)-o test_nss.o test_nss.c
+       gcc -o test_nss test_nss.o $(basedir)/lib/.libs/libshadow.a -ldl
 
 libsubid_zzz.so: libsubid_zzz.c
-       gcc -c -I../../../lib/ -I../../.. -I../../../libsubid libsubid_zzz.c
-       gcc -L../../../libsubid -shared -o libsubid_zzz.so libsubid_zzz.o ../../../lib/.libs/libshadow.a -ldl
+       gcc -c -I$(basedir)/lib/ -I$(basedir) -I$(basedir)/libsubid libsubid_zzz.c
+       gcc -L$(basedir)/libsubid -shared -o libsubid_zzz.so libsubid_zzz.o $(basedir)/lib/.libs/libshadow.a -ldl
 
 clean:
        rm -f *.o *.so test_nss
index 3d40dc8c70c3f8bebb2aa5c5e6da7e59a16eae83..400171fa880e449240249cb8c88630cca29fb5d7 100755 (executable)
@@ -9,7 +9,7 @@ cd $(dirname $0)
 
 make
 
-export LD_LIBRARY_PATH=.:../../../lib/.libs:$LD_LIBRARY_PATH
+export LD_LIBRARY_PATH=.:${build_path}/lib/.libs:$LD_LIBRARY_PATH
 
 ./test_nss 1
 ./test_nss 2
index ee25080f19c7908b4575217ce79d00e7e8509787..45a791c746ce4c9d73345973305a0c35cb315c0a 100755 (executable)
@@ -11,23 +11,23 @@ cleanup1() {
     umount /etc/nsswitch.conf
 }
 trap cleanup1 EXIT HUP INT TERM
-../../../src/check_subid_range user1 u 100000 65535
+${build_path}/src/check_subid_range user1 u 100000 65535
 if [ $? -ne 0 ]; then
     exit 1
 fi
-../../../src/check_subid_range user2 u 100000 65535
+${build_path}/src/check_subid_range user2 u 100000 65535
 if [ $? -eq 0 ]; then
     exit 1
 fi
-../../../src/check_subid_range unknown u 100000 65535
+${build_path}/src/check_subid_range unknown u 100000 65535
 if [ $? -eq 0 ]; then
     exit 1
 fi
-../../../src/check_subid_range error u 100000 65535
+${build_path}/src/check_subid_range error u 100000 65535
 if [ $? -eq 0 ]; then
     exit 1
 fi
-../../../src/check_subid_range user1 u 1000 65535
+${build_path}/src/check_subid_range user1 u 1000 65535
 if [ $? -eq 0 ]; then
     exit 1
 fi
@@ -43,7 +43,7 @@ cleanup2() {
     umount /etc/nsswitch.conf
 }
 trap cleanup2 EXIT HUP INT TERM
-../../../src/check_subid_range user1 u 100000 65535
+${build_path}/src/check_subid_range user1 u 100000 65535
 if [ $? -eq 0 ]; then
     exit 1
 fi