Skip to content

Commit c60862b

Browse files
committed
fixed test updates 2
1 parent e4d308e commit c60862b

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

src/cuepoint/update/update_manager.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -636,11 +636,15 @@ def _do_check(self) -> None:
636636
pass
637637
return
638638

639-
# Update channel if changed
640-
channel = self.preferences.get_channel()
641-
if self.checker.channel != channel:
639+
# Update channel if changed (use effective channel: test builds must stay on test)
640+
effective_channel = (
641+
"test"
642+
if is_test_version(self.current_version)
643+
else self.preferences.get_channel()
644+
)
645+
if self.checker.channel != effective_channel:
642646
self.checker = UpdateChecker(
643-
self.feed_url, self.current_version, channel
647+
self.feed_url, self.current_version, effective_channel
644648
)
645649

646650
# Check for updates

src/tests/unit/update/test_two_appcast_channels.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import tempfile
1212
from pathlib import Path
13+
from unittest.mock import patch
1314

1415
import pytest
1516

@@ -154,6 +155,34 @@ def test_test_with_suffix_unsigned(self):
154155
class TestTestToTestUpdateReturnsDownloadUrl:
155156
"""Test build updating to newer test build gets a valid download_url (no 404 after publishing test releases)."""
156157

158+
def test_thread_path_keeps_test_channel_for_test_build(self):
159+
"""_do_check (thread path, used on Windows) must not overwrite test channel with preference.
160+
161+
Bug: channel was set from preferences.get_channel() so test builds fetched stable feed.
162+
"""
163+
with tempfile.NamedTemporaryFile(suffix=".json", delete=False) as f:
164+
prefs_path = f.name
165+
try:
166+
prefs = UpdatePreferences(preferences_file=Path(prefs_path))
167+
prefs.set_channel(UpdatePreferences.CHANNEL_STABLE)
168+
manager = UpdateManager(
169+
current_version="0.0.1-test",
170+
feed_url="https://example.com/updates",
171+
preferences=prefs,
172+
)
173+
assert manager.checker.channel == "test"
174+
feed_url_before = manager.checker.get_feed_url("windows")
175+
assert "/test/" in feed_url_before
176+
177+
with patch.object(manager.checker, "check_for_updates", return_value=None):
178+
manager._do_check()
179+
180+
assert manager.checker.channel == "test"
181+
feed_url_after = manager.checker.get_feed_url("windows")
182+
assert "/test/" in feed_url_after
183+
finally:
184+
Path(prefs_path).unlink(missing_ok=True)
185+
157186
def test_test_version_sees_newer_test_in_appcast_with_download_url(self):
158187
"""0.0.3-test sees 0.0.4-test in appcast and gets update with HTTPS download_url."""
159188
# Minimal appcast with one item: 0.0.4-test, GitHub-style enclosure URL

0 commit comments

Comments
 (0)