diff --git a/debian/patches/debian/tests-disable-su.patch b/debian/patches/debian/tests-disable-su.patch index 4afab768..47a0659b 100644 --- a/debian/patches/debian/tests-disable-su.patch +++ b/debian/patches/debian/tests-disable-su.patch @@ -5,14 +5,14 @@ Subject: upstream testsuite: disable su tests Debian uses su from util-linux, pointless/impossible to test shadow's su here. --- - tests/run_some | 68 ---------------------------------------------------------- + tests/tests/run_some | 68 ---------------------------------------------------- 1 file changed, 68 deletions(-) -diff --git a/tests/run_some b/tests/run_some -index c58f59b..46317eb 100755 ---- a/tests/run_some -+++ b/tests/run_some -@@ -79,74 +79,6 @@ echo "-: test failed" +diff --git a/tests/tests/run_some b/tests/tests/run_some +index 91f5626..a1e6e11 100755 +--- a/tests/tests/run_some ++++ b/tests/tests/run_some +@@ -63,74 +63,6 @@ echo "-: test failed" find "${build_path}" -name "*.gcda" -delete # ignore the result of the first test. ~magic~ run_test ./su/01/su_user.test ignore_failure diff --git a/debian/patches/debian/tests-libsubid-04_nss-fix-setting-basedir.patch b/debian/patches/debian/tests-libsubid-04_nss-fix-setting-basedir.patch index c0bf53a7..746f84a0 100644 --- a/debian/patches/debian/tests-libsubid-04_nss-fix-setting-basedir.patch +++ b/debian/patches/debian/tests-libsubid-04_nss-fix-setting-basedir.patch @@ -6,10 +6,10 @@ Subject: tests/libsubid/04_nss: fix setting basedir tests/libsubid/04_nss/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/tests/libsubid/04_nss/Makefile b/tests/libsubid/04_nss/Makefile -index 7d7ae3e..3fbf989 100644 ---- a/tests/libsubid/04_nss/Makefile -+++ b/tests/libsubid/04_nss/Makefile +Index: shadow/tests/tests/libsubid/04_nss/Makefile +=================================================================== +--- shadow.orig/tests/tests/libsubid/04_nss/Makefile ++++ shadow/tests/tests/libsubid/04_nss/Makefile @@ -1,7 +1,7 @@ all: test_nss libsubid_zzz.so @@ -19,4 +19,4 @@ index 7d7ae3e..3fbf989 100644 +basedir := $(BUILD_BASE_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 -c -I$(basedir)/lib/ -I$(basedir)-o test_nss.o test_nss.c diff --git a/debian/patches/series b/debian/patches/series index 5a27fb0f..417e25ce 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -6,6 +6,7 @@ debian/Keep-using-Debian-adduser-defaults.patch debian/Document-the-shadowconfig-utility.patch debian/Recommend-using-adduser-and-deluser.patch debian/Relax-usernames-groupnames-checking.patch +upstream/tests-Support-run_some-from-exported-tarball.patch debian/tests-disable-su.patch debian/tests-libsubid-04_nss-fix-setting-basedir.patch debian/Adapt-login.defs-for-Debian.patch diff --git a/debian/patches/upstream/tests-Support-run_some-from-exported-tarball.patch b/debian/patches/upstream/tests-Support-run_some-from-exported-tarball.patch new file mode 100644 index 00000000..bf1d74fb --- /dev/null +++ b/debian/patches/upstream/tests-Support-run_some-from-exported-tarball.patch @@ -0,0 +1,148 @@ +From: Serge Hallyn +Date: Sat, 25 May 2024 08:40:11 -0500 +Subject: 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 +--- + tests/tests/common/config.sh | 16 +++++++++------- + tests/tests/libsubid/04_nss/Makefile | 13 ++++++++----- + tests/tests/libsubid/04_nss/subidnss.test | 2 +- + tests/tests/libsubid/04_nss/test_range | 12 ++++++------ + 4 files changed, 24 insertions(+), 19 deletions(-) + +diff --git a/tests/tests/common/config.sh b/tests/tests/common/config.sh +index a2f8df0..926cdae 100644 +--- a/tests/tests/common/config.sh ++++ b/tests/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/tests/libsubid/04_nss/Makefile b/tests/tests/libsubid/04_nss/Makefile +index dd5acf7..79c2fc9 100644 +--- a/tests/tests/libsubid/04_nss/Makefile ++++ b/tests/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/tests/libsubid/04_nss/subidnss.test b/tests/tests/libsubid/04_nss/subidnss.test +index 3d40dc8..400171f 100755 +--- a/tests/tests/libsubid/04_nss/subidnss.test ++++ b/tests/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/tests/libsubid/04_nss/test_range b/tests/tests/libsubid/04_nss/test_range +index ee25080..45a791c 100755 +--- a/tests/tests/libsubid/04_nss/test_range ++++ b/tests/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