Skip to content

Plugin compatibility matrix tests #197

Description

@Hey-Yetunde

Problem

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.
  • pyproject.toml - application version (0.1.0).
  • The compatibility/versioning mechanism itself is tracked in Plugin version compatibility checks (PEP 440) #168 (Plugin version compatibility checks, PEP 440). This issue assumes Plugin version compatibility checks (PEP 440) #168 (or an equivalent) exists and produces a comparison function.

Scope

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).

Acceptance criteria

Testing requirements

  • Parameterized tests as above; no integration/network tests required.

Dependencies

Difficulty

Medium

Priority

Low

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    difficulty/mediumphase-8Work scoped for Phase 8: Plugins & ExtensionspluginPlugin system: manifests, registry, capabilities, eventspriority/lowtesting

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions