Prevent the logging code from exploding into infinite handleError recursion
when something serious goes wrong such that an exception occurs during
formatting of -any- log message.

Signed-off-by: Gregory Smith <gps@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3527 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/client/setup_modules_unittest.py b/client/setup_modules_unittest.py
index 571f449..5eb6f8e 100644
--- a/client/setup_modules_unittest.py
+++ b/client/setup_modules_unittest.py
@@ -17,6 +17,8 @@
         self.god.stub_with(sys, 'stderr', self.test_stderr)
         self.old_root_logging_level = logging.root.level
         logging.basicConfig(level=logging.ERROR)
+        # _autotest_logging_handle_error unsets this after being called once.
+        logging.raiseExceptions = 1
 
 
     def tearDown(self):
@@ -42,11 +44,15 @@
         else:
             self.fail()
         self.assert_autotest_logging_handle_error_called()
-        self.assertTrue(('MESSAGE' in self.stderr_str), repr(self.stderr_str))
-        self.assertTrue(('ARGS' in self.stderr_str), repr(self.stderr_str))
-        self.assertTrue(('Exception' in self.stderr_str), repr(self.stderr_str))
+        stderr_repr = repr(self.stderr_str)
+        self.assertTrue(('MESSAGE' in self.stderr_str), stderr_repr)
+        self.assertTrue(('ARGS' in self.stderr_str), stderr_repr)
+        self.assertTrue(('Exception' in self.stderr_str), stderr_repr)
         self.assertTrue(('setup_modules_unittest.py' in self.stderr_str),
-                        repr(self.stderr_str))
+                        stderr_repr)
+        self.assertTrue(('disabled.\n' in self.stderr_str), stderr_repr)
+        # Make sure this was turned off by our handle_error.
+        self.assertFalse(logging.raiseExceptions)
 
 
     def test_logging_monkey_patch_wrong_number_of_args(self):