async def test_emit_does_rollover_if_should_rollover(self): handler = BaseAsyncRotatingFileHandler(filename=self.temp_file.name) handler.should_rollover = Mock(return_value=True) async def rollover_is_done(): """ sleep is needed so that the loop can schedule the other `do_rollover` coroutines, simulating a real `do_rollover` behaviour """ await asyncio.sleep(0.1) handler.should_rollover.return_value = False handler.do_rollover = CoroutineMock(side_effect=rollover_is_done) await asyncio.gather(*(handler.emit( LogRecord( name=str(i), level=20, pathname="/aiologger/tests/test_logger.py", lineno=17, msg="Xablau!", exc_info=None, args=None, )) for i in range(42))) handler.do_rollover.assert_awaited_once()
async def test_rotation_filename_delegates_to_the_namer_if_a_namer_is_provided( self): namer = Mock(return_value="Xena") handler = BaseAsyncRotatingFileHandler(filename=self.temp_file.name, namer=namer) self.assertEqual(handler.rotation_filename("Xablau"), "Xena") namer.assert_called_once_with("Xablau")
async def test_rotate_calls_the_rotator_if_one_is_avaialble(self): handler = BaseAsyncRotatingFileHandler(filename=self.temp_file.name) handler.rotator = Mock() destination = self.temp_file.name + "1" await handler.rotate(self.temp_file.name, destination) handler.rotator.assert_called_once_with(self.temp_file.name, destination)
async def test_emit_awaits_for_handle_error_is_an_exceptions_is_raised( self): handler = BaseAsyncRotatingFileHandler(filename=self.temp_file.name) handler.should_rollover = Mock(return_value=False) exc = OSError() with patch("aiologger.handlers.files.AsyncFileHandler.emit", side_effect=exc), patch.object( handler, "handle_error", CoroutineMock()) as handleError: log_record = LogRecord( name="Xablau", level=20, pathname="/aiologger/tests/test_logger.py", lineno=17, msg="Xablau!", exc_info=None, args=None, ) await handler.emit(log_record) handleError.assert_awaited_once_with(log_record, exc)
async def test_rotate_renames_the_source_file_if_a_rotator_isnt_available( self): handler = BaseAsyncRotatingFileHandler(filename=self.temp_file.name) destination = self.temp_file.name + "1" self.assertTrue(os.path.exists(self.temp_file.name)) self.assertFalse(os.path.exists(destination)) await handler.rotate(self.temp_file.name, destination) self.assertFalse(os.path.exists(self.temp_file.name)) self.assertTrue(os.path.exists(destination))
async def test_rotation_filename_uses_the_default_if_a_namer_isnt_provided( self): handler = BaseAsyncRotatingFileHandler(filename=self.temp_file.name) self.assertEqual(handler.rotation_filename("Xablau"), "Xablau")