test_RotatingLog.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import pytest
  2. from direct.directnotify import RotatingLog
  3. LOG_TEXT = 'Arbitrary log text'
  4. @pytest.fixture
  5. def log_dir(tmp_path):
  6. log_dir = tmp_path / 'logs'
  7. log_dir.mkdir()
  8. return log_dir
  9. @pytest.fixture
  10. def rotating_log(log_dir):
  11. log_filename = str(log_dir / 'log')
  12. rotating_log = RotatingLog.RotatingLog(log_filename)
  13. yield rotating_log
  14. rotating_log.close()
  15. def test_rotation(rotating_log, log_dir):
  16. rotating_log.sizeLimit = -1
  17. rotating_log.write('1')
  18. rotating_log.write('2')
  19. written = [f.read_text() for f in log_dir.iterdir()]
  20. assert written == ['1', '2'] or written == ['2', '1']
  21. def test_wrapper_methods(rotating_log, log_dir):
  22. rotating_log.write('')
  23. log_file, = log_dir.iterdir()
  24. assert rotating_log.fileno() == rotating_log.file.fileno()
  25. assert rotating_log.isatty() == rotating_log.file.isatty()
  26. rotating_log.writelines([LOG_TEXT] * 10)
  27. assert not log_file.read_text()
  28. rotating_log.flush()
  29. assert log_file.read_text() == LOG_TEXT * 10
  30. assert rotating_log.tell() == len(LOG_TEXT) * 10
  31. rotating_log.seek(len(LOG_TEXT))
  32. rotating_log.truncate(None)
  33. assert log_file.read_text() == LOG_TEXT