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