When running regress tests, list pass/fail rate for each dir

(testsudoers and visudo) instead of the total.  Also prevent the
result files from clobbering each other by keeping them in the
relevant directories.
This commit is contained in:
Todd C. Miller
2012-08-23 14:47:58 -04:00
parent e498bab4c1
commit 6d08c4b406

View File

@@ -315,67 +315,69 @@ check: $(TEST_PROGS) visudo testsudoers
diff check_wrap.out $(srcdir)/regress/logging/check_wrap.out.ok; \
rval=`expr $$rval + $$?`; \
passed=0; failed=0; total=0; \
for t in $(srcdir)/regress/sudoers/*.in; do \
dir=`dirname $$t`; \
dirbase=`basename $$dir`; \
mkdir -p regress/sudoers; \
dir=sudoers; \
for t in $(srcdir)/regress/$$dir/*.in; do \
base=`basename $$t .in`; \
out="$${base}.out"; \
toke="$${base}.toke"; \
out="regress/sudoers/$${base}.out"; \
toke="regress/sudoers/$${base}.toke"; \
./testsudoers -dt <$$t >$$out 2>$$toke; \
if cmp $$out $$dir/$$out.ok >/dev/null; then \
if cmp $$out $(srcdir)/$$out.ok >/dev/null; then \
passed=`expr $$passed + 1`; \
echo "$$dirbase/$$base (parse): OK"; \
echo "$$dir/$$base (parse): OK"; \
else \
failed=`expr $$failed + 1`; \
echo "$$dirbase/$$base: FAIL"; \
diff $$out $$dir/$$out.ok; \
echo "$$dir/$$base: FAIL"; \
diff $$out $(srcdir)/$$out.ok; \
fi; \
total=`expr $$total + 1`; \
if cmp $$toke $$dir/$$toke.ok >/dev/null; then \
if cmp $$toke $(srcdir)/$$toke.ok >/dev/null; then \
passed=`expr $$passed + 1`; \
echo "$$dirbase/$$base (toke): OK"; \
echo "$$dir/$$base (toke): OK"; \
else \
failed=`expr $$failed + 1`; \
echo "$$dirbase/$$base (toke): FAIL"; \
diff $$out $$dir/$$out.ok; \
echo "$$dir/$$base (toke): FAIL"; \
diff $$out $(srcdir)/$$out.ok; \
fi; \
total=`expr $$total + 1`; \
done; \
echo "$$dirbase: $$passed/$$total tests passed; $$failed/$$total tests failed"; \
echo "$$dir: $$passed/$$total tests passed; $$failed/$$total tests failed"; \
rval=`expr $$rval + $$failed`; \
passed=0; failed=0; total=0; \
for t in $(srcdir)/regress/*/*.sh; do \
dir=`dirname $$t`; \
dirbase=`basename $$dir`; \
base=`basename $$t .sh`; \
out="$${base}.out"; \
err="$${base}.err"; \
TESTDIR=$$PWD/$$dir $(SHELL) $$t >$$out 2>$$err; \
if cmp $$out $$dir/$$out.ok >/dev/null; then \
passed=`expr $$passed + 1`; \
echo "$$dirbase/$$base: OK"; \
else \
failed=`expr $$failed + 1`; \
echo "$$dirbase/$$base: FAIL"; \
diff $$out $$dir/$$out.ok; \
fi; \
total=`expr $$total + 1`; \
if test -s $$dir/$$err.ok; then \
if cmp $$err $$dir/$$err.ok >/dev/null; then \
for dir in testsudoers visudo; do \
mkdir -p regress/$$dir; \
passed=0; failed=0; total=0; \
for t in $(srcdir)/regress/$$dir/*.sh; do \
base=`basename $$t .sh`; \
out="regress/$$dir/$${base}.out"; \
err="regress/$$dir/$${base}.err"; \
TESTDIR=$$PWD/$(srcdir)/regress/$$dir \
$(SHELL) $$t >$$out 2>$$err; \
if cmp $$out $(srcdir)/$$out.ok >/dev/null; then \
passed=`expr $$passed + 1`; \
echo "$$dirbase/$$base (stderr): OK"; \
echo "$$dir/$$base: OK"; \
else \
failed=`expr $$failed + 1`; \
echo "$$dirbase/$$base (stderr): FAIL"; \
diff $$out $$dir/$$out.ok; \
echo "$$dir/$$base: FAIL"; \
diff $$out $(srcdir)/$$out.ok; \
fi; \
total=`expr $$total + 1`; \
elif test -s $$err; then \
cat $$err 1>&2; \
fi; \
if test -s $(srcdir)/$$err.ok; then \
if cmp $$err $(srcdir)/$$err.ok >/dev/null; then \
passed=`expr $$passed + 1`; \
echo "$$dir/$$base (stderr): OK"; \
else \
failed=`expr $$failed + 1`; \
echo "$$dir/$$base (stderr): FAIL"; \
diff $$out $(srcdir)/$$out.ok; \
fi; \
total=`expr $$total + 1`; \
elif test -s $$err; then \
cat $$err 1>&2; \
fi; \
done; \
echo "$$dir: $$passed/$$total tests passed; $$failed/$$total tests failed"; \
rval=`expr $$rval + $$failed`; \
done; \
echo "$$dirbase: $$passed/$$total tests passed; $$failed/$$total tests failed"; \
rval=`expr $$rval + $$failed`; \
exit $$rval; \
fi