mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-11 00:47:01 +01:00
test_cups_service.py 390 -> 172 (usblp port status to _port), part2 261 -> 115 (status mapping and discovery out), part3 260 -> 105 (the four healthy-port cases out). part3 was one 235-line class, so it split by method rather than by class. The four part-numbered files are renamed for what they cover; three of them now name _cups_fallback, matching where the code moved earlier. The first run after the part2 split reported 400, not 402: the moved classes needed subprocess and get_status_info that my hand-written import block had dropped. Fixed, and the count is 402 again. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011w2Pj4Ek3ZNMQVYcFHgXDY
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""Tests for brother_printer._cups_fallback - IPP attribute queries."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import subprocess
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from python_pkg.brother_printer._cups_fallback import (
|
|
_get_cups_ipp_status,
|
|
_parse_ipp_attributes,
|
|
)
|
|
|
|
MOD = "python_pkg.brother_printer._cups_fallback"
|
|
|
|
|
|
class TestParseIppAttributes:
|
|
def test_parse(self) -> None:
|
|
output = " printer-state (enum) = idle\n printer-name (name) = Brother\n"
|
|
result = _parse_ipp_attributes(output)
|
|
assert result["printer-state"] == "idle"
|
|
assert result["printer-name"] == "Brother"
|
|
|
|
def test_no_match(self) -> None:
|
|
result = _parse_ipp_attributes("no attributes here\n")
|
|
assert result == {}
|
|
|
|
|
|
class TestGetCupsIppStatus:
|
|
@patch(f"{MOD}.shutil.which", return_value=None)
|
|
def test_no_ipptool(self, m: MagicMock) -> None:
|
|
assert _get_cups_ipp_status("Brother") == {}
|
|
|
|
@patch(f"{MOD}.subprocess.run")
|
|
@patch(f"{MOD}.shutil.which", return_value="/usr/bin/ipptool")
|
|
def test_success(self, w: MagicMock, mock_run: MagicMock) -> None:
|
|
mock_run.return_value = MagicMock(
|
|
stdout=" printer-state (enum) = idle\n",
|
|
)
|
|
result = _get_cups_ipp_status("Brother")
|
|
assert result["printer-state"] == "idle"
|
|
|
|
@patch(f"{MOD}.subprocess.run")
|
|
@patch(f"{MOD}.shutil.which", return_value="/usr/bin/ipptool")
|
|
def test_timeout(self, w: MagicMock, mock_run: MagicMock) -> None:
|
|
mock_run.side_effect = subprocess.TimeoutExpired("ipptool", 10)
|
|
assert _get_cups_ipp_status("Brother") == {}
|