From: Serge Hallyn Date: Sat, 25 May 2024 13:40:11 +0000 (-0500) Subject: tests/: Support run_some from exported tarball X-Git-Tag: 4.15.3~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=79ce7adda3f5c78fdd99f82abaacd9f2dca59604;p=thirdparty%2Fshadow.git tests/: Support run_some from exported tarball 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: Link: Cc: Chris Hofstaedtler Signed-off-by: Serge Hallyn Signed-off-by: Alejandro Colomar Cherry-picked-from: d55367bb161b ("tests/: Support run_some from exported tarball") Signed-off-by: Alejandro Colomar --- diff --git a/tests/common/config.sh b/tests/common/config.sh index a2f8df030..926cdae55 100644 --- a/tests/common/config.sh +++ b/tests/common/config.sh @@ -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 () diff --git a/tests/libsubid/04_nss/Makefile b/tests/libsubid/04_nss/Makefile index dd5acf728..79c2fc9dc 100644 --- a/tests/libsubid/04_nss/Makefile +++ b/tests/libsubid/04_nss/Makefile @@ -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 diff --git a/tests/libsubid/04_nss/subidnss.test b/tests/libsubid/04_nss/subidnss.test index 3d40dc8c7..400171fa8 100755 --- a/tests/libsubid/04_nss/subidnss.test +++ b/tests/libsubid/04_nss/subidnss.test @@ -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 diff --git a/tests/libsubid/04_nss/test_range b/tests/libsubid/04_nss/test_range index ee25080f1..45a791c74 100755 --- a/tests/libsubid/04_nss/test_range +++ b/tests/libsubid/04_nss/test_range @@ -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