Modify the output for 'make check' to be much less verbose, and thus
authorMichael Urman <mu@tortall.net>
Wed, 16 Mar 2005 05:26:35 +0000 (05:26 -0000)
committerMichael Urman <mu@tortall.net>
Wed, 16 Mar 2005 05:26:35 +0000 (05:26 -0000)
much easier to see the bad news when necessary. Thanks go to Peter for
updates to the C tests. Kudos to him having us send most of our tests
through a single shell script!

svn path=/trunk/yasm/; revision=1203

libyasm/tests/bitvect_test.c
libyasm/tests/floatnum_test.c
out_test.sh

index 19d11bad5ca38feadf16475027f35d25864cb715..3887046c70332ee5e46ba96911feec3d465c86de 100644 (file)
@@ -147,19 +147,22 @@ test_oct_large_num(void)
     return 0;
 }
 
+char failed[1000];
+
 static int
 runtest_(const char *testname, int (*testfunc)(void), void (*setup)(void),
         void (*teardown)(void))
 {
     int nf;
-    printf("bitvect_test: Testing libyasm bitvect for %s ... ", testname);
-    fflush(stdout);
     if (setup)
        setup();
     nf = testfunc();
     if (teardown)
        teardown();
-    printf("%s.\n", nf>0 ? "FAIL":"PASS");
+    printf("%c", nf>0 ? 'F':'.');
+    fflush(stdout);
+    if (nf > 0)
+       sprintf(failed, "%s ** F: %s failed!\n", failed, testname);
     return nf;
 }
 #define runtest(x,y,z) runtest_(#x,test_##x,y,z)
@@ -168,10 +171,13 @@ int
 main(void)
 {
     int nf = 0;
+
+    failed[0] = '\0';
+    printf("Test bitvect_test: ");
     nf += runtest(boot, NULL, NULL);
     nf += runtest(oct_small_num, num_family_setup, num_family_teardown);
     nf += runtest(oct_large_num, num_family_setup, num_family_teardown);
-    printf("bitvect_test: %d%%: Checks: 3, Failures: %d\n",
-          100*(3-nf)/3, nf);
+    printf(" +%d-%d/3 %d%%\n%s",
+          3-nf, nf, 100*(3-nf)/3, failed);
     return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
 }
index 421292b0fe97fec76dbecf29576cbaffc939bb39..48a20d8ad901cf2c41f435b1439fb98fd01f84ca 100644 (file)
@@ -402,19 +402,22 @@ test_get_extended_normalized_edgecase(void)
     return 0;
 }
 
+char failed[1000];
+
 static int
 runtest_(const char *testname, int (*testfunc)(void), void (*setup)(void),
         void (*teardown)(void))
 {
     int nf;
-    printf("floatnum_test: Testing for %s ... ", testname);
-    fflush(stdout);
     if (setup)
        setup();
     nf = testfunc();
     if (teardown)
        teardown();
-    printf("%s.\n", nf>0 ? "FAIL":"PASS");
+    printf("%c", nf>0 ? 'F':'.');
+    fflush(stdout);
+    if (nf > 0)
+       sprintf(failed, "%s ** F: %s failed!\n", failed, testname);
     return nf;
 }
 #define runtest(x,y,z) runtest_(#x,test_##x,y,z)
@@ -426,6 +429,9 @@ main(void)
     if (BitVector_Boot() != ErrCode_Ok)
        return EXIT_FAILURE;
     yasm_floatnum_initialize();
+
+    failed[0] = '\0';
+    printf("Test floatnum_test: ");
     nf += runtest(new_normalized, NULL, NULL);
     nf += runtest(new_normalized_edgecase, NULL, NULL);
     nf += runtest(get_single_normalized, get_family_setup, get_family_teardown);
@@ -434,7 +440,7 @@ main(void)
     nf += runtest(get_double_normalized_edgecase, get_family_setup, get_family_teardown);
     nf += runtest(get_extended_normalized, get_family_setup, get_family_teardown);
     nf += runtest(get_extended_normalized_edgecase, get_family_setup, get_family_teardown);
-    printf("floatnum_test: %d%%: Checks: 8, Failures: %d\n",
-          100*(3-nf)/3, nf);
+    printf(" +%d-%d/8 %d%%\n%s",
+          8-nf, nf, 100*(8-nf)/8, failed);
     return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
 }
index 4583fc7a3ff0851ccce6a28c70c5ce7ed63d8a18..9687859988f193d839e8a02e59aee8b45e615542 100755 (executable)
@@ -16,8 +16,8 @@ mkdir results >/dev/null 2>&1
 
 passedct=0
 failedct=0
-errorct=0
 
+echo $ECHO_N "Test $1: "
 for asm in ${srcdir}/$2/*.asm
 do
     a=`echo ${asm} | sed 's,^.*/,,;s,.asm$,,'`
@@ -27,35 +27,32 @@ do
     e=${a}.ew
     eg=`echo ${asm} | sed 's,.asm$,.errwarn,'`
 
-    echo $ECHO_N "$1: Testing $3 for ${a} return value ... $ECHO_C"
     # Run within a subshell to prevent signal messages from displaying.
-    sh -c "cat ${asm} | ./yasm $4 -o results/${o} 2>results/${e}" 2>/dev/null
+    sh -c "cat ${asm} | ./yasm $4 -o results/${o} 2>results/${e}" >/dev/null 2>/dev/null
     status=$?
     if test $status -gt 128; then
        # We should never get a coredump!
-       echo "FAIL (crashed)."
+       echo $ECHO_N "C"
+        eval "failed$failedct='C: ${a} crashed!'"
        failedct=`expr $failedct + 1`
     elif test $status -gt 0; then
        echo ${asm} | grep err >/dev/null
                if test $? -gt 0; then
            # YASM detected errors but shouldn't have!
-           echo "FAIL."
+           echo $ECHO_N "E"
+            eval "failed$failedct='E: ${a} returned an error code!'"
            failedct=`expr $failedct + 1`
        else
-           echo "PASS."
-           passedct=`expr $passedct + 1`
-           echo $ECHO_N "$1: Testing $3 for ${a} error/warnings ... $ECHO_C"
            # We got errors, check to see if they match:
-           #cat ${e} | sed "s,${srcdir}/,./," >${e}.2
-           #mv ${e}.2 ${e}
            diff -w ${eg} results/${e} > /dev/null
            if test $? -eq 0; then
                # Error/warnings match, it passes!
-               echo "PASS."
+               echo $ECHO_N "."
                passedct=`expr $passedct + 1`
            else
                # Error/warnings don't match.
-               echo "FAIL."
+               echo $ECHO_N "W"
+                eval "failed$failedct='W: ${a} did not match errors and warnings!'"
                failedct=`expr $failedct + 1`
            fi
        fi
@@ -63,42 +60,43 @@ do
        echo ${asm} | grep -v err >/dev/null
                if test $? -gt 0; then
            # YASM detected errors but shouldn't have!
-           echo "FAIL."
+           echo $ECHO_N "E"
+            eval "failed$failedct='E: ${a} returned an error code!'"
            failedct=`expr $failedct + 1`
        else
-           echo "PASS."
-           passedct=`expr $passedct + 1`
-           echo $ECHO_N "$1: Testing $3 for ${a} output file ... $ECHO_C"
            ./test_hd results/${o} > results/${oh}
            diff ${og} results/${oh} > /dev/null
            if test $? -eq 0; then
-               echo "PASS."
-               passedct=`expr $passedct + 1`
-               echo $ECHO_N "$1: Testing $3 for ${a} error/warnings ... $ECHO_C"
-               #cat ${e} | sed "s,${srcdir}/,./," >${e}.2
-               #mv ${e}.2 ${e}
                diff -w ${eg} results/${e} > /dev/null
                if test $? -eq 0; then
                    # Both object file and error/warnings match, it passes!
-                   echo "PASS."
+                   echo $ECHO_N "."
                    passedct=`expr $passedct + 1`
                else
                    # Error/warnings don't match.
-                   echo "FAIL."
+                   echo $ECHO_N "W"
+                    eval "failed$failedct='W: ${a} did not match errors and warnings!'"
                    failedct=`expr $failedct + 1`
                fi
            else
                # Object file doesn't match.
-               echo "FAIL."
+               echo $ECHO_N "O"
+                eval "failed$failedct='O: ${a} did not match object file!'"
                failedct=`expr $failedct + 1`
            fi
        fi
     fi
 done
 
-ct=`expr $failedct + $passedct + $errorct`
+ct=`expr $failedct + $passedct`
 per=`expr 100 \* $passedct / $ct`
 
-echo "$1: $per%: Checks: $ct, Failures $failedct, Errors: $errorct"
+echo " +$passedct-$failedct/$ct $per%"
+i=0
+while test $i -lt $failedct; do
+    eval "failure=\$failed$i"
+    echo " ** $failure"
+    i=`expr $i + 1`
+done
 
-exit `expr $failedct + $errorct`
+exit $failedct