From 8a0b7dfb0cc39b9cdac10b073d7dbe30fd5cd177 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Sat, 7 Nov 2026 08:42:38 -1000 Subject: Make the home access test see a rendered page Nothing checked that the traced request worked, and one that failed early opened fewer files and passed. cgit unsets HOME, so a read that fell back on the account's entry in the password database would name that home rather than the missing one the test set. Under Valgrind every test would have failed, as strace follows valgrind into the .valgrindrc it reads from the home directory. --- tests/t0302-home-access.sh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'tests/t0302-home-access.sh') diff --git a/tests/t0302-home-access.sh b/tests/t0302-home-access.sh index 0c0fcd2..3d49deb 100755 --- a/tests/t0302-home-access.sh +++ b/tests/t0302-home-access.sh @@ -22,14 +22,30 @@ test_have_prereq STRACE || { test_done } +# Valgrind reads a .valgrindrc from the home directory itself, and strace +# would follow it there. +test -z "$CGIT_TEST_VALGRIND" || { + skip_all='Skipping access validation tests: strace would trace valgrind' + test_done +} + +# cgit unsets HOME before git starts, so a read that fell back on the home +# directory in the password database would name that one instead. +passwd_home=$(getent passwd "$(id -u)" 2>/dev/null | cut -d: -f6) + +# The page has to render, as a request that fails early opens fewer files, and +# the config cgit was handed shows that its calls made it into the trace. test_no_home_access() { missing_home=/path/to/some/place/that/does/not/possibly/exist && strace \ -E HOME="$missing_home" \ -E CGIT_CONFIG="$PWD/cgitrc" \ -E QUERY_STRING="url=$1" \ - -e trace=%file -f -o strace.out cgit && - ! grep "$missing_home" strace.out + -e trace=%file -f -o strace.out cgit >page && + grep "^Status: 200" page && + grep -F "\"$PWD/cgitrc\"" strace.out && + ! grep "$missing_home" strace.out && + { test -z "$passwd_home" || ! grep -F "\"$passwd_home/." strace.out; } } test_no_home_access_success() { -- cgit 2.12.1