plugin_compatibility_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package service
  2. import (
  3. "testing"
  4. pluginv1 "github.com/Wei-Shaw/sub2api/pkg/pluginapi/v1"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestEvaluatePluginCompatibility(t *testing.T) {
  9. manifest := testPluginManifest(nil)
  10. host := PluginHostInfo{Version: "0.1.179", BuildType: "release"}
  11. result := EvaluatePluginCompatibility(manifest, host)
  12. require.True(t, result.Compatible)
  13. assert.True(t, result.Tested)
  14. assert.Equal(t, "compatible", result.Status)
  15. manifest.Requires.TestedSub2APIVersions = []string{"0.1.178"}
  16. result = EvaluatePluginCompatibility(manifest, host)
  17. require.True(t, result.Compatible)
  18. assert.False(t, result.Tested)
  19. assert.Equal(t, "untested", result.Status)
  20. manifest.Requires.Sub2API = ">=0.2.0 <0.3.0"
  21. result = EvaluatePluginCompatibility(manifest, host)
  22. assert.False(t, result.Compatible)
  23. assert.Equal(t, "incompatible", result.Status)
  24. }
  25. func TestEvaluatePluginCompatibilityRejectsProtocolMismatch(t *testing.T) {
  26. manifest := testPluginManifest(nil)
  27. manifest.Requires.PluginProtocol = pluginv1.ProtocolVersion + 1
  28. result := EvaluatePluginCompatibility(manifest, PluginHostInfo{Version: "0.1.179"})
  29. assert.False(t, result.Compatible)
  30. assert.Equal(t, "incompatible", result.Status)
  31. }
  32. func TestMatchesSemverRange(t *testing.T) {
  33. assert.True(t, matchesSemverRange("0.1.179", ">=0.1.170, <0.2.0"))
  34. assert.True(t, matchesSemverRange("v1.2.3", "=1.2.3"))
  35. assert.False(t, matchesSemverRange("0.1.169", ">=0.1.170 <0.2.0"))
  36. assert.False(t, matchesSemverRange("dev", ">=0.1.0"))
  37. assert.False(t, matchesSemverRange("0.1.179", "^0.1.0"))
  38. }