diff --git a/os_win/tests/unit/utils/io/test_namedpipe.py b/os_win/tests/unit/utils/io/test_namedpipe.py index a2d09126..0568c988 100644 --- a/os_win/tests/unit/utils/io/test_namedpipe.py +++ b/os_win/tests/unit/utils/io/test_namedpipe.py @@ -324,6 +324,16 @@ class NamedPipeTestCase(base.BaseTestCase): def test_write_to_log_size_exceeded(self): self._test_write_to_log(size_exceeded=True) + def test_flush_log_file(self): + self._handler._log_file_handle = None + self._handler.flush_log_file() + + self._handler._log_file_handle = mock.Mock() + self._handler.flush_log_file() + + self._handler._log_file_handle.flush.side_effect = ValueError + self._handler.flush_log_file() + @mock.patch.object(namedpipe.NamedPipeHandler, '_retry_if_file_in_use') @mock.patch.object(builtins, 'open') @mock.patch.object(namedpipe, 'os') diff --git a/os_win/utils/io/namedpipe.py b/os_win/utils/io/namedpipe.py index 4e6a799d..1331c540 100644 --- a/os_win/utils/io/namedpipe.py +++ b/os_win/utils/io/namedpipe.py @@ -221,6 +221,13 @@ class NamedPipeHandler(object): except Exception: self._stopped.set() + def flush_log_file(self): + try: + self._log_file_handle.flush() + except (AttributeError, ValueError): + # We'll ignore errors caused by closed handles. + pass + def _rotate_logs(self): self._log_file_handle.flush() self._log_file_handle.close()