✅ | Boost coverage to 60% with 256 passing tests
All checks were successful
SonarQube Code Quality Scan / SonarQube Scan (push) Successful in 1m52s
All checks were successful
SonarQube Code Quality Scan / SonarQube Scan (push) Successful in 1m52s
- mpris.py: 81% → 100% — import fallbacks, flush_props edge cases, stop_async error path, run_async exception path, notify loops - player.py: 51% → 73% — AudioPlayer state/volume/loop/queue tests, _on_download_failed, _on_download_succeeded, _on_playback_state, _on_media_status, seek/skip/previous, _start_prefetch, _advance, _cancel_active_downloads, DownloadWorker._do_cancel - test_gui_widgets.py: 50 → 88 tests across TestAudioPlayer and existing widget tests - 5 modules at 100%: config, discord_rpc, main, mpris, music_db
This commit is contained in:
@@ -193,6 +193,29 @@ class TestPlayerQtFallback:
|
||||
assert player.QMediaPlayer is not None
|
||||
assert hasattr(player.QMediaPlayer, "PlaybackState")
|
||||
|
||||
def test_stub_qmediaplayer_methods(self):
|
||||
"""Stub QMediaPlayer methods can be called without error."""
|
||||
_clean_pyside_modules()
|
||||
side_effect = _make_importer(block_pyside=True)
|
||||
|
||||
with mock.patch("builtins.__import__", side_effect=side_effect):
|
||||
import player
|
||||
|
||||
mp = player.QMediaPlayer()
|
||||
# Methods that should be no-ops
|
||||
mp.set_source("https://example.com/audio.mp3")
|
||||
mp.play()
|
||||
mp.pause()
|
||||
mp.stop()
|
||||
mp.set_position(30000)
|
||||
mp.set_audio_output(None)
|
||||
|
||||
# Methods that return values
|
||||
assert mp.position() == 0
|
||||
assert mp.duration() == 0
|
||||
assert mp.get_playback_state() == 0 # stopped_state
|
||||
assert mp.get_audio_output() is None
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
# gui.py fallback
|
||||
|
||||
Reference in New Issue
Block a user