diff --git a/lib/util/regress/harness.in b/lib/util/regress/harness.in index f12215612..05fd2983f 100755 --- a/lib/util/regress/harness.in +++ b/lib/util/regress/harness.in @@ -1,9 +1,24 @@ #!/bin/sh # +# Copyright (c) 2022 Todd C. Miller +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# # Simple test harness for libsudo_util tests. # usage: harness [-v] test_group [test_name ...] # srcdir="@abs_srcdir@" +builddir="@abs_builddir@" SHELL=@SHELL@ verbose=0 rval=0 @@ -24,37 +39,38 @@ fi group="$1" shift srcdir=${srcdir%"/regress"} +builddir=${builddir%"/regress"} -if [ ! -d "$srcdir/regress/$group" ]; then - echo "missing test group: $srcdir/regress/$group" >&2 +cd $srcdir || exit 1 + +if [ ! -d "regress/$group" ]; then + echo "missing test group: regress/$group" >&2 exit 1 fi -mkdir -p "regress/$group" +mkdir -p "$builddir/regress/$group" if [ $# -eq 0 ]; then tests= - for t in $srcdir/regress/$group/*.in; do + for t in regress/$group/*.in; do tests="$tests `basename $t .in`" done set -- $tests fi -build_dir=`pwd` -cd $srcdir while [ $# -ne 0 ]; do test="$1" shift in="regress/$group/${test}.in" - out="$build_dir/regress/$group/${test}.out" + out="$builddir/regress/$group/${test}.out" out_ok="regress/$group/${test}.out.ok" - err="$build_dir/regress/$group/${test}.err" + err="$builddir/regress/$group/${test}.err" err_ok="regress/$group/${test}.err.ok" if [ "$group" = "sudo_conf" ]; then - $build_dir/conf_test $in >$out 2>$err + $builddir/conf_test $in >$out 2>$err else - $build_dir/parseln_test <$in >$out 2>$err + $builddir/parseln_test <$in >$out 2>$err fi ntests=`expr $ntests + 1` diff --git a/plugins/sudoers/regress/harness.in b/plugins/sudoers/regress/harness.in index 5b4021f12..caa8b63ba 100755 --- a/plugins/sudoers/regress/harness.in +++ b/plugins/sudoers/regress/harness.in @@ -1,9 +1,24 @@ #!/bin/sh # +# Copyright (c) 2022 Todd C. Miller +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# # Simple test harness for sudoers tests. # usage: harness [-v] test_group [test_name ...] # srcdir="@abs_srcdir@" +builddir="@abs_builddir@" SHELL=@SHELL@ verbose=0 rval=0 @@ -24,15 +39,16 @@ fi group="$1" shift srcdir=${srcdir%"/regress"} +builddir=${builddir%"/regress"} if [ ! -d "$srcdir/regress/$group" ]; then - echo "missing test group: $srcdir/regress/$group" >&2 + echo "missing test group: regress/$group" >&2 exit 1 fi case "$group" in sudoers) - mkdir -p "regress/$group" + mkdir -p "$builddir/regress/$group" if [ $# -eq 0 ]; then tests= for t in $srcdir/regress/$group/*.in; do @@ -44,83 +60,88 @@ sudoers) test="$1" shift in="$srcdir/regress/sudoers/${test}.in" - out="regress/sudoers/${test}.out" - toke="regress/sudoers/${test}.toke" - json="regress/sudoers/${test}.json" - ldif="regress/sudoers/${test}.ldif" - sudo="regress/sudoers/${test}.sudo" - ldif2sudo="regress/sudoers/${test}.ldif2sudo" + out="$builddir/regress/sudoers/${test}.out" + out_ok="$srcdir/regress/sudoers/${test}.out.ok" + toke="$builddir/regress/sudoers/${test}.toke" + toke_ok="$srcdir/regress/sudoers/${test}.toke.ok" + json="$builddir/regress/sudoers/${test}.json" + json_ok="$srcdir/regress/sudoers/${test}.json.ok" + ldif="$builddir/regress/sudoers/${test}.ldif" + ldif_ok="$srcdir/regress/sudoers/${test}.ldif.ok" + ldif2sudo="$builddir/regress/sudoers/${test}.ldif2sudo" + ldif2sudo_ok="$srcdir/regress/sudoers/${test}.ldif2sudo.ok" + sudo="$builddir/regress/sudoers/${test}.sudo" - ./testsudoers -dt <$in >$out 2>$toke || true + $builddir/testsudoers -dt <$in >$out 2>$toke || true ntests=`expr $ntests + 1` - if cmp $out $srcdir/$out.ok >/dev/null; then + if cmp $out $out_ok >/dev/null; then if [ $verbose -eq 1 ]; then echo "$group/$test (parse): OK" fi else errors=`expr $errors + 1` echo "$group/$test (parse): FAIL" - diff $out $srcdir/$out.ok || true + diff $out $out_ok || true fi ntests=`expr $ntests + 1` - if cmp $toke $srcdir/$toke.ok >/dev/null; then + if cmp $toke $toke_ok >/dev/null; then if [ $verbose -eq 1 ]; then echo "$group/$test (toke): OK" fi else errors=`expr $errors + 1` echo "$group/$test (toke): FAIL" - diff $toke $srcdir/$toke.ok || true + diff $toke $toke_ok || true fi - ./cvtsudoers -c "" -f json $in >$json 2>/dev/null || true + $builddir/cvtsudoers -c "" -f json $in >$json 2>/dev/null || true ntests=`expr $ntests + 1` - if cmp $json $srcdir/$json.ok >/dev/null; then + if cmp $json $json_ok >/dev/null; then if [ $verbose -eq 1 ]; then echo "$group/$test (json): OK" fi else errors=`expr $errors + 1` echo "$group/$test (json): FAIL" - diff $json $srcdir/$json.ok || true + diff $json $json_ok || true fi SUDOERS_BASE="ou=SUDOers,dc=sudo,dc=ws" \ - ./cvtsudoers -c "" -f ldif < $in >$ldif 2>/dev/null || true + $builddir/cvtsudoers -c "" -f ldif < $in >$ldif 2>/dev/null || true ntests=`expr $ntests + 1` - if cmp $ldif $srcdir/$ldif.ok >/dev/null; then + if cmp $ldif $ldif_ok >/dev/null; then if [ $verbose -eq 1 ]; then echo "$group/$test (ldif): OK" fi else errors=`expr $errors + 1` echo "$group/$test: (ldif) FAIL" - diff $ldif $srcdir/$ldif.ok || true + diff $ldif $ldif_ok || true fi - ./cvtsudoers -c "" -f sudoers $in >$sudo 2>/dev/null || true + $builddir/cvtsudoers -c "" -f sudoers $in >$sudo 2>/dev/null || true ntests=`expr $ntests + 1` - if ./visudo -qcf $sudo; then + if $builddir/visudo -qcf $sudo; then if [ $verbose -eq 1 ]; then echo "$group/$test (reparse): OK" fi else errors=`expr $errors + 1` echo "$group/$test: (reparse) FAIL" - ./visudo -cf $sudo || true + $builddir/visudo -cf $sudo || true fi - if test -s $srcdir/$ldif.ok; then - ./cvtsudoers -c "" -i ldif -f sudoers $srcdir/$ldif.ok >$ldif2sudo || true + if test -s $ldif_ok; then + $builddir/cvtsudoers -c "" -i ldif -f sudoers $ldif_ok >$ldif2sudo || true ntests=`expr $ntests + 1` - if cmp $ldif2sudo $srcdir/$ldif2sudo.ok >/dev/null; then + if cmp $ldif2sudo $ldif2sudo_ok >/dev/null; then if [ $verbose -eq 1 ]; then echo "$group/$test (ldif2sudo): OK" fi else errors=`expr $errors + 1` echo "$group/$test: (ldif2sudo) FAIL" - diff $ldif $srcdir/$ldif.ok || true + diff $ldif $ldif_ok || true fi fi done @@ -131,9 +152,9 @@ sudoers) fi ;; *) - TESTSUDOERS=./testsudoers; export TESTSUDOERS - VISUDO=./visudo; export VISUDO - CVTSUDOERS=./cvtsudoers; export CVTSUDOERS + TESTSUDOERS=$builddir/testsudoers; export TESTSUDOERS + VISUDO=$builddir/visudo; export VISUDO + CVTSUDOERS=$builddir/cvtsudoers; export CVTSUDOERS mkdir -p "regress/$group" if [ $# -eq 0 ]; then tests= @@ -147,12 +168,14 @@ sudoers) shift cmd="$srcdir/regress/$group/${test}.sh" - out="regress/$group/${test}.out" - err="regress/$group/${test}.err" + out="$builddir/regress/$group/${test}.out" + out_ok="$srcdir/regress/$group/${test}.out.ok" + err="$builddir/regress/$group/${test}.err" + err_ok="$srcdir/regress/$group/${test}.err.ok" status=0 TESTDIR=$srcdir/regress/$group $SHELL $cmd >$out 2>$err || status=$? ntests=`expr $ntests + 1` - if cmp $out $srcdir/$out.ok >/dev/null; then + if cmp $out $out_ok >/dev/null; then if test $status -eq 0; then if [ $verbose -eq 1 ]; then echo "$group/$test: OK" @@ -164,18 +187,18 @@ sudoers) else errors=`expr $errors + 1` echo "$group/$test: FAIL" - diff $out $srcdir/$out.ok || true + diff $out $out_ok || true fi - if test -s $srcdir/$err.ok; then + if test -s $err_ok; then ntests=`expr $ntests + 1` - if cmp $err $srcdir/$err.ok >/dev/null; then + if cmp $err $err_ok >/dev/null; then if [ $verbose -eq 1 ]; then echo "$group/$test (stderr): OK" fi else errors=`expr $errors + 1` echo "$group/$test (stderr): FAIL" - diff $err $srcdir/$err.ok || true + diff $err $err_ok || true fi elif test -s $err; then errors=`expr $errors + 1`