File indexing completed on 2024-04-21 04:48:05
0001 import subprocess 0002 import time 0003 import unittest 0004 0005 import dbus 0006 0007 APPNAME = "amarok" 0008 MPRIS_OBJECT_PATH = "/org/mpris/MediaPlayer2" 0009 MPRIS_PREFIX = "org.mpris.MediaPlayer2" 0010 0011 ROOT_IFACE = MPRIS_PREFIX 0012 PLAYER_IFACE = MPRIS_PREFIX + ".Player" 0013 0014 def get_mpris_object(): 0015 bus = dbus.SessionBus() 0016 return bus.get_object(MPRIS_PREFIX + "." + APPNAME, MPRIS_OBJECT_PATH) 0017 0018 def start_player(): 0019 devnull = file("/dev/null", "a") 0020 player = subprocess.Popen(["amarok", "--nofork"], stderr=devnull, stdout=devnull) 0021 time.sleep(10) 0022 return player 0023 0024 def stop_player(player): 0025 player.terminate() 0026 player.wait() 0027 0028 class TestMediaPlayer2(unittest.TestCase): 0029 def check_property(self, props, key, expected_value): 0030 value = props[key] 0031 self.assertEquals(value, expected_value) 0032 del props[key] 0033 0034 def check_has_property(self, props, key): 0035 self.assert_(key in props) 0036 del props[key] 0037 0038 def test_properties(self): 0039 player = start_player() 0040 try: 0041 mpris = get_mpris_object() 0042 props = mpris.GetAll(ROOT_IFACE) 0043 self.check_property(props, "CanQuit", True) 0044 self.check_property(props, "CanRaise", True) 0045 self.check_property(props, "HasTrackList", False) 0046 self.check_property(props, "Identity", "Amarok") 0047 self.check_property(props, "DesktopEntry", "amarok") 0048 self.check_has_property(props, "SupportedUriSchemes") 0049 self.check_has_property(props, "SupportedMimeTypes") 0050 self.assertEquals(len(props), 0) 0051 finally: 0052 stop_player(player) 0053 0054 def test_quit(self): 0055 player = start_player() 0056 mpris = get_mpris_object() 0057 mpris.Quit() 0058 start = time.time() 0059 while time.time() < start + 60 * 5 and player.poll() is None: 0060 time.sleep(.5) 0061 if player.poll() is None: 0062 stop_player(player) 0063 self.fail("Player not stopped") 0064 0065 unittest.main()