summaryrefslogtreecommitdiffstats
path: root/tests/run-tests.sh
blob: 5915dfe53c7a877ece3ad91d462296b6acd58f4f (plain)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/sh
source ${builddir:-.}/slapd.sh
probably=
compare()
{
	probably=
	if ! cmp -s "$@" ; then
		if diff -u -i "$@" > /dev/null 2> /dev/null ; then
			probably="(probably)"
		fi
	fi
	diff -u -i "$@" > /dev/null 2> /dev/null
}
showdiff()
{
	base1=`basename "$1"`
	base2=`basename "$2"`
	diff -u "$@" | \
	sed -r -e "s,^--- .*/(.*),--- \1,g" -e "s,^\+\+\+ .*/(.*),+++ \1,g"
}
settle()
{
	sleep 5
}
for subdir in "$@" ; do
	pushd $subdir > /dev/null
	TEST="$subdir"
	precmd=
	if ! $TESTS_USE_REFINT ; then
		if test -s $TESTDIR/$TEST/plugin-need-refint.txt ; then
			echo Skipping "$TEST", needs the refint plugin.
			continue
		fi
	fi
	if ! $TESTS_USE_MEMBEROF ; then
		if test -s $TESTDIR/$TEST/plugin-need-memberof.txt ; then
			echo Skipping "$TEST", needs the memberof plugin.
			continue
		fi
	fi
	if ! $TESTS_USE_MANAGED_ENTRIES ; then
		if test -s $TESTDIR/$TEST/plugin-need-mep.txt ; then
			echo Skipping "$TEST", needs the managed entries plugin.
			continue
		fi
	fi
	if ! $TESTS_USE_BETXN ; then
		if test -s $TESTDIR/$TEST/plugin-need-betxn.txt ; then
			echo Skipping "$TEST", needs backend transaction support.
			continue
		fi
	fi
	if test -s $TESTDIR/$TEST/plugin-need-wrappers.txt ; then
		if ! test -s ${BTESTDIR}/wrappers.so ; then
			echo Skipping "$TEST", needs test wrappers.
			continue
		fi
	fi
	if test -x edit-dse-config.sh ; then
		precmd="$TESTDIR/$subdir/edit-dse-config.sh $BTESTDIR/config/dse.ldif"
	fi
	startslapd $TESTDIR/$subdir/dse.ldif $TESTDIR/$subdir/userRoot.ldif "$precmd"
	if test -s $TESTDIR/$TEST/plugin-need-wrappers.txt ; then
		ENVCMD="`cat $TESTDIR/$TEST/plugin-need-wrappers.txt`"
		ENVCMD=env\ `eval echo $ENVCMD`
	else
		ENVCMD=
	fi
	if test -x $TESTDIR/$subdir/before.sh ; then
		settle
		$ENVCMD $TESTDIR/$subdir/before.sh > before.out 2>&1
		if test -r $TESTDIR/$subdir/before.txt ; then
			if ! compare $TESTDIR/$subdir/before.txt before.out ; then
				echo `basename "$subdir"`:
				showdiff $TESTDIR/$subdir/before.txt before.out
				stopslapd
				exit 1
			fi
		fi
	fi
	if test -x $TESTDIR/$subdir/change.sh ; then
		settle
		$ENVCMD $TESTDIR/$subdir/change.sh > change.out 2>&1
		if test -r $TESTDIR/$subdir/change.txt ; then
			if ! compare $TESTDIR/$subdir/change.txt change.out ; then
				echo `basename "$subdir"`:
				showdiff $TESTDIR/$subdir/change.txt change.out
				stopslapd
				exit 1
			fi
		fi
	fi
	if test -x $TESTDIR/$subdir/after.sh ; then
		settle
		$ENVCMD $TESTDIR/$subdir/after.sh > after.out 2>&1
		if test -r $TESTDIR/$subdir/after.txt ; then
			if ! compare $TESTDIR/$subdir/after.txt after.out ; then
				echo `basename "$subdir"`:
				showdiff $TESTDIR/$subdir/after.txt after.out
				stopslapd
				exit 1
			fi
		fi
	fi
	if ! test -r $TESTDIR/$subdir/before.txt ; then
		if ! test -r $TESTDIR/$subdir/after.txt ; then
			if test -x $TESTDIR/$subdir/post.sh ; then
				if ! $TESTDIR/$subdir/post.sh $TESTDIR/$subdir/before.out $TESTDIR/$subdir/after.out ; then
					echo `basename "$subdir"`:
					showdiff $TESTDIR/$subdir/before.out after.out
					stopslapd
					exit 1
				fi
			fi
		fi
	fi
	stopslapd
	popd > /dev/null
	if test -s $TESTDIR/$subdir/description.txt ; then
		echo `basename $subdir`" ("`head -n 1 $TESTDIR/$subdir/description.txt`")": $probably OK
	else
		echo `basename $subdir`: $probably OK
	fi
done
exit 0