Blame checkmk/test/check_checkmk

Packit 0b5880
#!/usr/bin/env sh
Packit 0b5880
Packit 0b5880
TESTS_RUN=0
Packit 0b5880
TESTS_PASSED=0
Packit 0b5880
TESTS_FAILED=0
Packit 0b5880
Packit 0b5880
TEST_DIRS='empty_input pass_thru single_test_line basic_complete'
Packit 0b5880
TEST_DIRS="$TEST_DIRS multiple_everything between_the_lines"
Packit 0b5880
TEST_DIRS="$TEST_DIRS repeated_suites repeated_tcases repeated_tests"
Packit 0b5880
TEST_DIRS="$TEST_DIRS not_really_repeated tcase_implied_repeat"
Packit 0b5880
TEST_DIRS="$TEST_DIRS case_insensitive_pp trailing_ws non_word_chars"
Packit 0b5880
TEST_DIRS="$TEST_DIRS test_chars num_start_test_name"
Packit 0b5880
TEST_DIRS="$TEST_DIRS no_args clean_mode declarations test_after_main_pre"
Packit 0b5880
TEST_DIRS="$TEST_DIRS main_pre_multiple main_post main_pre_after_post"
Packit 0b5880
TEST_DIRS="$TEST_DIRS test_after_main_post main_post_multiple ucn"
Packit 0b5880
TEST_DIRS="$TEST_DIRS invalid_ucn argument_ws repeated_argument_tests"
Packit 0b5880
Packit 0b5880
check_dir() {
Packit 0b5880
    status=0
Packit 0b5880
Packit 0b5880
    checkmkdir=$PWD
Packit 0b5880
    outdir="test.out/$1"
Packit 0b5880
    testdir="$srcdir/test/$1"
Packit 0b5880
Packit 0b5880
    if ! mkdir -p "$outdir"
Packit 0b5880
    then
Packit 0b5880
        echo "Couldn't make path \"$outdir\"!"
Packit 0b5880
    fi
Packit 0b5880
    outdir=$(cd "$outdir" && pwd)
Packit 0b5880
Packit 0b5880
    if ! cd "$testdir"
Packit 0b5880
    then
Packit 0b5880
        echo "Couldn't chdir to \"$testdir\"!"
Packit 0b5880
    fi
Packit 0b5880
Packit 0b5880
    # set up expected input/output file names
Packit 0b5880
    infname=in
Packit 0b5880
    outfname="$outdir/output"
Packit 0b5880
    errfname="$outdir/err"
Packit 0b5880
    diffname="$outdir/diff"
Packit 0b5880
    errdiffname="$outdir/err-diff"
Packit 0b5880
    CHECKMK="$checkmkdir/checkmk"
Packit 0b5880
    checkmk_cmd='"$CHECKMK" "$infname" > "$outfname" 2>"$errfname"'
Packit 0b5880
Packit 0b5880
    rm -f "$outfname" "$errfname" "$diffname" "$errdiffname"
Packit 0b5880
Packit 0b5880
    # source local versions, if available.
Packit 0b5880
    [ -r ./cmd ] && . ./cmd
Packit 0b5880
Packit 0b5880
    # Check output.
Packit 0b5880
    eval "$checkmk_cmd"
Packit 0b5880
    ckstat=$?
Packit 0b5880
Packit 0b5880
    if ! diff -c "x_output" "$outfname" > "$diffname"
Packit 0b5880
    then
Packit 0b5880
        echo "Unexpected output differences:"
Packit 0b5880
        cat "$diffname"
Packit 0b5880
        status=1
Packit 0b5880
    fi
Packit 0b5880
Packit 0b5880
    # Check stderr.
Packit 0b5880
    if [ -s x_err ]
Packit 0b5880
    then
Packit 0b5880
        if ! diff -c "x_err" "$errfname" > "$errdiffname"
Packit 0b5880
        then
Packit 0b5880
            echo "Unexpected error differences:"
Packit 0b5880
            cat "$errdiffname"
Packit 0b5880
            status=1
Packit 0b5880
        fi
Packit 0b5880
    elif [ -s err ]
Packit 0b5880
    then
Packit 0b5880
        echo "Unexpected text from standard error:"
Packit 0b5880
        echo "------------------------------------"
Packit 0b5880
        cat "$errfname"
Packit 0b5880
        echo "------------------------------------"
Packit 0b5880
        status=1
Packit 0b5880
    fi
Packit 0b5880
Packit 0b5880
    # Check status.
Packit 0b5880
    xstat=0
Packit 0b5880
    if [ -e "x_exit" ]
Packit 0b5880
    then
Packit 0b5880
        xstat=`cat x_exit`
Packit 0b5880
    elif [ -s "x_err" ]
Packit 0b5880
    then
Packit 0b5880
        xstat=1
Packit 0b5880
    fi
Packit 0b5880
Packit 0b5880
    if [ $xstat != $ckstat ]
Packit 0b5880
    then
Packit 0b5880
        echo "Expected exit status of $xstat, but got $ckstat."
Packit 0b5880
        status=1
Packit 0b5880
    fi
Packit 0b5880
Packit 0b5880
    return $status
Packit 0b5880
}
Packit 0b5880
Packit 0b5880
pass_dir() {
Packit 0b5880
    echo "Test $1 passed."
Packit 0b5880
    TESTS_PASSED=$(($TESTS_PASSED+1))
Packit 0b5880
}
Packit 0b5880
Packit 0b5880
fail_dir() {
Packit 0b5880
    echo "Test $1 FAILED."
Packit 0b5880
    TESTS_FAILED=$(($TESTS_FAILED+1))
Packit 0b5880
}
Packit 0b5880
Packit 0b5880
echo "These are the tests for the checkmk program."
Packit 0b5880
echo
Packit 0b5880
echo "===================="
Packit 0b5880
echo "   Test Run Start"
Packit 0b5880
echo "===================="
Packit 0b5880
echo
Packit 0b5880
Packit 0b5880
for dir in $TEST_DIRS
Packit 0b5880
do
Packit 0b5880
    echo "Running test $dir..."
Packit 0b5880
    if ( check_dir $dir )
Packit 0b5880
    then
Packit 0b5880
        pass_dir $dir
Packit 0b5880
    else
Packit 0b5880
        fail_dir $dir
Packit 0b5880
    fi
Packit 0b5880
    TESTS_RUN=$(($TESTS_RUN+1))
Packit 0b5880
    echo
Packit 0b5880
done
Packit 0b5880
Packit 0b5880
echo "===================="
Packit 0b5880
echo " Test Run Complete"
Packit 0b5880
echo "===================="
Packit 0b5880
echo "Total:  $TESTS_RUN"
Packit 0b5880
echo "Passed: $TESTS_PASSED"
Packit 0b5880
echo "Failed: $TESTS_FAILED"
Packit 0b5880
Packit 0b5880
if [ "$TESTS_FAILED" -gt 0 ]
Packit 0b5880
then
Packit 0b5880
    echo
Packit 0b5880
    echo "****************************************"
Packit 0b5880
    echo "          TEST RUN FAILED!!!!"
Packit 0b5880
    echo "****************************************"
Packit 0b5880
    exit 1;
Packit 0b5880
fi
Packit 0b5880
echo