Source code for tests.test_logging

from pathlib import Path
import tempfile
import unittest

from picometer.logging import add_file_handler, register_log_listener
from picometer.instructions import Routine
from picometer.process import process
from tests.test_instructions import get_yaml


[docs] class TestLogging(unittest.TestCase):
[docs] def setUp(self) -> None: self.routine = Routine.from_string(get_yaml('test_ferrocene.yaml'))
[docs] def test_file_handler(self) -> None: with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as temp_dir: log_path = Path(temp_dir) / 'picometer.log' _ = add_file_handler(log_path) _ = process(self.routine) with open(log_path, 'r') as log_file: lines = log_file.readlines() self.assertGreater(len(lines), 1600)
[docs] def test_log_listener(self) -> None: snatched_log_msg = [] snatch_log_msg = lambda s: snatched_log_msg.append(s) with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as temp_dir: log_path = Path(temp_dir) / 'picometer.log' _ = add_file_handler(log_path) register_log_listener(snatch_log_msg) _ = process(self.routine) with open(log_path, 'r') as log_file: self.assertEqual(snatched_log_msg, log_file.read().splitlines())