🐛 | Improve test coverage for SonarQube quality gate
Some checks failed
SonarQube Code Quality Scan / SonarQube Scan (push) Failing after 1m20s
Some checks failed
SonarQube Code Quality Scan / SonarQube Scan (push) Failing after 1m20s
- Restructure conftest to try real Qt first, fall back to stubs only if that fails — ensures try/except guards in player.py and gui.py are exercised in CI, improving new_coverage - Add tests for _migrate_legacy error paths (JSONDecodeError, OSError, db migration) — config.py now 100% covered - Add tests for _disconnect, _send_presence exception handlers — discord_rpc.py now 97% covered - Add tests for _cleanup_path and _tmp_dir helpers — player.py coverage bumped to 33%
This commit is contained in:
@@ -174,3 +174,60 @@ class TestDiscordRPC:
|
||||
# Should not crash, just log a warning
|
||||
assert drpc._connected is False
|
||||
drpc.stop()
|
||||
|
||||
def test_disconnect_close_exception_handled(self):
|
||||
"""_disconnect handles close() failure gracefully (covers lines 128-129)."""
|
||||
with mock.patch("discord_rpc.Presence") as mock_presence_cls:
|
||||
mock_instance = mock.MagicMock()
|
||||
mock_instance.close.side_effect = RuntimeError("close failed")
|
||||
mock_presence_cls.return_value = mock_instance
|
||||
|
||||
from discord_rpc import DiscordRPC
|
||||
drpc = DiscordRPC(client_id="test")
|
||||
drpc._rpc = mock_instance
|
||||
drpc._connected = True
|
||||
drpc._disconnect()
|
||||
assert drpc._connected is False
|
||||
assert drpc._rpc is None
|
||||
|
||||
def test_send_presence_clear_exception_handled(self):
|
||||
"""_send_presence handles clear() failure gracefully (covers lines 142-143)."""
|
||||
with mock.patch("discord_rpc.Presence") as mock_presence_cls:
|
||||
mock_instance = mock.MagicMock()
|
||||
mock_instance.clear.side_effect = RuntimeError("clear failed")
|
||||
mock_presence_cls.return_value = mock_instance
|
||||
|
||||
from discord_rpc import DiscordRPC
|
||||
drpc = DiscordRPC(client_id="test")
|
||||
drpc._rpc = mock_instance
|
||||
drpc._connected = True
|
||||
drpc._song = None # no song -> goes to clear branch
|
||||
drpc._send_presence()
|
||||
assert drpc._connected is False
|
||||
|
||||
def test_send_presence_update_exception_handled(self):
|
||||
"""_send_presence handles update() failure gracefully (covers lines 160-167)."""
|
||||
with mock.patch("discord_rpc.Presence") as mock_presence_cls:
|
||||
mock_instance = mock.MagicMock()
|
||||
mock_instance.update.side_effect = RuntimeError("update failed")
|
||||
mock_presence_cls.return_value = mock_instance
|
||||
|
||||
from discord_rpc import DiscordRPC
|
||||
drpc = DiscordRPC(client_id="test")
|
||||
drpc._rpc = mock_instance
|
||||
drpc._connected = True
|
||||
drpc._song = {"title": "Test", "artists": [{"name": "A"}], "duration": 100}
|
||||
drpc._start_ts = 1000
|
||||
drpc._send_presence()
|
||||
assert drpc._connected is False
|
||||
|
||||
def test_send_presence_rpc_is_none(self):
|
||||
"""_send_presence does nothing when _rpc is None (covers line ~155)."""
|
||||
from discord_rpc import DiscordRPC
|
||||
drpc = DiscordRPC(client_id="test")
|
||||
drpc._rpc = None
|
||||
drpc._song = {"title": "Test"}
|
||||
drpc._start_ts = 1000
|
||||
# Should not crash
|
||||
drpc._send_presence()
|
||||
assert True
|
||||
|
||||
Reference in New Issue
Block a user