#!/usr/pythoncontroller/python
import sys
from testutil import *
from testexec import *
import os, glob

def help():
    print "Usage: reportfailures testrunpath=<Absolute path of test directory> [numlines=10]\n"
    sys.exit()

if len(sys.argv) < 2:
    help()

def ensureRequiredParamsPresent(dict, required_keys):
    for key in required_keys:
        if not dict.has_key(key):
            help()
            sys.exit()

# if there are arguments parse them into a dictionary
args = parseargs(sys.argv)
ensureRequiredParamsPresent(args, ['testrunpath'])

numlines = 10
if args.has_key('numlines'):
    numlines = int(args['numlines'])

testcasenumberToFailure = {}
testcasenumbertotuple = {}
failed_testcases = glob.glob('%s/sequence*__*__FAIL*' % args['testrunpath'])
for failed_testcase in failed_testcases:
    testcase = os.path.basename(failed_testcase).split('__')[2][4:]
    testcasenumberToFailure[int(testcase)] = getFailuresFromLog(failed_testcase, LINES_TO_FETCH_BEFORE_FAILURE=numlines)
    seqno = os.path.basename(failed_testcase).split('__')[0][8:]
    testname = os.path.basename(failed_testcase).split('__')[3]
    testcasenumbertotuple[int(testcase)] = (seqno, testname)

for testcasenumber in sorted(testcasenumberToFailure.keys()):
    seqno, testname = testcasenumbertotuple[testcasenumber]
    print "*************************** Testrun:%s Sequence:%s Testcase:%s Testname:%s ***********************" % (args['testrunpath'], seqno, testcasenumber, testname)
    for failure in testcasenumberToFailure[testcasenumber]:
        print failure
        print "--------------------------------------------------------------------"
    #print testToFailure[failed_testcase]
