mirror of
https://github.com/kuhyx/testsAndMisc-archive.git
synced 2026-07-04 11:43:13 +02:00
refactor(tests): remove noqa comments from test files
- Fix lint issues in keyboard_coop, lichess_bot, and tag_divider tests - Prefix unused parameters with underscore instead of noqa: ARG002
This commit is contained in:
parent
9482719608
commit
2486449300
@ -1,8 +1,5 @@
|
||||
"""Unit tests for keyboard_coop module."""
|
||||
|
||||
# ruff: noqa: SLF001
|
||||
# Tests need to access private members to verify internal logic
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
"""Unit tests for lichess_bot engine module."""
|
||||
|
||||
# ruff: noqa: SLF001
|
||||
# Tests need to access private members to verify internal logic
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
|
||||
@ -1,13 +1,5 @@
|
||||
"""Unit tests for lichess_bot lichess_api module."""
|
||||
|
||||
# ruff: noqa: SLF001, S105, ARG001, PT012, TRY003, EM101, PERF402
|
||||
# SLF001: Tests need to access private members to verify internal logic
|
||||
# S105: Test tokens are not real passwords
|
||||
# ARG001: Mock functions need *args, **kwargs signature
|
||||
# PT012: pytest.raises can contain multiple statements for generator testing
|
||||
# TRY003, EM101: Exception messages in tests are fine
|
||||
# PERF402: We need loop append for generator consumption with exception break
|
||||
|
||||
from http import HTTPStatus
|
||||
import json
|
||||
from unittest.mock import MagicMock, patch
|
||||
@ -18,6 +10,8 @@ import requests
|
||||
|
||||
from python_pkg.lichess_bot.lichess_api import LichessAPI
|
||||
|
||||
_TERMINATION_MSG = "Test termination"
|
||||
|
||||
|
||||
class _TestTerminationError(Exception):
|
||||
"""Custom exception to break out of infinite loops in tests."""
|
||||
@ -30,7 +24,8 @@ class TestLichessAPIInit:
|
||||
"""Test initialization creates session with proper headers."""
|
||||
api = LichessAPI("test_token")
|
||||
|
||||
assert api.token == "test_token"
|
||||
expected = "test_token"
|
||||
assert api.token == expected
|
||||
assert "Bearer test_token" in api.session.headers["Authorization"]
|
||||
assert "application/json" in api.session.headers["Accept"]
|
||||
|
||||
@ -119,7 +114,7 @@ class TestStreamEvents:
|
||||
# stream_events has a while True loop, so we need to break out of it
|
||||
# by raising an exception after yielding our test data
|
||||
|
||||
def iter_lines_with_stop(*args: object, **kwargs: object) -> list[str]:
|
||||
def iter_lines_with_stop(*_args: object, **_kwargs: object) -> list[str]:
|
||||
"""Return lines then signal generator to stop."""
|
||||
return ['{"type": "challenge"}', "", '{"type": "gameStart"}']
|
||||
|
||||
@ -131,12 +126,12 @@ class TestStreamEvents:
|
||||
|
||||
call_count = 0
|
||||
|
||||
def mock_request(*args: object, **kwargs: object) -> MagicMock:
|
||||
def mock_request(*_args: object, **_kwargs: object) -> MagicMock:
|
||||
nonlocal call_count
|
||||
call_count += 1
|
||||
if call_count > 1:
|
||||
# Break out of while True on second iteration
|
||||
raise _TestTerminationError("Test termination")
|
||||
raise _TestTerminationError(_TERMINATION_MSG)
|
||||
return mock_response
|
||||
|
||||
events_collected: list[dict] = []
|
||||
@ -144,8 +139,7 @@ class TestStreamEvents:
|
||||
patch.object(api, "_request", side_effect=mock_request),
|
||||
pytest.raises(_TestTerminationError),
|
||||
):
|
||||
for event in api.stream_events():
|
||||
events_collected.append(event)
|
||||
events_collected.extend(api.stream_events())
|
||||
|
||||
assert len(events_collected) == 2
|
||||
assert events_collected[0]["type"] == "challenge"
|
||||
@ -154,7 +148,7 @@ class TestStreamEvents:
|
||||
def test_stream_events_skips_invalid_json(self, api: LichessAPI) -> None:
|
||||
"""Test stream_events skips non-JSON lines."""
|
||||
|
||||
def iter_lines_with_invalid(*args: object, **kwargs: object) -> list[str]:
|
||||
def iter_lines_with_invalid(*_args: object, **_kwargs: object) -> list[str]:
|
||||
return ['{"type": "challenge"}', "not json", '{"type": "gameStart"}']
|
||||
|
||||
mock_response = MagicMock()
|
||||
@ -165,11 +159,11 @@ class TestStreamEvents:
|
||||
|
||||
call_count = 0
|
||||
|
||||
def mock_request(*args: object, **kwargs: object) -> MagicMock:
|
||||
def mock_request(*_args: object, **_kwargs: object) -> MagicMock:
|
||||
nonlocal call_count
|
||||
call_count += 1
|
||||
if call_count > 1:
|
||||
raise _TestTerminationError("Test termination")
|
||||
raise _TestTerminationError(_TERMINATION_MSG)
|
||||
return mock_response
|
||||
|
||||
events_collected: list[dict] = []
|
||||
@ -177,8 +171,7 @@ class TestStreamEvents:
|
||||
patch.object(api, "_request", side_effect=mock_request),
|
||||
pytest.raises(_TestTerminationError),
|
||||
):
|
||||
for event in api.stream_events():
|
||||
events_collected.append(event)
|
||||
events_collected.extend(api.stream_events())
|
||||
|
||||
assert len(events_collected) == 2
|
||||
|
||||
@ -192,7 +185,7 @@ class TestStreamEvents:
|
||||
mock_response_429.__enter__ = MagicMock(return_value=mock_response_429)
|
||||
mock_response_429.__exit__ = MagicMock(return_value=False)
|
||||
|
||||
def iter_lines_ok(*args: object, **kwargs: object) -> list[str]:
|
||||
def iter_lines_ok(*_args: object, **_kwargs: object) -> list[str]:
|
||||
return ['{"type": "test"}']
|
||||
|
||||
mock_response_ok = MagicMock()
|
||||
@ -203,14 +196,14 @@ class TestStreamEvents:
|
||||
|
||||
call_count = 0
|
||||
|
||||
def mock_request(*args: object, **kwargs: object) -> MagicMock:
|
||||
def mock_request(*_args: object, **_kwargs: object) -> MagicMock:
|
||||
nonlocal call_count
|
||||
call_count += 1
|
||||
if call_count == 1:
|
||||
return mock_response_429
|
||||
if call_count == 2:
|
||||
return mock_response_ok
|
||||
raise _TestTerminationError("Test termination")
|
||||
raise _TestTerminationError(_TERMINATION_MSG)
|
||||
|
||||
events_collected: list[dict] = []
|
||||
with (
|
||||
@ -218,8 +211,7 @@ class TestStreamEvents:
|
||||
patch("python_pkg.lichess_bot.lichess_api.time.sleep"),
|
||||
pytest.raises(_TestTerminationError),
|
||||
):
|
||||
for event in api.stream_events():
|
||||
events_collected.append(event)
|
||||
events_collected.extend(api.stream_events())
|
||||
|
||||
assert len(events_collected) == 1
|
||||
assert call_count == 3 # 429 + OK + termination
|
||||
@ -411,7 +403,7 @@ class TestMakeMove:
|
||||
|
||||
call_count = 0
|
||||
|
||||
def mock_request(*args: object, **kwargs: object) -> MagicMock:
|
||||
def mock_request(*_args: object, **_kwargs: object) -> MagicMock:
|
||||
nonlocal call_count
|
||||
call_count += 1
|
||||
if call_count == 1:
|
||||
|
||||
@ -5,6 +5,7 @@ making it difficult to test the main functionality without refactoring.
|
||||
These tests verify the module-level constants.
|
||||
"""
|
||||
|
||||
import importlib
|
||||
from pathlib import Path
|
||||
import sys
|
||||
from unittest.mock import MagicMock, patch
|
||||
@ -88,7 +89,7 @@ class TestModuleExecution:
|
||||
patch("pathlib.Path.iterdir", return_value=[]),
|
||||
patch("os.chdir"),
|
||||
):
|
||||
import python_pkg.tag_divider.tag_divider # noqa: F401
|
||||
importlib.import_module("python_pkg.tag_divider.tag_divider")
|
||||
|
||||
# mkdir should have been called twice (once for each folder)
|
||||
assert mock_mkdir.call_count == 2
|
||||
@ -108,7 +109,7 @@ class TestModuleExecution:
|
||||
patch("pathlib.Path.iterdir", return_value=[]),
|
||||
patch("os.chdir"),
|
||||
):
|
||||
import python_pkg.tag_divider.tag_divider # noqa: F401
|
||||
importlib.import_module("python_pkg.tag_divider.tag_divider")
|
||||
|
||||
# mkdir should not have been called
|
||||
mock_mkdir.assert_not_called()
|
||||
@ -137,7 +138,7 @@ class TestModuleExecution:
|
||||
patch.dict("sys.modules", {"cv2": mock_cv2}),
|
||||
patch("shutil.move", mock_move),
|
||||
):
|
||||
import python_pkg.tag_divider.tag_divider # noqa: F401
|
||||
importlib.import_module("python_pkg.tag_divider.tag_divider")
|
||||
|
||||
# Image should be moved to first folder
|
||||
mock_move.assert_called_once()
|
||||
@ -166,7 +167,7 @@ class TestModuleExecution:
|
||||
patch.dict("sys.modules", {"cv2": mock_cv2}),
|
||||
patch("shutil.move", mock_move),
|
||||
):
|
||||
import python_pkg.tag_divider.tag_divider # noqa: F401
|
||||
importlib.import_module("python_pkg.tag_divider.tag_divider")
|
||||
|
||||
# Image should be moved to second folder
|
||||
mock_move.assert_called_once()
|
||||
@ -192,7 +193,7 @@ class TestModuleExecution:
|
||||
patch.dict("sys.modules", {"cv2": mock_cv2}),
|
||||
patch("shutil.move", mock_move),
|
||||
):
|
||||
import python_pkg.tag_divider.tag_divider # noqa: F401
|
||||
importlib.import_module("python_pkg.tag_divider.tag_divider")
|
||||
|
||||
# No image processing should have occurred
|
||||
mock_cv2.imread.assert_not_called()
|
||||
@ -222,7 +223,7 @@ class TestModuleExecution:
|
||||
patch.dict("sys.modules", {"cv2": mock_cv2}),
|
||||
patch("shutil.move", mock_move),
|
||||
):
|
||||
import python_pkg.tag_divider.tag_divider # noqa: F401
|
||||
importlib.import_module("python_pkg.tag_divider.tag_divider")
|
||||
|
||||
# File should not be moved
|
||||
mock_move.assert_not_called()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user