Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: tools/testrunner/objects/testcase.py

Issue 1276853002: [test] Return variant and random seed on failures. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/testrunner/local/progress.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2012 the V8 project authors. All rights reserved. 1 # Copyright 2012 the V8 project authors. All rights reserved.
2 # Redistribution and use in source and binary forms, with or without 2 # Redistribution and use in source and binary forms, with or without
3 # modification, are permitted provided that the following conditions are 3 # modification, are permitted provided that the following conditions are
4 # met: 4 # met:
5 # 5 #
6 # * Redistributions of source code must retain the above copyright 6 # * Redistributions of source code must retain the above copyright
7 # notice, this list of conditions and the following disclaimer. 7 # notice, this list of conditions and the following disclaimer.
8 # * Redistributions in binary form must reproduce the above 8 # * Redistributions in binary form must reproduce the above
9 # copyright notice, this list of conditions and the following 9 # copyright notice, this list of conditions and the following
10 # disclaimer in the documentation and/or other materials provided 10 # disclaimer in the documentation and/or other materials provided
(...skipping 11 matching lines...) Expand all
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 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. 26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 28
29 from . import output 29 from . import output
30 30
31 class TestCase(object): 31 class TestCase(object):
32 def __init__(self, suite, path, flags=None, dependency=None): 32 def __init__(self, suite, path, variant='default', flags=None,
33 dependency=None):
33 self.suite = suite # TestSuite object 34 self.suite = suite # TestSuite object
34 self.path = path # string, e.g. 'div-mod', 'test-api/foo' 35 self.path = path # string, e.g. 'div-mod', 'test-api/foo'
35 self.flags = flags or [] # list of strings, flags specific to this test 36 self.flags = flags or [] # list of strings, flags specific to this test
37 self.variant = variant # name of the used testing variant
36 self.dependency = dependency # |path| for testcase that must be run first 38 self.dependency = dependency # |path| for testcase that must be run first
37 self.outcomes = set([]) 39 self.outcomes = set([])
38 self.output = None 40 self.output = None
39 self.id = None # int, used to map result back to TestCase instance 41 self.id = None # int, used to map result back to TestCase instance
40 self.duration = None # assigned during execution 42 self.duration = None # assigned during execution
41 self.run = 1 # The nth time this test is executed. 43 self.run = 1 # The nth time this test is executed.
42 44
43 def CopyAddingFlags(self, flags): 45 def CopyAddingFlags(self, variant, flags):
44 copy = TestCase(self.suite, self.path, self.flags + flags, self.dependency) 46 copy = TestCase(self.suite, self.path, variant, self.flags + flags,
47 self.dependency)
45 copy.outcomes = self.outcomes 48 copy.outcomes = self.outcomes
46 return copy 49 return copy
47 50
48 def PackTask(self): 51 def PackTask(self):
49 """ 52 """
50 Extracts those parts of this object that are required to run the test 53 Extracts those parts of this object that are required to run the test
51 and returns them as a JSON serializable object. 54 and returns them as a JSON serializable object.
52 """ 55 """
53 assert self.id is not None 56 assert self.id is not None
54 return [self.suitename(), self.path, self.flags, 57 return [self.suitename(), self.path, self.variant, self.flags,
55 self.dependency, list(self.outcomes or []), self.id] 58 self.dependency, list(self.outcomes or []), self.id]
56 59
57 @staticmethod 60 @staticmethod
58 def UnpackTask(task): 61 def UnpackTask(task):
59 """Creates a new TestCase object based on packed task data.""" 62 """Creates a new TestCase object based on packed task data."""
60 # For the order of the fields, refer to PackTask() above. 63 # For the order of the fields, refer to PackTask() above.
61 test = TestCase(str(task[0]), task[1], task[2], task[3]) 64 test = TestCase(str(task[0]), task[1], task[2], task[3], task[4])
62 test.outcomes = set(task[4]) 65 test.outcomes = set(task[5])
63 test.id = task[5] 66 test.id = task[6]
64 test.run = 1 67 test.run = 1
65 return test 68 return test
66 69
67 def SetSuiteObject(self, suites): 70 def SetSuiteObject(self, suites):
68 self.suite = suites[self.suite] 71 self.suite = suites[self.suite]
69 72
70 def PackResult(self): 73 def PackResult(self):
71 """Serializes the output of the TestCase after it has run.""" 74 """Serializes the output of the TestCase after it has run."""
72 self.suite.StripOutputForTransmit(self) 75 self.suite.StripOutputForTransmit(self)
73 return [self.id, self.output.Pack(), self.duration] 76 return [self.id, self.output.Pack(), self.duration]
74 77
75 def MergeResult(self, result): 78 def MergeResult(self, result):
76 """Applies the contents of a Result to this object.""" 79 """Applies the contents of a Result to this object."""
77 assert result[0] == self.id 80 assert result[0] == self.id
78 self.output = output.Output.Unpack(result[1]) 81 self.output = output.Output.Unpack(result[1])
79 self.duration = result[2] 82 self.duration = result[2]
80 83
81 def suitename(self): 84 def suitename(self):
82 return self.suite.name 85 return self.suite.name
83 86
84 def GetLabel(self): 87 def GetLabel(self):
85 return self.suitename() + "/" + self.suite.CommonTestName(self) 88 return self.suitename() + "/" + self.suite.CommonTestName(self)
OLDNEW
« no previous file with comments | « tools/testrunner/local/progress.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698