You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The plugin manifest declares a compatibility field (PEP 440 style, e.g. >=0.8.0) but there is no compatibility/versioning mechanism, and therefore no tests verifying that compatibility decisions behave correctly. This issue adds a focused test matrix for the compatibility logic once the mechanism exists (#168). It must stay independent enough for a contributor to implement as a follow-up, not a dependency that blocks the mechanism itself.
Context
app/services/plugins.py::PluginManifest - compatibility field (default >=0.8.0), parsed but not yet enforced.
plugins/plugin.schema.json - documents compatibility as PEP 440 syntax.
A parameterized test matrix for the compatibility mechanism. Do not build the mechanism here; do not require a massive matrix.
Technical requirements
Assume a compatibility check function (from Plugin version compatibility checks (PEP 440) #168) that answers "does plugin compatibility range accept the given app/plugin API version?". Parameterize tests over combinations of:
Plugin version / compatibility specifier (e.g. ==0.1.0, >=0.8.0, ~=0.8.0, !=0.9.0, ranges with spaces/commas).
Application / plugin API version being compared against.
Supported compatibility range -> compatible.
Unsupported versions -> incompatible.
Boundary versions (exactly at the edge of a range, e.g. >=0.8.0 with app version 0.8.0 vs 0.7.9).
Invalid specifiers (malformed, empty) -> handled safely (rejected or reported, never crash).
Use pytest.mark.parametrize; keep the matrix compact and readable.
Document the expected behavior the matrix encodes (the deterministic contract).
Problem
The plugin manifest declares a
compatibilityfield (PEP 440 style, e.g.>=0.8.0) but there is no compatibility/versioning mechanism, and therefore no tests verifying that compatibility decisions behave correctly. This issue adds a focused test matrix for the compatibility logic once the mechanism exists (#168). It must stay independent enough for a contributor to implement as a follow-up, not a dependency that blocks the mechanism itself.Context
app/services/plugins.py::PluginManifest-compatibilityfield (default>=0.8.0), parsed but not yet enforced.plugins/plugin.schema.json- documentscompatibilityas PEP 440 syntax.pyproject.toml- application version (0.1.0).Scope
A parameterized test matrix for the compatibility mechanism. Do not build the mechanism here; do not require a massive matrix.
Technical requirements
==0.1.0,>=0.8.0,~=0.8.0,!=0.9.0, ranges with spaces/commas).>=0.8.0with app version0.8.0vs0.7.9).pytest.mark.parametrize; keep the matrix compact and readable.Acceptance criteria
Testing requirements
Dependencies
Difficulty
Medium
Priority
Low