mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-08-01 08:48:05 +00:00
Catch InvalidVersion specifically in plugin update comparison
Address review feedback: the version comparison caught a blind `except Exception` (ruff BLE001). Split the two failure modes and catch each specifically — ImportError for a missing `packaging` (a core dependency) and InvalidVersion for an unparseable version string — while preserving the existing "surface the mismatch" fallback behavior. Added a test for the unparseable-version path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EW8yDbsk8EceDpq6Hjgqj
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
5113b51234
commit
fe863602e3
@@ -433,6 +433,9 @@ class TestPluginsAPI:
|
|||||||
# Missing either side yields no signal.
|
# Missing either side yields no signal.
|
||||||
assert _is_plugin_update_available('', '1.0.0') is False
|
assert _is_plugin_update_available('', '1.0.0') is False
|
||||||
assert _is_plugin_update_available('1.0.0', '') is False
|
assert _is_plugin_update_available('1.0.0', '') is False
|
||||||
|
# Unparseable version differing from the installed one surfaces the
|
||||||
|
# mismatch rather than hiding a possible update.
|
||||||
|
assert _is_plugin_update_available('1.0.0', 'not-a-semver') is True
|
||||||
|
|
||||||
def test_get_plugin_health(self, client, mock_plugin_manager):
|
def test_get_plugin_health(self, client, mock_plugin_manager):
|
||||||
"""Test getting plugin health information."""
|
"""Test getting plugin health information."""
|
||||||
|
|||||||
@@ -134,9 +134,15 @@ def _is_plugin_update_available(installed_version: str, latest_version: str) ->
|
|||||||
if installed_version == latest_version:
|
if installed_version == latest_version:
|
||||||
return False
|
return False
|
||||||
try:
|
try:
|
||||||
from packaging.version import parse as _parse_version
|
from packaging.version import parse as _parse_version, InvalidVersion
|
||||||
|
except ImportError:
|
||||||
|
# packaging is a core dependency, but if it's somehow unavailable we
|
||||||
|
# can't compare semantically — surface the mismatch we already know
|
||||||
|
# exists (the two strings differ).
|
||||||
|
return True
|
||||||
|
try:
|
||||||
return _parse_version(latest_version) > _parse_version(installed_version)
|
return _parse_version(latest_version) > _parse_version(installed_version)
|
||||||
except Exception:
|
except InvalidVersion:
|
||||||
# Unparseable version string: we can't tell direction, so surface the
|
# Unparseable version string: we can't tell direction, so surface the
|
||||||
# mismatch rather than silently hiding a potential update.
|
# mismatch rather than silently hiding a potential update.
|
||||||
return True
|
return True
|
||||||
|
|||||||
Reference in New Issue
Block a user