Пример #1
0
 def test_syslog_shortcut_simple(self):
     """Make sure that ``coloredlogs.install(syslog=True)`` works."""
     system_log_file = self.find_system_log()
     expected_message = random_string(50)
     with cleanup_handlers():
         # See test_system_logging() for the importance of this log level.
         coloredlogs.install(syslog=True)
         logging.error("%s", expected_message)
     # See the comments in test_system_logging() on why this is retried.
     retry(lambda: check_contents(system_log_file, expected_message, True))
Пример #2
0
 def test_syslog_shortcut_simple(self):
     """Make sure that ``coloredlogs.install(syslog=True)`` works."""
     system_log_file = self.find_system_log()
     expected_message = random_string(50)
     with cleanup_handlers():
         # See test_system_logging() for the importance of this log level.
         coloredlogs.install(syslog=True)
         logging.error("%s", expected_message)
     # See the comments in test_system_logging() on why this is retried.
     retry(lambda: check_contents(system_log_file, expected_message, True))
Пример #3
0
 def test_partial_read(self):
     """Test that partial reading works as expected."""
     # This test method uses retry logic because `partial=True' makes these
     # tests prone to race conditions (this is the whole reason why
     # `partial=False' by default :-).
     initial_part = random_string()
     later_part = random_string()
     with CaptureOutput() as capturer:
         sys.stderr.write("%s\n" % initial_part)
         retry(lambda: initial_part in capturer.get_lines(partial=True))
         sys.stderr.write("%s\n" % later_part)
         retry(lambda: later_part in capturer.get_lines(partial=True))
Пример #4
0
 def test_syslog_shortcut_enhanced(self):
     """Make sure that ``coloredlogs.install(syslog='warning')`` works."""
     system_log_file = self.find_system_log()
     the_expected_message = random_string(50)
     not_an_expected_message = random_string(50)
     with cleanup_handlers():
         # See test_system_logging() for the importance of these log levels.
         coloredlogs.install(syslog='error')
         logging.warning("%s", not_an_expected_message)
         logging.error("%s", the_expected_message)
     # See the comments in test_system_logging() on why this is retried.
     retry(lambda: check_contents(system_log_file, the_expected_message, True))
     retry(lambda: check_contents(system_log_file, not_an_expected_message, False))
Пример #5
0
 def test_syslog_shortcut_enhanced(self):
     """Make sure that ``coloredlogs.install(syslog='warning')`` works."""
     system_log_file = self.find_system_log()
     the_expected_message = random_string(50)
     not_an_expected_message = random_string(50)
     with cleanup_handlers():
         # See test_system_logging() for the importance of these log levels.
         coloredlogs.install(syslog='error')
         logging.warning("%s", not_an_expected_message)
         logging.error("%s", the_expected_message)
     # See the comments in test_system_logging() on why this is retried.
     retry(lambda: check_contents(system_log_file, the_expected_message, True))
     retry(lambda: check_contents(system_log_file, not_an_expected_message, False))
Пример #6
0
 def test_system_logging(self):
     """Make sure the :class:`coloredlogs.syslog.SystemLogging` context manager works."""
     system_log_file = self.find_system_log()
     expected_message = random_string(50)
     with SystemLogging(programname='coloredlogs-test-suite') as syslog:
         if not syslog:
             return self.skipTest("couldn't connect to syslog daemon")
         # When I tried out the system logging support on macOS 10.13.1 on
         # 2018-01-05 I found that while WARNING and ERROR messages show up
         # in the system log DEBUG and INFO messages don't. This explains
         # the importance of the level of the log message below.
         logging.error("%s", expected_message)
     # Retry the following assertion (for up to 60 seconds) to give the
     # logging daemon time to write our log message to disk. This
     # appears to be needed on MacOS workers on Travis CI, see:
     # https://travis-ci.org/xolox/python-coloredlogs/jobs/325245853
     retry(lambda: check_contents(system_log_file, expected_message, True))
Пример #7
0
 def test_system_logging(self):
     """Make sure the :class:`coloredlogs.syslog.SystemLogging` context manager works."""
     system_log_file = self.find_system_log()
     expected_message = random_string(50)
     with SystemLogging(programname='coloredlogs-test-suite') as syslog:
         if not syslog:
             return self.skipTest("couldn't connect to syslog daemon")
         # When I tried out the system logging support on macOS 10.13.1 on
         # 2018-01-05 I found that while WARNING and ERROR messages show up
         # in the system log DEBUG and INFO messages don't. This explains
         # the importance of the level of the log message below.
         logging.error("%s", expected_message)
     # Retry the following assertion (for up to 60 seconds) to give the
     # logging daemon time to write our log message to disk. This
     # appears to be needed on MacOS workers on Travis CI, see:
     # https://travis-ci.org/xolox/python-coloredlogs/jobs/325245853
     retry(lambda: check_contents(system_log_file, expected_message, True))
Пример #8
0
 def test_retry_return(self):
     """Test :func:`~humanfriendly.testing.retry()` based on return values."""
     # Define a helper function that will return False on the first call and
     # return a number on the second call.
     def success_helper():
         if not hasattr(success_helper, 'was_called'):
             # On the first call we return False.
             setattr(success_helper, 'was_called', True)
             return False
         else:
             # On the second call we return a number.
             return 42
     assert retry(success_helper) == 42
     self.assertRaises(CallableTimedOut, retry, lambda: False, timeout=1)
Пример #9
0
    def test_retry_raise(self):
        """Test :func:`~humanfriendly.testing.retry()` based on assertion errors."""
        # Define a helper function that will raise an assertion error on the
        # first call and return a string on the second call.
        def success_helper():
            if not hasattr(success_helper, 'was_called'):
                setattr(success_helper, 'was_called', True)
                assert False
            else:
                return 'yes'
        assert retry(success_helper) == 'yes'

        # Define a helper function that always raises an assertion error.
        def failure_helper():
            assert False
        self.assertRaises(AssertionError, retry, failure_helper, timeout=1)