3 # This program run tests given as arguments one by one. On the end the
4 # program prints out aggregated information about tests. All error messages
5 # and other info is printed out immediately.
13 re_start_summary
= re
.compile(r
"^[=]{10,}$")
14 re_values
= re
.compile(r
".*([0-9]+)[ |]+([0-9]+)[ |]+([0-9]+).*")
18 self
._assertations
= 0
19 self
._assertations
_failed
= 0
20 self
._assertations
_succeed
= 0
22 self
._tests
_failed
= 0
23 self
._tests
_succeed
= 0
25 self
._test
_cases
_failed
= 0
26 self
._test
_cases
_succeed
= 0
28 self
._test
_suites
_failed
= 0
29 self
._test
_suites
_succeed
= 0
31 def addAssertations(self
, sum, failed
, succeed
):
32 self
._assertations
= self
._assertations
+ sum
33 self
._assertations
_failed
= self
._assertations
_failed
+ failed
34 self
._assertations
_succeed
= self
._assertations
_succeed
+ succeed
36 def addTests(self
, sum, failed
, succeed
):
37 self
._tests
= self
._tests
+ sum
38 self
._tests
_failed
= self
._tests
_failed
+ failed
39 self
._tests
_succeed
= self
._tests
_succeed
+ succeed
41 def addTestCases(self
, sum, failed
, succeed
):
42 self
._test
_cases
= self
._test
_cases
+ sum
43 self
._test
_cases
_failed
= self
._test
_cases
_failed
+ failed
44 self
._test
_cases
_succeed
= self
._test
_cases
_succeed
+ succeed
46 def addTestSuites(self
, sum, failed
, succeed
):
47 self
._test
_suites
= self
._test
_suites
+ sum
48 self
._test
_suites
_failed
= self
._test
_suites
_failed
+ failed
49 self
._test
_suites
_succeed
= self
._test
_suites
_succeed
+ succeed
53 ==================================================
54 | | failed | succeed | total |
55 |------------------------------------------------|
56 | assertations: | %-6d | %-7d | %-5d |
57 | tests: | %-6d | %-7d | %-5d |
58 | test cases: | %-6d | %-7d | %-5d |
59 | test suites: | %-6d | %-7d | %-5d |
60 ==================================================
61 """ % (self
._assertations
_failed
,self
._assertations
_succeed
,self
._assertations
,
62 self
._tests
_failed
,self
._tests
_succeed
,self
._tests
,
63 self
._test
_cases
_failed
,self
._test
_cases
_succeed
,self
._test
_cases
,
64 self
._test
_suites
_failed
,self
._test
_suites
_succeed
,self
._test
_suites
)
70 match
= re_values
.match(line
)
72 return (match
.group(1), match
.group(2), match
.group(3))
76 def processSummary(stdin
, summary
):
77 line
= stdin
.readline() # | | failed | succeed | total |
78 line
= stdin
.readline() # |------------------------------------------------|
79 line
= stdin
.readline() # | assertations: | 0 | 0 | 0 |
80 asserts_failed
, asserts_succeed
, asserts
= getValues(line
)
81 line
= stdin
.readline() # | tests: | 3 | 5 | 8 |
82 tests_failed
, tests_succeed
, tests
= getValues(line
)
83 line
= stdin
.readline() # | tests cases: | 2 | 1 | 3 |
84 test_cases_failed
, test_cases_succeed
, test_cases
= getValues(line
)
85 line
= stdin
.readline() # | tests suites: | 1 | 1 | 2 |
86 test_suites_failed
, test_suites_succeed
, test_suites
= getValues(line
)
87 line
= stdin
.readline() # ==================================================
89 summary
.addAssertations(int(asserts
), int(asserts_failed
),
91 summary
.addTests(int(tests
), int(tests_failed
), int(tests_succeed
))
92 summary
.addTestCases(int(test_cases
), int(test_cases_failed
),
93 int(test_cases_succeed
))
94 summary
.addTestSuites(int(test_suites
), int(test_suites_failed
),
95 int(test_suites_succeed
))
98 def runTest(test_cmd
, summary
):
99 stdin
= os
.popen("./" + test_cmd
, "r")
101 line
= stdin
.readline()
103 if re_start_summary
.search(line
) is not None:
104 processSummary(stdin
, summary
)
107 line
= stdin
.readline()
109 if __name__
== "__main__":
110 if len(sys
.argv
) <= 1:
114 for test
in sys
.argv
[1:]:
115 runTest(test
, summary
)