mirror of
https://bitbucket.org/smil3y/kde-extraapps.git
synced 2025-02-25 19:32:54 +00:00
66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
![]() |
import subprocess
|
||
|
import time
|
||
|
import unittest
|
||
|
|
||
|
import dbus
|
||
|
|
||
|
APPNAME = "amarok"
|
||
|
MPRIS_OBJECT_PATH = "/org/mpris/MediaPlayer2"
|
||
|
MPRIS_PREFIX = "org.mpris.MediaPlayer2"
|
||
|
|
||
|
ROOT_IFACE = MPRIS_PREFIX
|
||
|
PLAYER_IFACE = MPRIS_PREFIX + ".Player"
|
||
|
|
||
|
def get_mpris_object():
|
||
|
bus = dbus.SessionBus()
|
||
|
return bus.get_object(MPRIS_PREFIX + "." + APPNAME, MPRIS_OBJECT_PATH)
|
||
|
|
||
|
def start_player():
|
||
|
devnull = file("/dev/null", "a")
|
||
|
player = subprocess.Popen(["amarok", "--nofork"], stderr=devnull, stdout=devnull)
|
||
|
time.sleep(10)
|
||
|
return player
|
||
|
|
||
|
def stop_player(player):
|
||
|
player.terminate()
|
||
|
player.wait()
|
||
|
|
||
|
class TestMediaPlayer2(unittest.TestCase):
|
||
|
def check_property(self, props, key, expected_value):
|
||
|
value = props[key]
|
||
|
self.assertEquals(value, expected_value)
|
||
|
del props[key]
|
||
|
|
||
|
def check_has_property(self, props, key):
|
||
|
self.assert_(key in props)
|
||
|
del props[key]
|
||
|
|
||
|
def test_properties(self):
|
||
|
player = start_player()
|
||
|
try:
|
||
|
mpris = get_mpris_object()
|
||
|
props = mpris.GetAll(ROOT_IFACE)
|
||
|
self.check_property(props, "CanQuit", True)
|
||
|
self.check_property(props, "CanRaise", True)
|
||
|
self.check_property(props, "HasTrackList", False)
|
||
|
self.check_property(props, "Identity", "Amarok")
|
||
|
self.check_property(props, "DesktopEntry", "amarok")
|
||
|
self.check_has_property(props, "SupportedUriSchemes")
|
||
|
self.check_has_property(props, "SupportedMimeTypes")
|
||
|
self.assertEquals(len(props), 0)
|
||
|
finally:
|
||
|
stop_player(player)
|
||
|
|
||
|
def test_quit(self):
|
||
|
player = start_player()
|
||
|
mpris = get_mpris_object()
|
||
|
mpris.Quit()
|
||
|
start = time.time()
|
||
|
while time.time() < start + 60 * 5 and player.poll() is None:
|
||
|
time.sleep(.5)
|
||
|
if player.poll() is None:
|
||
|
stop_player(player)
|
||
|
self.fail("Player not stopped")
|
||
|
|
||
|
unittest.main()
|