aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub')
-rw-r--r--packages/meshbay-hub/tests/test_cast_subtitles.py27
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