feat(palette): sixteen ANSI colour ladders, cycled with c
This commit is contained in:
1 parent
253b462df1
commit
43ddd8666b
14 files changed
+622
-111
No files matched your search
@@ -9,6 +9,7 @@ import pytest
|
||||
from beefy_player import config
|
||||
from beefy_player.app import BeefyPlayerApp
|
||||
from beefy_player.models import Song
|
||||
from beefy_player.widgets.art import ArtPane
|
||||
from beefy_player.widgets.help import HelpScreen
|
||||
from beefy_player.widgets.stage import StagePanel
|
||||
from beefy_player.widgets.station_list import StationList
|
||||
@@ -259,3 +260,53 @@ async def test_media_session_commands_drive_the_app() -> None:
|
||||
app.media_actions.put("volume:25")
|
||||
await pilot.pause(0.2)
|
||||
assert app.volume == 25
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_menus_take_the_inline_artwork_down_and_put_it_back(monkeypatch) -> None:
|
||||
"""Terminal images sit over a modal unless the image is deleted first."""
|
||||
calls: list[str] = []
|
||||
monkeypatch.setattr(ArtPane, "suspend", lambda self: calls.append("suspend"))
|
||||
monkeypatch.setattr(ArtPane, "resume", lambda self: calls.append("resume"))
|
||||
|
||||
app = BeefyPlayerApp(autoplay=False, offline=True, audio=False)
|
||||
async with app.run_test(size=(100, 30)) as pilot:
|
||||
await pilot.pause()
|
||||
|
||||
await pilot.press("question_mark")
|
||||
await pilot.pause()
|
||||
assert calls == ["suspend"]
|
||||
await pilot.press("x")
|
||||
await pilot.pause()
|
||||
assert calls == ["suspend", "resume"]
|
||||
|
||||
await pilot.press("p")
|
||||
await pilot.pause()
|
||||
assert calls[-1] == "suspend"
|
||||
await pilot.press("escape")
|
||||
await pilot.pause()
|
||||
assert calls[-1] == "resume"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_the_mosaic_gives_way_to_a_real_image(monkeypatch) -> None:
|
||||
"""The pattern must not peek out around a letterboxed picture."""
|
||||
from beefy_player.widgets import art as art_module
|
||||
|
||||
monkeypatch.setattr(art_module.artwork, "supported", lambda: True)
|
||||
|
||||
app = BeefyPlayerApp(autoplay=False, offline=True, audio=False)
|
||||
async with app.run_test(size=(110, 34)) as pilot:
|
||||
await pilot.pause()
|
||||
pane = app.query_one(ArtPane)
|
||||
assert pane.display, "the artwork pane should be on screen at this size"
|
||||
|
||||
app.artwork_bytes = None
|
||||
patterned = [line.plain for line in pane.render().renderables]
|
||||
assert patterned and any(line.strip() for line in patterned)
|
||||
|
||||
app.artwork_bytes = b"pretend this is a png"
|
||||
blank = [line.plain for line in pane.render().renderables]
|
||||
assert len(blank) == len(patterned)
|
||||
assert len(blank[0]) == len(patterned[0])
|
||||
assert all(not line.strip() for line in blank)
|
||||
Reference in new issue
Block a user