| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging | 5 import logging |
| 6 import optparse | 6 import optparse |
| 7 import os | 7 import os |
| 8 import shutil | 8 import shutil |
| 9 import sys | 9 import sys |
| 10 import zipfile | 10 import zipfile |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 | 30 |
| 31 A test packages a PageTest/PageMeasurement and a PageSet together. | 31 A test packages a PageTest/PageMeasurement and a PageSet together. |
| 32 """ | 32 """ |
| 33 options = {} | 33 options = {} |
| 34 | 34 |
| 35 @classmethod | 35 @classmethod |
| 36 def Name(cls): | 36 def Name(cls): |
| 37 name = cls.__module__.split('.')[-1] | 37 name = cls.__module__.split('.')[-1] |
| 38 if hasattr(cls, 'tag'): | 38 if hasattr(cls, 'tag'): |
| 39 name += '.' + cls.tag | 39 name += '.' + cls.tag |
| 40 page_set_name = None | 40 if hasattr(cls, 'page_set'): |
| 41 if hasattr(cls, 'page_set') and isinstance(cls.page_set, page_set.PageSet): | 41 if isinstance(cls.page_set, basestring): |
| 42 page_set_name = os.path.basename( | 42 # TODO(dtu): Remove this code path after crbug.com/362293. |
| 43 os.path.splitext(cls.page_set.file_path)[0]) | 43 name += '.' + os.path.basename(os.path.splitext(cls.page_set)[0]) |
| 44 elif hasattr(cls, 'page_set') and isinstance(cls.page_set, str): | 44 else: |
| 45 page_set_name = os.path.basename(os.path.splitext(cls.page_set)[0]) | 45 name += '.' + cls.page_set.Name() |
| 46 if page_set_name: | |
| 47 name += '.' + page_set_name | |
| 48 return name | 46 return name |
| 49 | 47 |
| 50 @classmethod | 48 @classmethod |
| 51 def AddCommandLineArgs(cls, parser): | 49 def AddCommandLineArgs(cls, parser): |
| 52 cls.PageTestClass().AddCommandLineArgs(parser) | 50 cls.PageTestClass().AddCommandLineArgs(parser) |
| 53 | 51 |
| 54 if hasattr(cls, 'AddTestCommandLineArgs'): | 52 if hasattr(cls, 'AddTestCommandLineArgs'): |
| 55 group = optparse.OptionGroup(parser, '%s test options' % cls.Name()) | 53 group = optparse.OptionGroup(parser, '%s test options' % cls.Name()) |
| 56 cls.AddTestCommandLineArgs(group) | 54 cls.AddTestCommandLineArgs(group) |
| 57 parser.add_option_group(group) | 55 parser.add_option_group(group) |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 | 161 |
| 164 If the Test has no PageTest, raises NotImplementedError. | 162 If the Test has no PageTest, raises NotImplementedError. |
| 165 """ | 163 """ |
| 166 if not hasattr(cls, 'test'): | 164 if not hasattr(cls, 'test'): |
| 167 raise NotImplementedError('This test has no "test" attribute.') | 165 raise NotImplementedError('This test has no "test" attribute.') |
| 168 if not issubclass(cls.test, page_test.PageTest): | 166 if not issubclass(cls.test, page_test.PageTest): |
| 169 raise TypeError('"%s" is not a PageTest.' % cls.test.__name__) | 167 raise TypeError('"%s" is not a PageTest.' % cls.test.__name__) |
| 170 return cls.test | 168 return cls.test |
| 171 | 169 |
| 172 @classmethod | 170 @classmethod |
| 171 def PageSetClass(cls): |
| 172 """Get the PageSet for this Test. |
| 173 |
| 174 If the Test has no PageSet, raises NotImplementedError. |
| 175 """ |
| 176 if not hasattr(cls, 'page_set'): |
| 177 raise NotImplementedError('This test has no "page_set" attribute.') |
| 178 if not issubclass(cls.page_set, page_set.PageSet): |
| 179 raise TypeError('"%s" is not a PageSet.' % cls.page_set.__name__) |
| 180 return cls.page_set |
| 181 |
| 182 @classmethod |
| 173 def CreatePageSet(cls, options): # pylint: disable=W0613 | 183 def CreatePageSet(cls, options): # pylint: disable=W0613 |
| 174 """Get the page set this test will run on. | 184 """Get the page set this test will run on. |
| 175 | 185 |
| 176 By default, it will create a page set from the file at this test's | 186 By default, it will create a page set from the file at this test's |
| 177 page_set attribute. Override to generate a custom page set. | 187 page_set attribute. Override to generate a custom page set. |
| 178 """ | 188 """ |
| 179 if not hasattr(cls, 'page_set'): | 189 if not hasattr(cls, 'page_set'): |
| 180 raise NotImplementedError('This test has no "page_set" attribute.') | 190 raise NotImplementedError('This test has no "page_set" attribute.') |
| 181 | 191 if isinstance(cls.page_set, basestring): |
| 182 if isinstance(cls.page_set, str): | 192 # TODO(dtu): Remove this code path after crbug.com/362293. |
| 183 return page_set.PageSet.FromFile( | 193 return page_set.PageSet.FromFile( |
| 184 file_path=os.path.join(util.GetBaseDir(), cls.page_set)) | 194 file_path=os.path.join(util.GetBaseDir(), cls.page_set)) |
| 185 elif isinstance(cls.page_set, page_set.PageSet): | |
| 186 return cls.page_set | |
| 187 else: | 195 else: |
| 188 raise TypeError('The page_set field of %s has unsupported type.' % | 196 return cls.PageSetClass()() |
| 189 cls.Name) | |
| 190 | 197 |
| 191 @classmethod | 198 @classmethod |
| 192 def CreateExpectations(cls, ps): # pylint: disable=W0613 | 199 def CreateExpectations(cls, ps): # pylint: disable=W0613 |
| 193 """Get the expectations this test will run with. | 200 """Get the expectations this test will run with. |
| 194 | 201 |
| 195 By default, it will create an empty expectations set. Override to generate | 202 By default, it will create an empty expectations set. Override to generate |
| 196 custom expectations. | 203 custom expectations. |
| 197 """ | 204 """ |
| 198 if hasattr(cls, 'expectations'): | 205 if hasattr(cls, 'expectations'): |
| 199 return cls.expectations | 206 return cls.expectations |
| 200 else: | 207 else: |
| 201 return test_expectations.TestExpectations() | 208 return test_expectations.TestExpectations() |
| 202 | 209 |
| 203 | 210 |
| 204 def AddCommandLineArgs(parser): | 211 def AddCommandLineArgs(parser): |
| 205 page_runner.AddCommandLineArgs(parser) | 212 page_runner.AddCommandLineArgs(parser) |
| 206 | 213 |
| 207 | 214 |
| 208 def ProcessCommandLineArgs(parser, args): | 215 def ProcessCommandLineArgs(parser, args): |
| 209 page_runner.ProcessCommandLineArgs(parser, args) | 216 page_runner.ProcessCommandLineArgs(parser, args) |
| OLD | NEW |