Files
common/count.pl
Patrick McCarty c18abdb9db Initial import
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2017-12-22 22:51:05 -08:00

1060 lines
34 KiB
Perl

#!/usr/bin/perl
#
# count.pl - part of common developer tooling
#
# Copyright 2015-2017 Intel Corporation
#
# This program 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 3 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.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
my %testcount;
my %testpass;
my %testfail;
my %testxfail;
my %testskip;
my $pkg_has_test = 0;
my $total_tests;
my $total_pass;
my $total_fail;
my $total_xfail;
my $total_skip;
my $counted_tests;
my $counted_pass;
my $counted_fail;
my $counted_xfail;
my $counted_skip;
my $name, $v, $r;
sub parse_log
{
my ($fn) = @_;
my $incheck = 0;
open(my $log, "<", "$fn") or return 0;
while (<$log>) {
my $line = $_;
chomp($line);
if ($line =~ /Executing\(%check\)/) {
$incheck = 1;
}
if ($line =~ /\+ make check/) {
$incheck = 1;
}
if ($line =~ /##### Testing packages\./) {
$incheck = 1;
}
if ($line =~ /CLR-XTEST: Package: (.*)/) {
my $n = $1;
sanitize_counts();
collect_output();
$name = $n;
}
# ACL package
# [22] $ rm -Rf d -- ok-
# 17 commands (17 passed, 0 failed)-
if ($line =~ /\[[0-9]+\].*\-\- ok/) {
$counted_pass++;
}
if ($line =~ /[0-9]+ commands \(([0-9]+) passed, ([0-9]+) failed\)/) {
$total_pass += $1;
$total_fail += $2;
}
# alembic package
#Ran 678 tests in 5.175s
#OK (SKIP=15)
if ($line =~ /Ran ([0-9]+) tests? in/) {
$total_tests += $1;
next;
}
if ($line =~ /OK \(SKIP=([0-9]+)\)/) {
$total_skip += $1;
next;
} elsif ($line =~ /OK \(skipped=([0-9]+)\)/) {
$total_skip += $1;
next;
}
# anyjson
# test_implementations.test_default_serialization ... ok
# note: configure false positive
if ($line =~ /\.\.\. ok$/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /\.\.\. skipped$/ and $incheck == 1) {
$counted_skip++;
next;
}
# apr
# testatomic : SUCCESS
#
if ($line =~ /\: SUCCESS$/ and $incheck == 1) {
$counted_pass++;
next;
}
# cryptography
# ================= 76230 passed, 267 skipped in 140.23 seconds ==================
# ==== 47 passed, 2 error in 10.36 seconds ===
# ================ 10 failed, 16 passed, 4 error in 0.16 seconds =================
# ========================== 43 passed in 2.90 seconds ===========================
# ======= 28 failed, 281 passed, 13 skipped, 10 warnings in 28.48 seconds ========
# ===================== 5 failed, 318 passed in 1.06 seconds =====================
# ============= 1628 passed, 72 skipped, 4 xfailed in 146.26 seconds =============
# =============== 119 passed, 2 skipped, 54 error in 2.19 seconds ================
# ========== 1 failed, 74 passed, 10 skipped, 55 error in 2.05 seconds ===========
# ==================== 68 passed, 1 warnings in 0.12 seconds =====================
# ================ 3 failed, 250 passed, 3 error in 3.28 seconds =================
# =============== 1 failed, 407 passed, 10 skipped in 4.71 seconds ===============
if ($line =~ /== ([0-9]+) passed, ([0-9]+) skipped in / and $incheck == 1) {
$total_pass += $1;
$total_skip += $2;
next;
}
if ($line =~ /== ([0-9]+) passed, ([0-9]+) skipped, ([0-9]+) xfailed in / and $incheck == 1) {
$total_pass += $1;
$total_skip += $2;
$total_xfail += $3;
next;
}
if ($line =~ /== ([0-9]+) passed, ([0-9]+) skipped, ([0-9]+) error in / and $incheck == 1) {
$total_pass += $1;
$total_skip += $2;
$total_fail += $3;
next;
}
if ($line =~ /== ([0-9]+) failed, ([0-9]+) passed, ([0-9]+) skipped, ([0-9]+) error in / and $incheck == 1) {
$total_pass += $2;
$total_skip += $3;
$total_fail += $4 + $1;
next;
}
if ($line =~ /== ([0-9]+) failed, ([0-9]+) passed, ([0-9]+) error in / and $incheck == 1) {
$total_pass += $2;
$total_fail += $3 + $1;
next;
}
if ($line =~ /== ([0-9]+) passed, ([0-9]+) error in / and $incheck == 1) {
$total_pass += $1;
$total_fail += $2;
next;
}
if ($line =~ /== ([0-9]+) passed, ([0-9]+) warnings in / and $incheck == 1) {
$total_pass += $1;
$total_fail += $2;
next;
}
if ($line =~ /== ([0-9]+) failed, ([0-9]+) passed in / and $incheck == 1) {
$total_pass += $2;
$total_fail += $1;
next;
}
if ($line =~ /== ([0-9]+) failed, ([0-9]+) passed, ([0-9]+) xfailed in / and $incheck == 1) {
$total_pass += $2;
$total_fail += $1;
$total_xfail += $3;
next;
}
if ($line =~ /== ([0-9]+) failed, ([0-9]+) passed, ([0-9]+) skipped, ([0-9]+) warnings in / and $incheck == 1) {
$total_pass += $2;
$total_fail += ($1+$4);
$total_skip += $3;
next;
}
if ($line =~ /== ([0-9]+) passed in [0-9\.]+ seconds ====/ and $incheck == 1) {
$total_pass += $1;
$total_skip += $2;
next;
}
if ($line =~ /== ([0-9]+) failed, ([0-9]+) passed, ([0-9]+) skipped in [0-9\.]+ seconds ====/ and $incheck == 1) {
$total_pass += $2;
$total_fail += $1;
$total_skip += $3;
next;
}
# swift
# ========= 1 failed, 1287 passed, 1 warnings, 62 error in 35.77 seconds =========
if ($line =~ /== ([0-9]+) failed\, ([0-9]+) passed\, ([0-9]+) warnings\, ([0-9]+) error in / and $incheck == 1) {
$total_fail += ($1 + $3 + $4);
$total_pass += $2;
next;
}
# tox
# ======== 199 passed, 38 skipped, 1 xpassed, 1 warnings in 5.76 seconds =========
if ($line =~/== ([0-9]+) passed\, ([0-9]+) skipped\, ([0-9]+) xpassed\, ([0-9]) warnings in / and $incheck == 1) {
$total_pass += $1;
$total_skip += $2;
$total_xfail += $3;
$total_fail += $4;
next;
}
# augeas
# TOTAL: 215
# PASS: 212
# SKIP: 3
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
if ($line =~ /# TOTAL: +([0-9]+)/ and $incheck == 1) {
$total_tests += $1;
}
if ($line =~ /# PASS: +([0-9]+)/ and $incheck == 1) {
$total_pass += $1;
}
if ($line =~ /# SKIP: +([0-9]+)/ and $incheck == 1) {
$total_skip += $1;
}
if ($line =~ /# FAIL: +([0-9]+)/ and $incheck == 1) {
$total_fail += $1;
}
if ($line =~ /# XFAIL: +([0-9]+)/ and $incheck == 1) {
$total_xfail += $1;
}
if ($line =~ /# XPASS: +([0-9]+)/ and $incheck == 1) {
$total_pass += $1;
}
# autoconf
# 493 tests behaved as expected.
# 10 tests were skipped.
# 495: AC_FUNC_STRNLEN ok
# 344: Erlang skipped (erlang.at:30)
# 26: autoupdating macros recursively expected failure (tools.at:945)
if ($line =~ /^([0-9]+) tests behaved as expected/ and $incheck == 1) {
$total_pass += $1;
}
if ($line =~ /^([0-9]+) tests were skipped/ and $incheck == 1) {
$total_skip += $1;
}
if ($line =~ /^[0-9]+\:.*ok$/ and $incheck == 1) {
$counted_pass++;
}
if ($line =~ /^[0-9]+\:.*skipped \(/ and $incheck == 1) {
$counted_skip++;
}
if ($line =~ /^[0-9]+\:.*expected failure \(/ and $incheck == 1) {
$counted_xfail++;
}
# bison
# 470 tests were successful.
if ($line =~ /^([0-9]+) tests were successful/ and $incheck == 1) {
$total_pass += $1;
}
# binutils
# of expected passes 1144
# of expected failures 57
# of untested testcases 1
# of unsupported tests 12
if ($line =~ /^# of expected passes.*\t([0-9]+)/ and $incheck == 1) {
$total_pass += $1;
}
if ($line =~ /^# of expected failures.*\t([0-9]+)/ and $incheck == 1) {
$total_xfail += $1;
}
if ($line =~ /^# of unexpected failures.*\t([0-9]+)/ and $incheck == 1) {
$total_fail += $1;
}
if ($line =~ /^# of unsupported tests.*\t([0-9]+)/ and $incheck == 1) {
$total_skip += $1;
}
# ccache
# PASSED: 448 assertions, 88 tests, 10 suites
if ($line =~ /PASSED: [0-9]+ assertions, ([0-9]+) tests, [0-9]+ suites/ and $incheck == 1) {
$total_pass += $1;
}
# rubygem-rack
# 701 tests, 2292 assertions, 0 failures, 0 errors
if ($line =~ /([0-9]+) tests, [0-9]+ assertions, ([0-9]+) failures, ([0-9])+ errors/ and $incheck == 1) {
$total_pass += $1;
$total_fail += $2;
$total_fail += $3;
}
# curl
# TESTDONE: 686 tests out of 686 reported OK: 100%
if ($line =~ /TESTDONE: ([0-9]+) tests out of ([0-9]+) reported OK: / and $incheck == 1) {
$total_tests += $1;
$total_pass += $2;
}
# gcc
# All 4 tests passed
# PASS: test-strtol-16.
if ($line =~ /All ([0-9]+) tests passed/ and $incheck == 1) {
$total_tests += $1;
$total_pass += $1;
}
if ($line =~/^PASS\:/ and $incheck == 1) {
$counted_pass++;
}
if ($line =~/^FAIL\:/ and $incheck == 1) {
$counted_fail++;
}
# gdbm
# All 22 tests were successful.
if ($line =~ /All ([0-9]+) tests were successful./ and $incheck == 1) {
$total_tests += $1;
$total_pass += $1;
}
# glibc
# 3 FAIL
# 2182 PASS
# 1 UNRESOLVED
# 199 XFAIL
# 3 XPASS
if ($line =~ /^\s*([0-9]+) FAIL$/ and $incheck == 1) {
$total_fail += $1;
}
if ($line =~ /^\s*([0-9]+) PASS$/ and $incheck == 1) {
$total_pass += $1;
}
if ($line =~ /^\s*([0-9]+) XFAIL$/ and $incheck == 1) {
$total_xfail += $1;
}
if ($line =~ /^\s*([0-9]+) XPAS$/ and $incheck == 1) {
$total_pass += $1;
}
# libxml2
# Total 2908 tests, no errors
# Total: 1171 functions, 291083 tests, 0 errors
if ($line =~ /Total ([0-9]+) tests, no errors/ and $incheck == 1) {
$total_pass += $1;
}
if ($line =~ /Total: ([0-9]+) functions, ([0-9]+) tests, 0 errors/ and $incheck == 1) {
$total_pass += $1
}
# zlib
# *** zlib shared test OK ***
if (line =~ /\*\*\* .* test OK \*\*\*/ and $incheck == 1) {
$counted_pass++;
}
# e2fsprogs
# 153 tests succeeded 0 tests failed
if ($line =~ /([0-9]+) tests succeeded\s*([0-9]+) tests failed/ and $incheck == 1) {
$total_pass += $1;
$total_fail += $2;
}
# expect
# all.tcl: Total 29 Passed 29 Skipped 0 Failed 0
if ($line =~ /.*:\s*Total\s+([0-9]+)\s+Passed\s+([0-9]+)\s+Skipped\s+([0-9]+)\s+Failed\s+([0-9]+)/ and $incheck == 1) {
$total_tests += $1;
$total_pass += $2;
$total_skip += $3;
$total_fail += $4;
}
# expat
# 100%: Checks: 50, Failed: 0
if ($line =~ /100%: Checks: ([0-9]+), Failed: ([0-9]+)/ and $incheck == 1) {
$total_pass += $1 - $2;
$total_fail += $2;
}
# flex
#Tests succeeded: 47
#Tests FAILED: 0
if ($line =~/^Tests succeeded: ([0-9]+)/ and $incheck == 1 and $incheck == 1) {
$total_pass += $1;
}
if ($line =~/^Tests FAILED: ([0-9]+)/ and $incheck == 1) {
$total_fail += $1;
}
# this one catches the generic TAP format!
# perl-Capture-tiny
# ok 580 - tee_merged|sys|stderr|short - got STDERR
if ($line =~ /^ok [0-9]+ \-/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /^not ok [0-9]+ \-/ and $incheck == 1) {
if ($line =~ /# TODO known breakage/) {
$counted_xfail++;
} else {
$counted_fail++;
}
next;
}
if ($line =~ /^ok [0-9]+$/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /^not ok [0-9]+$/ and $incheck == 1) {
$counted_fail++;
next;
}
# tcpdump
# 0 tests failed
# 154 tests passed
if ($line =~ /^\s+([0-9]+) tests failed$/ and $incheck == 1) {
$total_fail += $1;
}
if ($line =~ /^\s+([0-9]+) tests passed$/ and $incheck == 1) {
$total_pass += $1;
}
# R packages
# * checking top-level files ... OK
if ($line =~ /\* .* \.\.\. OK/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /\* .* \.\.\. PASSED\./ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /\* .* \.\.\. SKIPPED/ and $incheck == 1) {
$counted_skip++;
}
# python
# 365 tests OK.
# 22 tests skipped:
if ($line =~ /^([0-9]+) tests skipped:$/ and $incheck == 1) {
$total_skip += $1;
}
if ($line =~ /^([0-9]+) tests OK.$/ and $incheck == 1) {
$total_pass += $1;
}
#jemalloc
# Test suite summary: pass: 30/33, skip: 3/33, fail: 0/33
if ($line =~ /Test suite summary: pass: ([0-9]+)\/([0-9]+), skip: ([0-9]+)\/([0-9]+), fail: ([0-9]+)\/([0-9]+)/ and $incheck == 1) {
$total_pass += $1;
$total_tests += $2;
$total_skip += $3;
$total_fail += $5;
}
# util-linux
# All 160 tests PASSED
if ($line =~ / All ([0-9]+) tests PASSED$/ and $incheck == 1) {
$total_pass += $1;
}
# onig
# OK: // 'a'
if ($line =~ /^OK\: / and $incheck == 1) {
$counted_pass++;
}
# nss
# cert.sh: #101: Import chain-2-serverCA-ec CA -t u,u,u for localhost.localdomain (ext.) - PASSED
# Passed: 13036
# Failed: 6
# Failed with core: 0
# Unknown status: 0
if ($line =~ /^[a-z]+.sh: #[0-9]+: .* - PASSED$/ and $incheck == 1) {
$counted_pass++;
}
if ($line =~ /^[a-z]+.sh: #[0-9]+: .* - FAILED$/ and $incheck == 1) {
$counted_fail++;
}
if ($line =~ /^Passed:\s+([0-9]+)$/ and $incheck == 1) {
$total_pass += $1;
}
if ($line =~ /^Failed:\s+([0-9]+)$/ and $incheck == 1) {
$total_fail += $1;
}
if ($line =~ /^Failed with core:\s+([0-9]+)$/ and $incheck == 1) {
$total_fail += $1;
}
# rsync
# 34 passed
# 5 skipped
if ($line =~ /^\s+([0-9]+) passed$/ and $incheck == 1) {
$total_pass += $1;
}
if ($line =~ /^\s+([0-9]+) skipped$/ and $incheck == 1) {
$total_skip += $1;
}
# mariadb
# 100% tests passed, 0 tests failed out of 53
if ($line =~ /tests passed, ([0-9]+) tests failed out of ([0-9]+)/ and $incheck == 1) {
$total_fail += $1;
$total_tests += $2;
$total_pass += $2 - $1;
next;
}
# python-runtime-tests
# FAILED (KNOWNFAIL=6, SKIP=18, errors=6)
# FAILED (failures=1)
# FAILED (failures=1, errors=499, skipped=48)
# OK (KNOWNFAIL=5, SKIP=15)
if ($line =~ /FAILED \(KNOWNFAIL=([0-9]+), SKIP=([0-9]+), errors=([0-9]+)\)/ and $incheck == 1) {
$total_xfail += $1;
$total_skip += $2;
$total_fail += $3;
next;
}
if ($line =~ /FAILED \(failures=([0-9]+), errors=([0-9]+), skipped=([0-9]+)\)/ and $incheck == 1) {
$total_xfail += $2;
$total_skip += $3;
$total_fail += $1;
next;
}
if ($line =~ /FAILED \(failures=([0-9]+), errors=([0-9]+)\)/ and $incheck == 1) {
$total_xfail += $2;
$total_fail += $1;
next;
}
if ($line =~ /FAILED \(failures=([0-9]+)\)/ and $incheck == 1) {
$total_fail += $1;
next;
}
if ($line =~ /FAILED \(errors=([0-9]+)\)/ and $incheck == 1) {
$total_xfail += $1;
next;
}
if ($line =~ /OK \(KNOWNFAIL=([0-9]+), SKIP=([0-9]+)\)/ and $incheck == 1) {
$total_xfail += $1;
$total_skip += $2;
}
# qpid-python
# Totals: 318 tests, 200 passed, 112 skipped, 0 ignored, 6 failed
if ($line =~ /Totals: ([0-9]+) tests, ([0-9]+) passed, ([0-9]+) skipped, ([0-9]+) ignored, ([0-9]+) failed/ and $incheck == 1) {
$total_tests += $1;
$total_pass += $2;
$total_skip += $3;
$total_xfail += $4;
$total_fail += $5;
}
# PyYAML
# TESTS: 2577
if ($line =~ /^TESTS: ([0-9]+)$/ and $incheck == 1) {
$total_tests += $1;
}
# sudo
# visudo: 7/7 tests passed; 0/7 tests failed
# check_symbols: 7 tests run, 0 errors, 100% success rate
if ($line =~ /[a-z_]+\:\s+([0-9]+)\/[0-9]+ tests passed; ([0-9]+)\/[0-9]+ tests failed/ and $incheck == 1) {
$total_pass += $1;
$total_fail += $2;
}
if ($line =~ /[a-z_]+\: ([0-9]+) tests run, ([0-9]+) errors/ and $incheck == 1) {
$total_tests += $1;
$total_fail += $2;
$total_pass += $1 - $2;
}
# R
# running code in 'reg-examples1.R' ... OK
# Status: 1 ERROR, 1 WARNING, 4 NOTEs
# OK: 749 SKIPPED: 4 FAILED: 2
if ($line =~ /running code in '.*\.R' \.\.. OK/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /Status: ([0-9]+) ERROR, ([0-9]+) WARNING, ([0-9]+) NOTEs/ and $incheck == 1) {
$total_fail += $1;
}
if ($line =~ /OK: ([0-9]+) SKIPPED: ([0-9]+) FAILED: ([0-9]+)/ and $incheck == 1) {
$total_pass += $1;
$total_fail += $3;
$total_skip += $2;
}
# php
# Number of tests : 13526 9794
# Tests skipped : 3732 ( 27.6%) --------
# Tests warned : 0 ( 0.0%) ( 0.0%)
# Tests failed : 12 ( 0.1%) ( 0.1%)
# Expected fail : 31 ( 0.2%) ( 0.3%)
# Tests passed : 9751 ( 72.1%) ( 99.6%)
if ($line =~ /^Number of tests : ([0-9]+)/ and $incheck == 1) {
$total_tests += $1;
}
if ($line =~ /^Tests skipped :\s+([0-9]+) \(/ and $incheck == 1) {
$total_skip += $1;
}
if ($line =~ /^Tests failed :\s+([0-9]+) \(/ and $incheck == 1) {
$total_fail += $1;
}
if ($line =~ /^Expected fail :\s+([0-9]+) \(/ and $incheck == 1) {
$total_xfail += $1;
}
if ($line =~ /^Tests passed :\s+([0-9]+) \(/ and $incheck == 1) {
$total_pass += $1;
}
# rubygem / rake
# 174 runs, 469 assertions, 0 failures, 0 errors, 0 skips
if ($line =~ /([0-9]+) runs, ([0-9]+) assertions, ([0-9]+) failures, ([0-9]+) errors, ([0-9]+) skips/ and $incheck == 1) {
$total_tests += $1;
$total_fail += $3;
$total_skip += $5;
}
# cryptsetup
# [OK]
if ($incheck == 1 && $line =~ / \[OK\]$/ and $incheck == 1) {
$counted_pass++;
}
# lzo
# test passed.
if ($line =~ / test passed.$/ and $incheck == 1) {
$counted_pass++;
next;
}
# lsof
# LTnlink ... OK
# LTnfs ... ERROR!!!
if ($line =~ /^LT[a-zA-Z0-9]+ \.\.\. OK$/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /^LT[a-zA-Z0-9]+ \.\.\. ERROR\!\!\!/ and $incheck == 1) {
$counted_fail++;
next;
}
# libaio
# Pass: 11 Fail: 1
if ($line =~ /^Pass: ([0-9]+) Fail: ([0-9]+)$/ and $incheck == 1) {
$total_pass += $1;
$total_fail += $1;
next;
}
# gawk
if ($line =~ /^ALL TESTS PASSED$/ and $incheck == 1) {
$total_pass++;
next;
}
# gptfdisk
# **SUCCESS** ...
if ($line =~ /^\*\*SUCCESS\*\*/ and $incheck == 1) {
$counted_pass++;
next;
}
# boost
# **passed** ...
# 8 errors detected.
if ($line =~ /^\*\*passed\*\*/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~/([0-9]+) errors? detected\.?/ and $incheck == 1) {
$total_fail += $1;
next;
}
if ($line =~/([0-9]+) failures? detected\.?/ and $incheck == 1) {
$total_fail += $1;
next;
}
# make
# 534 Tests in 118 Categories Complete ... No Failures
if ($line =~ /([0-9]+) Tests in ([0-9]+) Categories Complete ... No Failures/ and $incheck == 1) {
$total_tests += $1;
$total_pass += $1;
}
# icu4c ---[OK]
if ($line =~ /---\[OK\]/ and $incheck == 1) {
$counted_pass++;
next;
}
# libxslt
# Pass 1
if ($line =~ /^Pass [0-9]+$/ and $incheck == 1) {
$counted_pass++;
next;
}
# apr-util
# : SUCCESS
if ($line =~ /: SUCCESS$/ and $incheck == 1) {
$counted_pass++;
next;
}
# bash
# < Failed 126 of 1378 Unicode tests
if ($line =~ /^[<,>] Failed ([0-9]+) of ([0-9]+)/ and $incheck == 1) {
$total_fail+=$1;
$total_tests+=$2;
next;
}
# crudini
# Test 95 OK (line 460)
if ($line =~ /^Test [0-9]+ OK/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /^Test [0-9]+ [A-Z!O][A-Z!K]/ and $incheck == 1) {
$counted_fail++;
next;
}
# discount
# Reddit-style automatic links ......................... OK
if ($line =~ /[a-z\-]+ \.\.\.+ (OK|GOOD)$/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /[a-z\-]+ \.\.\.+ [A-Z!O][A-Z!K]$/ and $incheck == 1) {
$counted_fail++;
next;
}
# libjpeg-turbo
# JPEG -> RGB Top-Down 2/1 ... Passed.
# JPEG -> RGB Top-Down 15/8 ... Passed.
# JPEG -> RGB Top-Down 7/4 ... Passed.
if ($line =~ /[A-Za-z0-9\ \>\<\/]+ \.\.\. Passed\./ and $incheck == 1) {
$counted_pass++;
next;
}
# *** zlib test OK ***
# *** zlib 64-bit test OK ***
if ($line =~ /\*\*\* zlib .*test OK \*\*\*/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /\*\*\* zlib .*test [A-Z!O][A-Z!K] \*\*\*/ and $incheck == 1) {
$counted_fail++;
next;
}
# LVM2
# valgrind pool awareness ... fail
# dfa matching ... fail
# dfa matching ... fail
# dfa with non-print regex chars ... pass
# bitset iteration ... pass
# valgrind pool awareness ... fail
# dfa matching ... fail
# dfa matching ... fail
# dfa with non-print regex chars ... fail
# bitset iteration ... fail
if ($line =~ /[a-z\ ]+\ \.\.\.\ pass/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /[a-z\ ]+\ \.\.\.\ fail/ and $incheck == 1) {
$counted_fail++;
next;
}
# keyring
# 76 passed, 62 skipped, 50 xfailed, 14 xpassed, 2 warnings, 32 error in 2.13 seconds
if ($line =~ /([0-9]+) passed, ([0-9]+) skipped, ([0-9]+) xfailed, ([0-9]+) xpassed, ([0-9]+) warnings, ([0-9]+) error in [0-9\.]+ seconds/ and $incheck == 1) {
$total_pass += $1 + $4;
$total_skipp += $2;
$total_xfail += $3;
$total_fail =+ $5 + $6;
next;
}
# openblas
# Real BLAS Test Program Results
# Test of subprogram number 1 SDOT
# ----- PASS -----
# Test of subprogram number 2 SAXPY
# ----- PASS -----
# Test of subprogram number 3 SROTG
# ----- PASS -----
if ($line =~ /\ \ +\-\-\-+\ PASS\ \-\-\-+/ and $incheck == 1) {
$counted_pass++;
next;
}
if ($line =~ /\ \ +\-\-\-+\ FAIL\ \-\-\-+/ and $incheck == 1) {
$counted_fail++;
next;
}
# rubygem-hashie
# Finished in 0.07221 seconds (files took 0.28356 seconds to load)
# 545 examples, 0 failures, 1 pending
if ($line =~ /([0-9]+) examples?, ([0-9]+) failures?, ([0-9]+) pending/ and $incheck == 1) {
$total_pass += $1;
$total_fail += $2;
$total_skip += $3;
next;
}
# rubygem-warden
# Finished in 0.08928 seconds (files took 0.1046 seconds to load)
# 215 examples, 14 failures
if ($line =~ /([0-9]+) examples?, ([0-9]+) failures?/ and $incheck == 1) {
$total_pass += $1;
$total_fail += $2;
next;
}
# rubygem-ansi
# Executed 12 tests with 7 passing, 5 errors.
if ($line =~ /Executed ([0-9]+) tests with ([0-9+]) passing, ([0-9]+) errors\./ and $incheck == 1) {
$total_tests += $1;
$total_pass += $2;
$total_fail += $3;
next;
}
# rubygem-formatador
# 9 succeeded in 0.00375661 seconds
if ($line =~ /([0-9]+) succeeded in [0-9]+\.[0-9]+ seconds/ and $incheck == 1) {
$total_pass += $1
}
# ./pigz -kf pigz.c ; ./pigz -t pigz.c.gz
# ./pigz -kfb 32 pigz.c ; ./pigz -t pigz.c.gz
if ($line =~ /.*\.\/pigz.+(\.\/pigz).+/ and $incheck == 1) {
$total_pass += 2;
} elsif ($line =~ /.*\.\/pigz.+/ and $incheck == 1) {
$total_pass++;
}
# netifaces
# Interface lo:
# Interface enp2s0:
if ($line =~ /^Interface [a-zA-Z0-9]+\:/ and $incheck == 1) {
$total_pass++;
next;
}
# btrfs-progs
# [TEST] 001-bad-file-extent-bytenr
# [NOTRUN] Need to validate root privileges
# test failed for case
if ($line =~ / \[TEST\] .*/ and $incheck == 1) {
$total_pass++;
next;
}
if ($line =~ /test failed for case.*/ and $incheck == 1) {
$total_fail++;
$total_pass--;
next;
}
if ($line =~ / \[NOTRUN\] .*/ and $incheck == 1) {
$total_skip++;
next;
}
# chrpath
# success: chrpath changed rpath to larger path.
# error: chrpath unable to change rpath to larger path.
if ($line =~ /success\: chrpath .*/ and $incheck == 1) {
$total_pass++;
next;
} elsif ($line =~ /error: chrpath .*/ and $incheck == 1) {
$total_fail++;
next;
} elsif ($line =~ /warning: chrpath .*/ and $incheck == 1) {
$total_fail++;
next;
}
# yajl
# 58/58 tests successful
#
if ($line =~/([0-9]+)\/([0-9]+) tests successful/ and $incheck == 1) {
$total_pass += $1;
$total_tests += $2;
next;
}
# xmlsec1
# Checking required transforms OK
# Verify existing signature Fail
# Checking required transforms Skip
# Checking required key data OK
if ($line =~ /^ [\w ]+\ +OK$/ and $incheck == 1) {
$total_pass++;
next;
} elsif ($line =~ /^ [\w ]+\ +Fail$/ and $incheck == 1) {
$total_fail++;
next;
} elsif ($line =~ /^ [\w ]+\ +Skip$/ and $incheck == 1) {
$total_skip++;
next;
}
# xdg-utils
# TOTAL: 4 tests failed, 90 of 116 tests passed. (140 attempted)
if ($line =~/TOTAL\: ([0-9]+) tests? failed\, ([0-9]+) of [0-9]+ tests? passed\. \(([0-9]+) attempted\)/ and $incheck == 1) {
$total_fail += $1;
$total_pass += $2;
$total_skip += $3 - ($2 + $1);
next;
}
# slang
# Testing argv processing ...Ok
# ./utf8.sl:14:check_sprintf:Test Error
if ($line =~/^Testing [\w ]+\.\.\.Ok$/ and $incheck == 1) {
$total_pass++;
next;
}
if ($line =~/^\.\/[A-Za-z0-9\.\<\>\:\ ]+\:Test Error$/ and $incheck == 1) {
$total_fail++;
next;
}
# go & golang
# ok golang.org/x/text/encoding/htmlindex 0.002s
# --- FAIL: TestParents (0.00s)
# FAIL golang.org/x/text/internal 0.002s
if ($line =~/^ok\s+[\w_]+[A-Za-z0-9\.\?_\-]*/ and $incheck == 1) {
$total_tests++;
$total_pass++;
next;
}
if ($line =~/---\s+FAIL:|FAIL\s+ / and $incheck == 1) {
$total_tests++;
$total_fail++;
next;
}
# valgrind
# == 5 tests, 0 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
# == 55 tests, 48 stderr failures, 6 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
# == 125 tests, 12 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
#if ($line =~/\=\= ([0-9]+) tests/ and $incheck == 1) {
if ($line =~/\=\= ([0-9]+) tests?\, ([0-9]+) stderr failures?\, ([0-9]+) stdout failures?\, ([0-9]+) stderrB failures?\, ([0-9]+) stdoutB failures?\, ([0-9]+) post failures? \=\=/ and $incheck == 1) {
$total_tests += $1;
$total_fail += ($2 + $3 + $4 + $5 + $6);
$total_pass += ($1 - ($2 + $3 + $4 + $5 + $6));
next;
}
}
close($log);
}
sub sanitize_counts
{
if ($total_tests > 0 && $total_pass == 0) {
$total_pass = $total_tests - $total_fail - $total_skip - $total_xfail;
}
if ($total_tests < $total_pass && $total_pass > 0) {
$total_tests = $total_pass + $total_fail + $total_skip + $total_xfail;
}
if ($counted_tests > 0 && $counted_pass == 0) {
$counted_pass = $counted_tests - $counted_fail - $counted_skip - $counted_xfail;
}
if ($counted_tests < $counted_pass && $counted_pass > 0) {
$counted_tests = $counted_pass + $counted_fail + $counted_skip + $counted_xfail;
}
if (($total_pass + $total_fail + $total_skip + $total_xfail) < $total_tests) {
$total_pass+=$total_tests-($total_pass + $total_fail + $total_skip + $total_xfail);
}
}
sub collect_output
{
if ($counted_tests > $total_tests) {
$testcount{$name} += $counted_tests;
$testpass{$name} += $counted_pass;
$testfail{$name} += $counted_fail;
$testxfail{$name} += $counted_xfail;
$testskip{$name} += $counted_skip;
if ($counted_tests > 0) {
$pkg_has_tests++;
}
} else {
$testcount{$name} += $total_tests;
$testpass{$name} += $total_pass;
$testfail{$name} += $total_fail;
$testxfail{$name} += $total_xfail;
$testskip{$name} += $total_skip;
if ($total_tests > 0) {
$pkg_has_tests++;
}
}
$total_tests = 0;
$total_pass = 0;
$total_fail = 0;
$total_xfail = 0;
$total_skip = 0;
$counted_tests = 0;
$counted_pass = 0;
$counted_fail = 0;
$counted_xfail = 0;
$counted_skip = 0;
}
sub print_output
{
$count = keys %testcount;
if ($count > 1) {
foreach my $key (sort(keys(%testcount))) {
if ($key) {
print $key;
print ",$testcount{$key},$testpass{$key},$testfail{$key},$testskip{$key},$testxfail{$key}";
print "\n";
}
}
} else {
foreach my $key (sort(keys(%testcount))) {
print "Total : $testcount{$key}\nPass : $testpass{$key}\nFail : $testfail{$key}\nSkip : $testskip{$key}\nXFail : $testxfail{$key}";
print "\n";
}
}
}
$total_tests = 0;
$total_pass = 0;
$total_fail = 0;
$total_xfail = 0;
$total_skip = 0;
$counted_tests = 0;
$counted_pass = 0;
$counted_fail = 0;
$counted_xfail = 0;
$counted_skip = 0;
parse_log($ARGV[0]);
sanitize_counts();
collect_output();
print_output();