Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions gateway/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -7652,10 +7652,11 @@ def run_sync():
user_config, platform_key, "streaming"
)
# None = no per-platform override → follow global config
_global_streaming = _scfg.enabled and _scfg.transport != "off"
_streaming_enabled = (
_scfg.enabled and _scfg.transport != "off"
_global_streaming
if _plat_streaming is None
else bool(_plat_streaming)
else _global_streaming and bool(_plat_streaming)
)
_want_stream_deltas = _streaming_enabled
_want_interim_messages = interim_assistant_messages_enabled
Expand Down
34 changes: 34 additions & 0 deletions tests/gateway/test_display_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,3 +353,37 @@ def test_explicit_true_enables(self):
}
}
assert resolve_display_setting(config, "email", "streaming") is True


class TestStreamingGateGlobalOverride:
"""display.streaming must not override streaming.enabled: false (issue #8338)."""

@staticmethod
def _gate(_scfg_enabled, _scfg_transport, _plat_streaming):
"""Replicate the streaming gate logic from gateway/run.py."""
_global_streaming = _scfg_enabled and _scfg_transport != "off"
return (
_global_streaming
if _plat_streaming is None
else _global_streaming and bool(_plat_streaming)
)

def test_display_true_but_global_off_means_disabled(self):
"""display.streaming=True should NOT enable streaming when
streaming.enabled=False."""
assert self._gate(False, "sse", True) is False

def test_both_on_means_enabled(self):
assert self._gate(True, "sse", True) is True

def test_global_on_no_override_means_enabled(self):
assert self._gate(True, "sse", None) is True

def test_global_off_no_override_means_disabled(self):
assert self._gate(False, "sse", None) is False

def test_global_on_override_false_means_disabled(self):
assert self._gate(True, "sse", False) is False

def test_transport_off_means_disabled(self):
assert self._gate(True, "off", True) is False
Loading