From 671a55ba455dcf4e5ce6d86b202761666f54d5c6 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 17 Nov 2015 13:43:08 +0100 Subject: tests: fail testsuccess if notices are shown, too Notices are just hints, but if they are printed in tests, they should be expected and if not the test should fail. No current test has this problem, so that is just potential future proving. Git-Dch: Ignore --- test/integration/framework | 66 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 50 insertions(+), 16 deletions(-) diff --git a/test/integration/framework b/test/integration/framework index 70f06158d..ee67dd52c 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -1522,19 +1522,22 @@ msgfailoutput() { msgfail "$MSG" } -testsuccess() { - msggroup 'testsuccess' +testsuccesswithglobalerror() { + local TYPE="$1" + local ERRORS="$2" + shift 2 + msggroup "$TYPE" if [ "$1" = '--nomsg' ]; then shift else msgtest 'Test for successful execution of' "$*" fi - local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" + local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/${TYPE}.output" if "$@" >"${OUTPUT}" 2>&1; then if expr match "$1" '^apt.*' >/dev/null; then if grep -q -E ' runtime error: ' "$OUTPUT"; then msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@" - elif grep -E '^[WE]: ' "$OUTPUT" > "${TMPWORKINGDIRECTORY}/rootdir/tmp/checkforwarnings.output" 2>&1; then + elif grep -E "^[${ERRORS}]: " "$OUTPUT" > "${TMPWORKINGDIRECTORY}/rootdir/tmp/checkforwarnings.output" 2>&1; then if [ "$IGNORE_PTY_NOT_MOUNTED" = '1' ]; then if echo 'E: Can not write log (Is /dev/pts mounted?) - posix_openpt (2: No such file or directory)' \ | cmp - "${TMPWORKINGDIRECTORY}/rootdir/tmp/checkforwarnings.output" >/dev/null 2>&1; then @@ -1545,6 +1548,12 @@ testsuccess() { else msgfailoutput 'successful run, but output contains warnings/errors' "$OUTPUT" "$@" fi + elif [ "$TYPE" = 'testsuccesswithnotice' ]; then + if grep -q -E "^N: " "$OUTPUT"; then + msgpass + else + msgfailoutput 'successful run, but output had no notices' "$OUTPUT" "$@" + fi else msgpass fi @@ -1555,9 +1564,15 @@ testsuccess() { local EXITCODE=$? msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@" fi - aptautotest 'testsuccess' "$@" + aptautotest "$TYPE" "$@" msggroup } +testsuccesswithnotice() { + testsuccesswithglobalerror 'testsuccesswithnotice' 'WE' "$@" +} +testsuccess() { + testsuccesswithglobalerror 'testsuccess' 'NWE' "$@" +} testwarning() { msggroup 'testwarning' if [ "$1" = '--nomsg' ]; then @@ -1629,22 +1644,41 @@ testfailure() { testreturnstateequal() { local STATE="$1" - msggroup "${STATE}equal" - if [ "$2" != '--nomsg' ]; then - local CMP="$2" - shift 2 - "$STATE" "$@" - testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP" - else - local CMP="$3" + if [ "$STATE" = 'testsuccesswithglobalerror' ]; then + local STATE="$2" + local TYPE="$3" shift 3 - "$STATE" --nomsg "$@" - testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP" + msggroup "${STATE}equal" + if [ "$1" != '--nomsg' ]; then + local CMP="$1" + shift + testsuccesswithglobalerror "$STATE" "$TYPE" "$@" + testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP" + else + local CMP="$2" + shift 2 + testsuccesswithglobalerror "$STATE" "$TYPE" "$@" + testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP" + fi + else + msggroup "${STATE}equal" + if [ "$2" != '--nomsg' ]; then + local CMP="$2" + shift 2 + "$STATE" "$@" + testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP" + else + local CMP="$3" + shift 3 + "$STATE" --nomsg "$@" + testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP" + fi fi msggroup } testsuccessequal() { - testreturnstateequal 'testsuccess' "$@" + # we compare output, so we know perfectly well about N: + testreturnstateequal 'testsuccesswithglobalerror' 'testsuccess' 'WE' "$@" } testwarningequal() { testreturnstateequal 'testwarning' "$@" -- cgit v1.2.3