File: run_some

package info (click to toggle)
shadow 1%3A4.19.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 66,808 kB
  • sloc: sh: 44,185; ansic: 34,184; xml: 12,350; exp: 3,691; makefile: 1,655; python: 1,409; perl: 120; sed: 16
file content (101 lines) | stat: -rwxr-xr-x 2,355 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/sh

set -e

export LC_ALL=C
unset LANG
unset LANGUAGE
. common/config.sh

# When we unshare -Ur, we must be able to descend the build path.
# But $HOME might not be world x.  Fix that.
fixup_home_perms() {
       p="${build_path}"
       d=""
       echo "$p" | tr '/' '\n' | while read f; do
               if [ -z "$f" ]; then
                       continue
               fi
               d="$d/$f"
               chmod ugo+x "$d"
       done
}

fixup_home_perms

USE_PAM="yes"
FAILURE_TESTS="yes"

succeeded=0
failed=0
failed_tests=""

run_test()
{
	[ -f RUN_TEST.STOP ] && exit 1

	passed=0
	if $1 > $1.log 2>&1
	then
		passed=1
	fi

	if [ -n "$2" ]; then # ignore failure
		printf '.'
	elif [ $passed -eq 1 ]; then
		succeeded=$((succeeded+1))
		printf '+'
	else
		failed=$((failed+1))
		failed_tests="$failed_tests $1"
		printf '-'
	fi
	cat $1.log >> testsuite.log
	[ -f /etc/passwd.lock ] && echo $1 /etc/passwd.lock || true
	[ -f /etc/group.lock ] && echo $1 /etc/group.lock || true
	[ -f /etc/shadow.lock ] && echo $1 /etc/shadow.lock || true
	[ -f /etc/gshadow.lock ] && echo $1 /etc/gshadow.lock || true
	[ -f /etc/gshadow.lock ] && echo $1 /etc/gshadow.lock || true
	rm -rf /tmp/test-uidmap
	if [ "$(stat -c"%G" /etc/shadow)" != "shadow" ]
	then
		echo $1
		ls -l /etc/shadow
		chgrp shadow /etc/shadow
	fi
	if [ -d /nonexistent ]
	then
		echo $1 /nonexistent
		rmdir /nonexistent
	fi
}

echo "+: test passed"
echo "-: test failed"

# Empty the complete log.
> testsuite.log

find "${build_path}" -name "*.gcda" -delete
# ignore the result of the first test.  ~magic~
run_test ./su/01/su_user.test ignore_failure
run_test ./libsubid/01_list_ranges/list_ranges.test
run_test ./libsubid/02_get_subid_owners/get_subid_owners.test
run_test ./libsubid/03_add_remove/add_remove_subids.test
run_test ./newuidmap/01_newuidmap/newuidmap.test
run_test ./newuidmap/02_newuidmap_relaxed_gid_check/newuidmap.test
run_test ./newgidmap/01_newgidmap/newgidmap.test
run_test ./newgidmap/02_newgidmap_relaxed_gid_check/newgidmap.test
run_test ./libsubid/04_nss/subidnss.test
run_test ./usertools/62_usermod_remove_supplementary_groups/usermod.test

echo
echo "$succeeded test(s) passed"
echo "$failed test(s) failed"
echo "log written in 'testsuite.log'"
if [ "$failed" != 0 ]
then
	echo "the following tests failed:"
	echo "$failed_tests"
	exit 1
fi