From 9737781604e6a092cee0d9e3d6121694d11b7621 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Thu, 12 Sep 2024 14:12:32 +0300 Subject: [PATCH] test(formatter): add typehints --- tests/test_formatter.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/tests/test_formatter.py b/tests/test_formatter.py index 567061a..cee03e7 100644 --- a/tests/test_formatter.py +++ b/tests/test_formatter.py @@ -1,25 +1,28 @@ import json import logging +from logging import LogRecord from pathlib import Path +from typing import Optional from unittest import TestCase -from unittest.mock import patch +from unittest.mock import Mock, patch from bunyan_formatter import BunyanFormatter class TestBunyanFormatter(TestCase): - def setUp(self): + def setUp(self) -> None: self.project_name = "test_project" self.project_root = Path("/path/to/project") self.formatter = BunyanFormatter(self.project_name, self.project_root) - def create_log_record(self, level, msg, pathname): - return logging.LogRecord( - name="test_logger", level=level, pathname=pathname, lineno=42, msg=msg, args=(), exc_info=None - ) + def create_log_record(self, level: int, msg: str, pathname: str) -> LogRecord: + return LogRecord(name="test_logger", level=level, pathname=pathname, lineno=42, msg=msg, args=(), exc_info=None) @patch("socket.gethostname") - def test_format_basic(self, mock_gethostname): + def test_format_basic(self, mock_gethostname: Optional[Mock]) -> None: + if mock_gethostname is None: + raise ValueError("mock_gethostname should not be None") + mock_gethostname.return_value = "test_host" record = self.create_log_record(logging.INFO, "Test message", "/path/to/project/test.py") @@ -36,25 +39,27 @@ class TestBunyanFormatter(TestCase): assert log_entry["line"] == 42 assert log_entry["file"] == "test.py" - def test_format_different_levels(self): + def test_format_different_levels(self) -> None: levels = [logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL] expected_levels = [20, 30, 40, 50, 60] - for level, expected in zip(levels, expected_levels): + for level, expected in zip(levels, expected_levels, strict=False): record = self.create_log_record(level, f"Test {logging.getLevelName(level)}", "/path/to/project/test.py") formatted = self.formatter.format(record) log_entry = json.loads(formatted) assert log_entry["level"] == expected assert log_entry["levelname"] == logging.getLevelName(level) - def test_format_file_outside_project(self): + def test_format_file_outside_project(self) -> None: record = self.create_log_record(logging.INFO, "Test message", "/path/outside/project/test.py") formatted = self.formatter.format(record) log_entry = json.loads(formatted) assert log_entry["file"] == "/path/outside/project/test.py" @patch("socket.gethostname") - def test_format_hostname_consistency(self, mock_gethostname): + def test_format_hostname_consistency(self, mock_gethostname: Optional[Mock]) -> None: + if mock_gethostname is None: + raise ValueError("mock_gethostname should not be None") mock_gethostname.return_value = "test_host" record1 = self.create_log_record(logging.INFO, "Message 1", "/path/to/project/test1.py") record2 = self.create_log_record(logging.INFO, "Message 2", "/path/to/project/test2.py") @@ -67,7 +72,7 @@ class TestBunyanFormatter(TestCase): assert log_entry1["hostname"] == log_entry2["hostname"] - def test_format_time(self): + def test_format_time(self) -> None: record = self.create_log_record(logging.INFO, "Test message", "/path/to/project/test.py") formatted = self.formatter.format(record) log_entry = json.loads(formatted)