blob: 0e58bd12a33544b5b6bd0c897e408b6b52ba2002 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#!/usr/bin/env python
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import glob
import os
import pyauto_functional # Must be imported before pyauto
import pyauto
import pyauto_utils
class CrashReporterTest(pyauto.PyUITest):
"""TestCase for Crash Reporter."""
def testRendererCrash(self):
"""Verify renderer's crash reporting.
Attempts to crash, and then checks that crash dumps get generated. Does
not actually test crash reports on the server.
"""
# Bail out if not a branded build
properties = self.GetBrowserInfo()['properties']
if properties['branding'] != 'Google Chrome':
return
# Make sure Chrome minidumps are enabled on Chrome OS
if self.IsChromeOS():
minidumps_file = '/mnt/stateful_partition/etc/enable_chromium_minidumps'
assert os.path.exists(minidumps_file), 'Chrome minidumps are not enabled.'
breakpad_folder = properties['DIR_CRASH_DUMPS']
self.assertTrue(breakpad_folder, 'Cannot figure crash dir')
unused = pyauto_utils.ExistingPathReplacer(path=breakpad_folder)
# If the temp dir was created as root on chromeos, make sure chronos can
# write to it
if self.IsChromeOS() and os.geteuid() == 0:
os.chown(breakpad_folder, 1000, 1000)
self.NavigateToURL('about:crash') # Trigger renderer crash
dmp_files = glob.glob(os.path.join(breakpad_folder, '*.dmp'))
self.assertEqual(1, len(dmp_files))
if __name__ == '__main__':
pyauto_functional.Main()
|