diff options
-rwxr-xr-x | source3/script/tests/test_net_registry.sh | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/source3/script/tests/test_net_registry.sh b/source3/script/tests/test_net_registry.sh index 0d5916ebba..525e13a811 100755 --- a/source3/script/tests/test_net_registry.sh +++ b/source3/script/tests/test_net_registry.sh @@ -345,6 +345,93 @@ take_administrative_rights() fi } +SED_INVALID_PARAMS="{ +s/lock directory/;&/g +s/modules dir/;&/g +s/logging/;&/g +s/status/;&/g +s/logdir/;&/g +s/read prediction/;&/g +s/mkprofile/;&/g +s/valid chars/;&/g +s/timesync/;&/g +s/sambaconf/;&/g +s/logtype/;&/g +s/servername/;&/g +}" + +REGPATH="HKLM\Software\Samba" + +conf_roundtrip_step() { + echo $* >>$LOG + $@ 2>>$LOG +# echo -n . +} + +conf_roundtrip() +{ + local DIR=$(mktemp -d --tmpdir=$PREFIX conf_roundtrip_XXXX) + local LOG=$DIR/log + + echo conf_roundtrip $1 > $LOG + + sed -e "$SED_INVALID_PARAMS" $1 >$DIR/conf_in + + conf_roundtrip_step $NET conf drop + test -z "$($NET conf list)" 2>>$LOG + if [ "$?" = "1" ]; then + echo "ERROR: conf drop failed" | tee -a $LOG + return 1 + fi + + conf_roundtrip_step $NET conf import $DIR/conf_in + conf_roundtrip_step $NET conf list > $DIR/conf_exp + + grep "\[global\]" $DIR/conf_exp >/dev/null 2>>$LOG + if [ "$?" = "1" ]; then + echo "ERROR: conf import => conf export failed" | tee -a $LOG + return 1 + fi + + conf_roundtrip_step $NET -d10 registry export $REGPATH $DIR/conf_exp.reg + + conf_roundtrip_step $NET conf drop + test -z "$($NET conf list)" 2>>$LOG + if [ "$?" = "1" ]; then + echo "ERROR: conf drop failed" | tee -a $LOG + return 1 + fi + + conf_roundtrip_step $NET registry import $DIR/conf_exp.reg + + conf_roundtrip_step $NET conf list >$DIR/conf_out + diff -q $DIR/conf_out $DIR/conf_exp >> $LOG + if [ "$?" = "1" ]; then + echo "ERROR: registry import => conf export failed" | tee -a $LOG + return 1 + fi + + conf_roundtrip_step $NET registry export $REGPATH $DIR/conf_out.reg + diff -q $DIR/conf_out.reg $DIR/conf_exp.reg >>$LOG + if [ "$?" = "1" ]; then + echo "Error: registry import => registry export failed" | tee -a $LOG + return 1 + fi + rm -r $DIR +} + +CONF_FILES=${CONF_FILES:-$(find $SRCDIR/.. -name *.conf | xargs grep -l "\[global\]")} + +for conf_file in $CONF_FILES +do + conf_file=${conf_file#$SRCDIR/} + testit "conf_roundtrip $conf_file" \ + conf_roundtrip $conf_file \ + || failed=`expr $failed + 1` +done + + + if test "x${RPC}" = "xrpc" ; then testit "giving user ${USERNAME} administrative rights" \ give_administrative_rights @@ -439,5 +526,6 @@ testit "taking administrative rights from user ${USERNAME}" \ failed=`expr $failed + 1` fi + testok $0 $failed |