Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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"