def __init__(self, host, port_name, **kwargs): super(WinPort, self).__init__(host, port_name, **kwargs) self._version = port_name[port_name.index('win-') + len('win-'):] assert self._version in self.SUPPORTED_VERSIONS, "%s is not in %s" % (self._version, self.SUPPORTED_VERSIONS) if not self.get_option('disable_breakpad'): self._dump_reader = DumpReaderWin(host, self._build_path()) self._crash_service = None self._crash_service_available = None
def test_check_is_functional_cdb_not_found(self): host = MockHost() host.executive = MockExecutive(should_throw=True) build_dir = "/mock-checkout/out/Debug" host.filesystem.maybe_make_directory(build_dir) dump_reader = DumpReaderWin(host, build_dir) self.assertFalse(dump_reader.check_is_functional())
def test_get_pid_from_dump(self): host = MockHost() dump_file = '/crash-dumps/dump.txt' expected_pid = '4711' host.filesystem.write_text_file(dump_file, 'channel:\npid:%s\nplat:Win32\nprod:content_shell\n' % expected_pid) build_dir = "/mock-checkout/out/Debug" host.filesystem.maybe_make_directory(build_dir) dump_reader = DumpReaderWin(host, build_dir) self.assertTrue(dump_reader.check_is_functional()) self.assertEqual(expected_pid, dump_reader._get_pid_from_dump(dump_file))
def test_get_stack_from_dump(self): host = MockHost() dump_file = '/crash-dumps/dump.dmp' real_dump_file = '/crash-dumps/dump.dmp' host.filesystem.write_text_file(dump_file, 'product:content_shell\n') host.filesystem.write_binary_file(real_dump_file, 'MDMP') build_dir = "/mock-checkout/out/Debug" host.filesystem.maybe_make_directory(build_dir) dump_reader = DumpReaderWin(host, build_dir) self.assertTrue(dump_reader.check_is_functional()) host.executive.calls = [] self.assertEqual("MOCK output of child process", dump_reader._get_stack_from_dump(dump_file)) self.assertEqual(1, len(host.executive.calls)) cmd_line = " ".join(host.executive.calls[0]) self.assertIn('cdb.exe', cmd_line) self.assertIn(real_dump_file, cmd_line)