| OLD | NEW |
| 1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 28 | 28 |
| 29 import unittest | 29 import unittest |
| 30 | 30 |
| 31 from webkitpy.common.host_mock import MockHost | 31 from webkitpy.common.host_mock import MockHost |
| 32 from webkitpy.common.system.executive_mock import MockExecutive | 32 from webkitpy.common.system.executive_mock import MockExecutive |
| 33 from webkitpy.layout_tests.breakpad.dump_reader_win import DumpReaderWin | 33 from webkitpy.layout_tests.breakpad.dump_reader_win import DumpReaderWin |
| 34 | 34 |
| 35 | 35 |
| 36 class TestDumpReaderWin(unittest.TestCase): | 36 class TestDumpReaderWin(unittest.TestCase): |
| 37 |
| 37 def test_check_is_functional_cdb_not_found(self): | 38 def test_check_is_functional_cdb_not_found(self): |
| 38 host = MockHost() | 39 host = MockHost() |
| 39 host.executive = MockExecutive(should_throw=True) | 40 host.executive = MockExecutive(should_throw=True) |
| 40 | 41 |
| 41 build_dir = "/mock-checkout/out/Debug" | 42 build_dir = '/mock-checkout/out/Debug' |
| 42 host.filesystem.maybe_make_directory(build_dir) | 43 host.filesystem.maybe_make_directory(build_dir) |
| 43 dump_reader = DumpReaderWin(host, build_dir) | 44 dump_reader = DumpReaderWin(host, build_dir) |
| 44 | 45 |
| 45 self.assertFalse(dump_reader.check_is_functional()) | 46 self.assertFalse(dump_reader.check_is_functional()) |
| 46 | 47 |
| 47 def test_get_pid_from_dump(self): | 48 def test_get_pid_from_dump(self): |
| 48 host = MockHost() | 49 host = MockHost() |
| 49 | 50 |
| 50 dump_file = '/crash-dumps/dump.txt' | 51 dump_file = '/crash-dumps/dump.txt' |
| 51 expected_pid = '4711' | 52 expected_pid = '4711' |
| 52 host.filesystem.write_text_file(dump_file, 'channel:\npid:%s\nplat:Win32
\nprod:content_shell\n' % expected_pid) | 53 host.filesystem.write_text_file(dump_file, 'channel:\npid:%s\nplat:Win32
\nprod:content_shell\n' % expected_pid) |
| 53 build_dir = "/mock-checkout/out/Debug" | 54 build_dir = '/mock-checkout/out/Debug' |
| 54 host.filesystem.maybe_make_directory(build_dir) | 55 host.filesystem.maybe_make_directory(build_dir) |
| 55 dump_reader = DumpReaderWin(host, build_dir) | 56 dump_reader = DumpReaderWin(host, build_dir) |
| 56 | 57 |
| 57 self.assertTrue(dump_reader.check_is_functional()) | 58 self.assertTrue(dump_reader.check_is_functional()) |
| 58 self.assertEqual(expected_pid, dump_reader._get_pid_from_dump(dump_file)
) | 59 self.assertEqual(expected_pid, dump_reader._get_pid_from_dump(dump_file)
) |
| 59 | 60 |
| 60 def test_get_stack_from_dump(self): | 61 def test_get_stack_from_dump(self): |
| 61 host = MockHost() | 62 host = MockHost() |
| 62 | 63 |
| 63 dump_file = '/crash-dumps/dump.dmp' | 64 dump_file = '/crash-dumps/dump.dmp' |
| 64 real_dump_file = '/crash-dumps/dump.dmp' | 65 real_dump_file = '/crash-dumps/dump.dmp' |
| 65 host.filesystem.write_text_file(dump_file, 'product:content_shell\n') | 66 host.filesystem.write_text_file(dump_file, 'product:content_shell\n') |
| 66 host.filesystem.write_binary_file(real_dump_file, 'MDMP') | 67 host.filesystem.write_binary_file(real_dump_file, 'MDMP') |
| 67 build_dir = "/mock-checkout/out/Debug" | 68 build_dir = '/mock-checkout/out/Debug' |
| 68 host.filesystem.maybe_make_directory(build_dir) | 69 host.filesystem.maybe_make_directory(build_dir) |
| 69 dump_reader = DumpReaderWin(host, build_dir) | 70 dump_reader = DumpReaderWin(host, build_dir) |
| 70 | 71 |
| 71 self.assertTrue(dump_reader.check_is_functional()) | 72 self.assertTrue(dump_reader.check_is_functional()) |
| 72 host.executive.calls = [] | 73 host.executive.calls = [] |
| 73 self.assertEqual("MOCK output of child process", dump_reader._get_stack_
from_dump(dump_file)) | 74 self.assertEqual('MOCK output of child process', dump_reader._get_stack_
from_dump(dump_file)) |
| 74 self.assertEqual(1, len(host.executive.calls)) | 75 self.assertEqual(1, len(host.executive.calls)) |
| 75 cmd_line = " ".join(host.executive.calls[0]) | 76 cmd_line = ' '.join(host.executive.calls[0]) |
| 76 self.assertIn('cdb.exe', cmd_line) | 77 self.assertIn('cdb.exe', cmd_line) |
| 77 self.assertIn(real_dump_file, cmd_line) | 78 self.assertIn(real_dump_file, cmd_line) |
| OLD | NEW |