# Process the gcc.sum file for a run through gcc.test-framework. # Print result lines that show potential problems. Report the number # of passing tests. # # # Copyright (c) 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # For a copy of the GNU General Public License, write the the # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. function pass(msg) { passes++; # printf("pass %s\n", $0); } function fail(msg) { fails++; printf("fail %s\n", $0); } function ignore(msg) { # printf("ignore %s\n", $0); } BEGIN { skip = 1; passes = 0; fails = 0; } /Running.*test-frame/ { skip = 0; next } /gcc Summary/ { skip = 1; next } { if (skip) next } /^$/ { next } # The post tests are always expected to pass. /^PASS.*-2.c/ { ignore(); next } # dg-xfail-if applies to the compile step; these should be XPASS for the # compile step on dox tests, which are run tests. /^XPASS.*dox.*xiff.*-1.c.*\(test for excess errors\)/ { ignore(); next } # xfail for scan-assembler-not tests doesn't apply to the compile step. /^PASS.*sa.*-1.c.*\(test for excess errors\)/ { ignore(); next } # ignore compile step, tests for warnings for output-exists[-not] tests. /dg-outexists.*\(test for excess errors)/ { ignore(); next } /dg-outexists.*\(test for warnings/ { ignore(); next } /dg-outexists.*\(test for errors/ { ignore(); next } # The other dox tests pass the compile step; ignore that message. /^PASS.*dox.*\(test for excess errors\)/ { ignore(); next } # The sf tests pass the compile step; ignore that message. /^PASS.*sf.*\(test for excess errors\)/ { ignore(); next } # Ignore lines that begin with comma. /^,/ { ignore(); next } # For tests of dg-output, ignore successful compilation. /^PASS.*dg-output.*\(test for excess errors\)/ { ignore(); next } # For tests of dg-output, ignore successful execution. /^PASS.*dg-output.*execution test/ { ignore(); next } /^PASS/ { if (match ($0, "exp-P")) { pass(); next } } /^FAIL/ { if (match ($0, "exp-F")) { pass(); next } } /^XPASS/ { if (match ($0, "exp-XP")) { pass(); next } } /^XFAIL/ { if (match ($0, "exp-XF")) { pass(); next } } /^UNSUPPORTED/ { if (match ($0, "exp-U")) { pass(); next } } { fail() } END { printf("\n\t\t=== Test Framework Summary ===\n\n"); printf("# of expected passes\t\t%d\n", passes); if (fails != 0) printf("# of unexpected failures\t%d\n", fails); }