Home | History | Annotate | Download | only in functional
      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