mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-13 08:15:43 +00:00
fix: safer version
This commit is contained in:
1 parent
619b41dc5b
commit
2b5f20d0ec
2 files changed
+40
-1
No files matched your search
@@ -192,8 +192,22 @@ def _release_lock(redis_client) -> None:
|
||||
|
||||
|
||||
def _fetch(instance_id: str) -> Optional[Dict[str, Any]]:
|
||||
version = get_version()
|
||||
if version in ("", "unknown"):
|
||||
# The endpoint rejects payloads without a valid semver, and the
|
||||
# rejection is otherwise logged at DEBUG — invisible under the
|
||||
# usual ``-l INFO`` Celery worker start. Surface it loudly so a
|
||||
# misconfigured release (missing or unset ``__version__``) is
|
||||
# obvious instead of silently disabling the check.
|
||||
logger.warning(
|
||||
"version check: skipping — get_version() returned %r. "
|
||||
"Set __version__ in application/version.py to a valid "
|
||||
"version string.",
|
||||
version,
|
||||
)
|
||||
return None
|
||||
payload = {
|
||||
"version": get_version(),
|
||||
"version": version,
|
||||
"instance_id": instance_id,
|
||||
"python_version": platform.python_version(),
|
||||
"platform": sys.platform,
|
||||
|
||||
@@ -295,6 +295,31 @@ def test_redis_unavailable_proceeds_uncached(monkeypatch, enable_check):
|
||||
post_spy.assert_called_once()
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_unknown_version_warns_and_skips(monkeypatch, enable_check):
|
||||
"""get_version() → "unknown" must not hit the endpoint silently."""
|
||||
repo = _FakeRepo({"version_check_notice_shown": "1"})
|
||||
_install_repo(monkeypatch, repo)
|
||||
_install_db_session(monkeypatch)
|
||||
redis_client = _make_redis_mock(get_return=None, set_return=True)
|
||||
monkeypatch.setattr(vc_module, "get_redis_instance", lambda: redis_client)
|
||||
monkeypatch.setattr(vc_module, "get_version", lambda: "unknown")
|
||||
|
||||
post_spy = MagicMock()
|
||||
monkeypatch.setattr(vc_module.requests, "post", post_spy)
|
||||
|
||||
with patch.object(vc_module, "logger") as mock_logger:
|
||||
vc_module.run_check()
|
||||
|
||||
post_spy.assert_not_called()
|
||||
redis_client.setex.assert_not_called()
|
||||
# Lock released so the next cycle can retry.
|
||||
redis_client.delete.assert_called_once_with(vc_module.LOCK_KEY)
|
||||
assert mock_logger.warning.called
|
||||
assert "unknown" in mock_logger.warning.call_args.args[0].lower() \
|
||||
or mock_logger.warning.call_args.args[1:] == ("unknown",)
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_http_5xx_swallowed(monkeypatch, enable_check):
|
||||
repo = _FakeRepo({"version_check_notice_shown": "1"})
|
||||
|
||||
Reference in new issue
Block a user