def patched_moc(fake_qtile, monkeypatch, fake_window): widget = moc.Moc() MockMocpProcess.reset() monkeypatch.setattr(widget, "call_process", MockMocpProcess.run) monkeypatch.setattr("libqtile.widget.moc.subprocess.Popen", MockMocpProcess.run) fakebar = FakeBar([widget], window=fake_window) widget._configure(fake_qtile, fakebar) return widget
def patched_moc(fake_qtile, monkeypatch, fake_window): widget = moc.Moc() MockMocpProcess.reset() monkeypatch.setattr(widget, "call_process", MockMocpProcess.run) monkeypatch.setattr("libqtile.widget.moc.subprocess.Popen", MockMocpProcess.run) fakebar = Bar([widget], 24) fakebar.window = fake_window fakebar.width = 10 fakebar.height = 10 fakebar.draw = no_op widget._configure(fake_qtile, fakebar) return widget
def test_moc_button_presses(manager_nospawn, minimal_conf_noscreen, monkeypatch): # This needs to be patched before initialising the widgets as mouse callbacks # bind subprocess.Popen. monkeypatch.setattr("subprocess.Popen", MockMocpProcess.run) # Long interval as we don't need this polling on its own. mocwidget = moc.Moc(update_interval=30) MockMocpProcess.reset() monkeypatch.setattr(mocwidget, "call_process", MockMocpProcess.run) monkeypatch.setattr("libqtile.widget.moc.subprocess.Popen", MockMocpProcess.run) config = minimal_conf_noscreen config.screens = [ libqtile.config.Screen(top=libqtile.bar.Bar([mocwidget], 10)) ] manager_nospawn.start(config) # When started, we have the first item playing topbar = manager_nospawn.c.bar["top"] info = manager_nospawn.c.widget["moc"].info assert info()["text"] == "♫ Rick Astley - Never Gonna Give You Up" # Trigger next item and wait for update poll topbar.fake_button_press(0, "top", 0, 0, button=4) manager_nospawn.c.widget["moc"].eval("self.update(self.poll())") assert info()["text"] == "♫ Neil Diamond - Sweet Caroline" # Trigger next item and wait for update poll # This item's state is set to "STOP" so there's no track title topbar.fake_button_press(0, "top", 0, 0, button=4) manager_nospawn.c.widget["moc"].eval("self.update(self.poll())") assert info()["text"] == "♫" # Click to play it and get the information topbar.fake_button_press(0, "top", 0, 0, button=1) manager_nospawn.c.widget["moc"].eval("self.update(self.poll())") assert info()["text"] == "♫ Tom Jones - It's Not Unusual" # Trigger previous item and wait for update poll topbar.fake_button_press(0, "top", 0, 0, button=5) manager_nospawn.c.widget["moc"].eval("self.update(self.poll())") assert info()["text"] == "♫ Neil Diamond - Sweet Caroline"