OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 """PyAuto: Python Interface to Chromium's Automation Proxy. | 7 """PyAuto: Python Interface to Chromium's Automation Proxy. |
8 | 8 |
9 PyAuto uses swig to expose Automation Proxy interfaces to Python. | 9 PyAuto uses swig to expose Automation Proxy interfaces to Python. |
10 For complete documentation on the functionality available, | 10 For complete documentation on the functionality available, |
(...skipping 1330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1341 | 1341 |
1342 def __del__(self): | 1342 def __del__(self): |
1343 # python unittest module is setup such that the suite gets deleted before | 1343 # python unittest module is setup such that the suite gets deleted before |
1344 # the test cases, which is odd because our test cases depend on | 1344 # the test cases, which is odd because our test cases depend on |
1345 # initializtions like exitmanager, autorelease pool provided by the | 1345 # initializtions like exitmanager, autorelease pool provided by the |
1346 # suite. Forcibly delete the test cases before the suite. | 1346 # suite. Forcibly delete the test cases before the suite. |
1347 del self._tests | 1347 del self._tests |
1348 pyautolib.PyUITestSuiteBase.__del__(self) | 1348 pyautolib.PyUITestSuiteBase.__del__(self) |
1349 | 1349 |
1350 | 1350 |
1351 class _GTestTextTestResult(unittest._TextTestResult): | |
1352 """A test result class that can print formatted text results to a stream. | |
1353 | |
1354 Results printed in conformance with gtest output format, like: | |
1355 [ RUN ] autofill.AutoFillTest.testAutofillInvalid: "test desc." | |
1356 [ OK ] autofill.AutoFillTest.testAutofillInvalid | |
1357 [ RUN ] autofill.AutoFillTest.testFillProfile: "test desc." | |
1358 [ OK ] autofill.AutoFillTest.testFillProfile | |
1359 [ RUN ] autofill.AutoFillTest.testFillProfileCrazyCharacters: "Test." | |
1360 [ OK ] autofill.AutoFillTest.testFillProfileCrazyCharacters | |
1361 """ | |
1362 def __init__(self, stream, descriptions, verbosity): | |
1363 unittest._TextTestResult.__init__(self, stream, descriptions, verbosity) | |
1364 | |
1365 def _GetTestURI(self, test): | |
1366 return '%s.%s' % (unittest._strclass(test.__class__), test._testMethodName) | |
1367 | |
1368 def getDescription(self, test): | |
1369 return '%s: "%s"' % (self._GetTestURI(test), test.shortDescription()) | |
1370 | |
1371 def startTest(self, test): | |
1372 unittest.TestResult.startTest(self, test) | |
1373 self.stream.writeln('[ RUN ] %s' % self.getDescription(test)) | |
1374 | |
1375 def addSuccess(self, test): | |
1376 unittest.TestResult.addSuccess(self, test) | |
1377 self.stream.writeln('[ OK ] %s' % self._GetTestURI(test)) | |
1378 | |
1379 def addError(self, test, err): | |
1380 unittest.TestResult.addError(self, test, err) | |
1381 self.stream.writeln('[ ERROR ] %s' % self._GetTestURI(test)) | |
1382 | |
1383 def addFailure(self, test, err): | |
1384 unittest.TestResult.addFailure(self, test, err) | |
1385 self.stream.writeln('[ FAILED ] %s' % self._GetTestURI(test)) | |
1386 | |
1387 | |
1388 class PyAutoTextTestRuner(unittest.TextTestRunner): | |
1389 """Test Runner for PyAuto tests that displays results in textual format. | |
1390 | |
1391 Results are displayed in conformance with gtest output. | |
1392 """ | |
1393 def __init__(self, verbosity=1): | |
1394 unittest.TextTestRunner.__init__(self, | |
1395 stream=sys.stderr, | |
1396 verbosity=verbosity) | |
1397 | |
1398 def _makeResult(self): | |
1399 return _GTestTextTestResult(self.stream, self.descriptions, self.verbosity) | |
1400 | |
1401 | |
1402 # Implementation inspired from unittest.main() | 1351 # Implementation inspired from unittest.main() |
1403 class Main(object): | 1352 class Main(object): |
1404 """Main program for running PyAuto tests.""" | 1353 """Main program for running PyAuto tests.""" |
1405 | 1354 |
1406 _options, _args = None, None | 1355 _options, _args = None, None |
1407 _tests_filename = 'PYAUTO_TESTS' | 1356 _tests_filename = 'PYAUTO_TESTS' |
1408 _platform_map = { | 1357 _platform_map = { |
1409 'win32': 'win', | 1358 'win32': 'win', |
1410 'darwin': 'mac', | 1359 'darwin': 'mac', |
1411 'linux2': 'linux', | 1360 'linux2': 'linux', |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1619 # read values back out. | 1568 # read values back out. |
1620 chrome_flags += ' --dom-automation' | 1569 chrome_flags += ' --dom-automation' |
1621 | 1570 |
1622 suite_args.append('--extra-chrome-flags=%s' % chrome_flags) | 1571 suite_args.append('--extra-chrome-flags=%s' % chrome_flags) |
1623 pyauto_suite = PyUITestSuite(suite_args) | 1572 pyauto_suite = PyUITestSuite(suite_args) |
1624 loaded_tests = self._LoadTests(self._args) | 1573 loaded_tests = self._LoadTests(self._args) |
1625 pyauto_suite.addTests(loaded_tests) | 1574 pyauto_suite.addTests(loaded_tests) |
1626 verbosity = 1 | 1575 verbosity = 1 |
1627 if self._options.verbose: | 1576 if self._options.verbose: |
1628 verbosity = 2 | 1577 verbosity = 2 |
1629 result = PyAutoTextTestRuner(verbosity=verbosity).run(pyauto_suite) | 1578 result = unittest.TextTestRunner(verbosity=verbosity).run(pyauto_suite) |
1630 del loaded_tests # Need to destroy test cases before the suite | 1579 del loaded_tests # Need to destroy test cases before the suite |
1631 del pyauto_suite | 1580 del pyauto_suite |
1632 sys.exit(not result.wasSuccessful()) | 1581 sys.exit(not result.wasSuccessful()) |
1633 | 1582 |
1634 | 1583 |
1635 if __name__ == '__main__': | 1584 if __name__ == '__main__': |
1636 Main() | 1585 Main() |
OLD | NEW |