OLD | NEW |
| (Empty) |
1 # Copyright 2012 the V8 project authors. All rights reserved. | |
2 # Redistribution and use in source and binary forms, with or without | |
3 # modification, are permitted provided that the following conditions are | |
4 # met: | |
5 # | |
6 # * Redistributions of source code must retain the above copyright | |
7 # notice, this list of conditions and the following disclaimer. | |
8 # * Redistributions in binary form must reproduce the above | |
9 # copyright notice, this list of conditions and the following | |
10 # disclaimer in the documentation and/or other materials provided | |
11 # with the distribution. | |
12 # * Neither the name of Google Inc. nor the names of its | |
13 # contributors may be used to endorse or promote products derived | |
14 # from this software without specific prior written permission. | |
15 # | |
16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
17 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
18 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
19 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
20 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
27 | |
28 | |
29 import sys | |
30 import time | |
31 | |
32 from . import statusfile | |
33 | |
34 | |
35 REPORT_TEMPLATE = ( | |
36 """Total: %(total)i tests | |
37 * %(skipped)4d tests will be skipped | |
38 * %(timeout)4d tests are expected to timeout sometimes | |
39 * %(nocrash)4d tests are expected to be flaky but not crash | |
40 * %(pass)4d tests are expected to pass | |
41 * %(fail_ok)4d tests are expected to fail that we won't fix | |
42 * %(fail)4d tests are expected to fail that we should fix""") | |
43 | |
44 | |
45 def PrintReport(tests): | |
46 total = len(tests) | |
47 skipped = timeout = nocrash = passes = fail_ok = fail = 0 | |
48 for t in tests: | |
49 if "outcomes" not in dir(t) or not t.outcomes: | |
50 passes += 1 | |
51 continue | |
52 o = t.outcomes | |
53 if statusfile.DoSkip(o): | |
54 skipped += 1 | |
55 continue | |
56 if statusfile.TIMEOUT in o: timeout += 1 | |
57 if statusfile.IsFlaky(o): nocrash += 1 | |
58 if list(o) == [statusfile.PASS]: passes += 1 | |
59 if statusfile.IsFailOk(o): fail_ok += 1 | |
60 if list(o) == [statusfile.FAIL]: fail += 1 | |
61 print REPORT_TEMPLATE % { | |
62 "total": total, | |
63 "skipped": skipped, | |
64 "timeout": timeout, | |
65 "nocrash": nocrash, | |
66 "pass": passes, | |
67 "fail_ok": fail_ok, | |
68 "fail": fail | |
69 } | |
70 | |
71 | |
72 def PrintTestSource(tests): | |
73 for test in tests: | |
74 suite = test.suite | |
75 source = suite.GetSourceForTest(test).strip() | |
76 if len(source) > 0: | |
77 print "--- begin source: %s/%s ---" % (suite.name, test.path) | |
78 print source | |
79 print "--- end source: %s/%s ---" % (suite.name, test.path) | |
80 | |
81 | |
82 def FormatTime(d): | |
83 millis = round(d * 1000) % 1000 | |
84 return time.strftime("%M:%S.", time.gmtime(d)) + ("%03i" % millis) | |
85 | |
86 | |
87 def PrintTestDurations(suites, overall_time): | |
88 # Write the times to stderr to make it easy to separate from the | |
89 # test output. | |
90 print | |
91 sys.stderr.write("--- Total time: %s ---\n" % FormatTime(overall_time)) | |
92 timed_tests = [ t for s in suites for t in s.tests | |
93 if t.duration is not None ] | |
94 timed_tests.sort(lambda a, b: cmp(b.duration, a.duration)) | |
95 index = 1 | |
96 for entry in timed_tests[:20]: | |
97 t = FormatTime(entry.duration) | |
98 sys.stderr.write("%4i (%s) %s\n" % (index, t, entry.GetLabel())) | |
99 index += 1 | |
OLD | NEW |