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)