OLD | NEW |
1 # Copyright (C) 2010 Google Inc. All rights reserved. | 1 # Copyright (C) 2010 Google Inc. All rights reserved. |
2 # Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Sze
ged | 2 # Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Sze
ged |
3 # Copyright (C) 2011 Apple Inc. All rights reserved. | 3 # Copyright (C) 2011 Apple Inc. All rights reserved. |
4 # | 4 # |
5 # Redistribution and use in source and binary forms, with or without | 5 # Redistribution and use in source and binary forms, with or without |
6 # modification, are permitted provided that the following conditions are | 6 # modification, are permitted provided that the following conditions are |
7 # met: | 7 # met: |
8 # | 8 # |
9 # * Redistributions of source code must retain the above copyright | 9 # * Redistributions of source code must retain the above copyright |
10 # notice, this list of conditions and the following disclaimer. | 10 # notice, this list of conditions and the following disclaimer. |
(...skipping 18 matching lines...) Expand all Loading... |
29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
30 | 30 |
31 import codecs | 31 import codecs |
32 import json | 32 import json |
33 import logging | 33 import logging |
34 import os | 34 import os |
35 import platform | 35 import platform |
36 import Queue | 36 import Queue |
37 import re | 37 import re |
38 import StringIO | 38 import StringIO |
| 39 import signal |
39 import sys | 40 import sys |
40 import thread | 41 import thread |
41 import time | 42 import time |
42 import threading | 43 import threading |
43 import webkitpy.thirdparty.unittest2 as unittest | 44 import webkitpy.thirdparty.unittest2 as unittest |
44 | 45 |
45 from webkitpy.common.system import outputcapture, path | 46 from webkitpy.common.system import outputcapture, path |
46 from webkitpy.common.system.crashlogs_unittest import make_mock_crash_report_dar
win | 47 from webkitpy.common.system.crashlogs_unittest import make_mock_crash_report_dar
win |
47 from webkitpy.common.system.systemhost import SystemHost | 48 from webkitpy.common.system.systemhost import SystemHost |
48 from webkitpy.common.host import Host | 49 from webkitpy.common.host import Host |
49 from webkitpy.common.host_mock import MockHost | 50 from webkitpy.common.host_mock import MockHost |
50 | 51 |
51 from webkitpy.layout_tests import port | 52 from webkitpy.layout_tests import port |
52 from webkitpy.layout_tests import run_webkit_tests | 53 from webkitpy.layout_tests import run_webkit_tests |
53 from webkitpy.layout_tests.port import Port | 54 from webkitpy.layout_tests.port import Port |
54 from webkitpy.layout_tests.port import test | 55 from webkitpy.layout_tests.port import test |
55 from webkitpy.test.skip import skip_if | 56 from webkitpy.test.skip import skip_if |
56 from webkitpy.tool import grammar | 57 from webkitpy.tool import grammar |
57 from webkitpy.tool.mocktool import MockOptions | 58 from webkitpy.tool.mocktool import MockOptions |
58 | 59 |
| 60 # This mirrors what the shell normally does. |
| 61 INTERRUPTED_EXIT_STATUS = signal.SIGINT + 128 |
59 | 62 |
60 def parse_args(extra_args=None, tests_included=False, new_results=False, print_n
othing=True): | 63 def parse_args(extra_args=None, tests_included=False, new_results=False, print_n
othing=True): |
61 extra_args = extra_args or [] | 64 extra_args = extra_args or [] |
62 args = [] | 65 args = [] |
63 if not '--platform' in extra_args: | 66 if not '--platform' in extra_args: |
64 args.extend(['--platform', 'test']) | 67 args.extend(['--platform', 'test']) |
65 if not new_results: | 68 if not new_results: |
66 args.append('--no-new-test-results') | 69 args.append('--no-new-test-results') |
67 | 70 |
68 if not '--child-processes' in extra_args: | 71 if not '--child-processes' in extra_args: |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 | 287 |
285 def test_full_results_html(self): | 288 def test_full_results_html(self): |
286 host = MockHost() | 289 host = MockHost() |
287 details, _, _ = logging_run(['--full-results-html'], host=host) | 290 details, _, _ = logging_run(['--full-results-html'], host=host) |
288 self.assertEqual(details.exit_code, 0) | 291 self.assertEqual(details.exit_code, 0) |
289 self.assertEqual(len(host.user.opened_urls), 1) | 292 self.assertEqual(len(host.user.opened_urls), 1) |
290 | 293 |
291 def test_keyboard_interrupt(self): | 294 def test_keyboard_interrupt(self): |
292 # Note that this also tests running a test marked as SKIP if | 295 # Note that this also tests running a test marked as SKIP if |
293 # you specify it explicitly. | 296 # you specify it explicitly. |
294 self.assertRaises(KeyboardInterrupt, logging_run, ['failures/expected/ke
yboard.html', '--child-processes', '1'], tests_included=True) | 297 host = MockHost() |
| 298 details, _, _ = logging_run(['failures/expected/keyboard.html', '--child
-processes', '1'], tests_included=True, host=host) |
| 299 self.assertEqual(details.exit_code, INTERRUPTED_EXIT_STATUS) |
295 | 300 |
296 if self.should_test_processes: | 301 if self.should_test_processes: |
297 self.assertRaises(KeyboardInterrupt, logging_run, | 302 _, regular_output, _ = logging_run(['failures/expected/keyboard.html
', 'passes/text.html', '--child-processes', '2', '--skipped=ignore'], tests_incl
uded=True, shared_port=False) |
298 ['failures/expected/keyboard.html', 'passes/text.html', '--child
-processes', '2', '--skipped=ignore'], tests_included=True, shared_port=False) | 303 self.assertTrue(any(['Running 1 ' in line for line in regular_output
.buflist])) |
299 | 304 |
300 def test_no_tests_found(self): | 305 def test_no_tests_found(self): |
301 details, err, _ = logging_run(['resources'], tests_included=True) | 306 details, err, _ = logging_run(['resources'], tests_included=True) |
302 self.assertEqual(details.exit_code, -1) | 307 self.assertEqual(details.exit_code, -1) |
303 self.assertContains(err, 'No tests to run.\n') | 308 self.assertContains(err, 'No tests to run.\n') |
304 | 309 |
305 def test_no_tests_found_2(self): | 310 def test_no_tests_found_2(self): |
306 details, err, _ = logging_run(['foo'], tests_included=True) | 311 details, err, _ = logging_run(['foo'], tests_included=True) |
307 self.assertEqual(details.exit_code, -1) | 312 self.assertEqual(details.exit_code, -1) |
308 self.assertContains(err, 'No tests to run.\n') | 313 self.assertContains(err, 'No tests to run.\n') |
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
955 return FakeRunDetails() | 960 return FakeRunDetails() |
956 | 961 |
957 def exception_raising_run(port, options, args, stderr): | 962 def exception_raising_run(port, options, args, stderr): |
958 assert False | 963 assert False |
959 | 964 |
960 stdout = StringIO.StringIO() | 965 stdout = StringIO.StringIO() |
961 stderr = StringIO.StringIO() | 966 stderr = StringIO.StringIO() |
962 try: | 967 try: |
963 run_webkit_tests.run = interrupting_run | 968 run_webkit_tests.run = interrupting_run |
964 res = run_webkit_tests.main([], stdout, stderr) | 969 res = run_webkit_tests.main([], stdout, stderr) |
965 self.assertEqual(res, run_webkit_tests.INTERRUPTED_EXIT_STATUS) | 970 self.assertEqual(res, INTERRUPTED_EXIT_STATUS) |
966 | 971 |
967 run_webkit_tests.run = successful_run | 972 run_webkit_tests.run = successful_run |
968 res = run_webkit_tests.main(['--platform', 'test'], stdout, stderr) | 973 res = run_webkit_tests.main(['--platform', 'test'], stdout, stderr) |
969 self.assertEqual(res, -1) | 974 self.assertEqual(res, -1) |
970 | 975 |
971 run_webkit_tests.run = exception_raising_run | 976 run_webkit_tests.run = exception_raising_run |
972 res = run_webkit_tests.main([], stdout, stderr) | 977 res = run_webkit_tests.main([], stdout, stderr) |
973 self.assertEqual(res, run_webkit_tests.EXCEPTIONAL_EXIT_STATUS) | 978 self.assertEqual(res, run_webkit_tests.EXCEPTIONAL_EXIT_STATUS) |
974 finally: | 979 finally: |
975 run_webkit_tests.run = orig_run_fn | 980 run_webkit_tests.run = orig_run_fn |
OLD | NEW |