diff --git a/tagcmp_test.go b/tagcmp_test.go index 87612bf..279df98 100644 --- a/tagcmp_test.go +++ b/tagcmp_test.go @@ -886,6 +886,52 @@ func TestDeltaString(t *testing.T) { } } +func TestIsUpgradeCompatible(t *testing.T) { + testsTrue := [][]string{ + {"22-fpm", "22-fpm"}, + {"22-fpm", "22.0-fpm"}, + {"22-fpm", "22.0.0-fpm"}, + {"22-fpm", "22.2.0-fpm"}, + {"22-fpm", "22.0.0-fpm"}, + {"22.2-fpm", "22.2-fpm"}, + {"22.2-fpm", "22.2.0-fpm"}, + {"22.2.2-fpm", "22.2.2-fpm"}, + } + testsFalse := [][]string{ + {"22-fpm", "22-alpine"}, + {"22-fpm", "23-fpm"}, + {"22-fpm", "21-fpm"}, + {"22.2-fpm", "22.0.2-fpm"}, + {"22.2.0-fpm", "22.2.2-fpm"}, + } + for _, test := range testsTrue { + pin, err := tagcmp.Parse(test[0]) + if err != nil { + t.Error(err) + } + upTag, err := tagcmp.Parse(test[1]) + if err != nil { + t.Error(err) + } + if !pin.IsUpgradeCompatible(upTag) { + t.Errorf("pin %s should be upgradable to %s but returned false", test[0], test[1]) + } + } + for _, test := range testsFalse { + pin, err := tagcmp.Parse(test[0]) + if err != nil { + t.Error(err) + } + upTag, err := tagcmp.Parse(test[1]) + if err != nil { + t.Error(err) + } + if pin.IsUpgradeCompatible(upTag) { + t.Errorf("pin %s should not be upgradable to %s but returned true", test[0], test[1]) + } + } +} + func TestUpgradeDelta(t *testing.T) { pairs := []struct { t1 string