#!/usr/bin/env python

import sys

if __name__ == '__main__':
    summaries = []
    def summarise(fname):
        summary = {}
        fd = open(fname)
        for line in fd:
            status, test = line.strip().split(' ', 1)
            if not summary.has_key(status):
                summary[status] = []
            summary[status].append(test)
        summaries.append((fname, summary))
    def count(t):
        return sum(map(lambda (f, s): len(s.get(t, [])), summaries))
    logfiles = sys.argv[1:]
    map(summarise, logfiles)
    ok = count('ok')
    failed = count('failed')
    ignored = count('ignored')
    print "summary of %d test runs: %d passed; %d failed; %d ignored" % \
            (len(logfiles), ok, failed, ignored)
    print ""
    if failed > 0:
        print "failed tests:"
        for f, s in summaries:
            failures = s.get('failed', [])
            if len(failures) > 0:
                print "  %s:" % (f)
            for test in failures:
                print "    %s" % (test)
