diff options
Diffstat (limited to 'packages/meshbay-hub/tests')
| -rw-r--r-- | packages/meshbay-hub/tests/test_cast_subtitles.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/packages/meshbay-hub/tests/test_cast_subtitles.py b/packages/meshbay-hub/tests/test_cast_subtitles.py index 722a56a..3fe627d 100644 --- a/packages/meshbay-hub/tests/test_cast_subtitles.py +++ b/packages/meshbay-hub/tests/test_cast_subtitles.py @@ -391,3 +391,30 @@ def test_a_stream_without_subtitles_declares_none(loaded): """ assert "tracks" not in loaded["without"]["media"] assert loaded["without"]["options"]["activeTrackIds"] == [] + + +@chromecast_only +def test_progress_logging_is_off_unless_asked_for(): + """ + The receiver reports its state on a timer, so `player status: PLAYING` + repeats for as long as a film runs. Left on `console.log` it fills the + terminal the app was started from and buries everything else in it. + + Read rather than run because the noisy line only fires with a device on the + network. What is checked is the property that matters: nothing in this + module reaches the terminal unconditionally except a failure. `console.warn` + and `console.info` are named too — a future line using either would be just + as loud, and this guard would not otherwise see it. + """ + src = CHROMECAST.read_text(encoding="utf-8") + unconditional = [ + line.strip() for line in src.splitlines() + if ("console.log(" in line or "console.warn(" in line + or "console.info(" in line) + and not line.lstrip().startswith(("*", "//"))] + assert unconditional == [], ( + "these reach the terminal whatever the user asked for; route them " + f"through `debug` or `console.error`: {unconditional}") + # And the failure path is still audible, or a cast that dies takes its own + # explanation with it. + assert "console.error(`[cast-chromecast] client error" in src |