77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
|
package state
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/pkg/errors"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestUnsupportedVersions(t *testing.T) {
|
||
|
var tests = []struct {
|
||
|
name string
|
||
|
constraints []string
|
||
|
version string
|
||
|
supported bool
|
||
|
err error
|
||
|
}{
|
||
|
{
|
||
|
name: "should not support 0.13",
|
||
|
constraints: []string{"=0.13"},
|
||
|
version: "0.13.0",
|
||
|
supported: false,
|
||
|
err: nil,
|
||
|
},
|
||
|
{
|
||
|
name: "should return error on version parsing",
|
||
|
constraints: UnsupportedVersionConstraints,
|
||
|
version: "test",
|
||
|
supported: false,
|
||
|
err: errors.New("Malformed version: test"),
|
||
|
},
|
||
|
{
|
||
|
name: "should return error on constraint parsing",
|
||
|
constraints: []string{"bad_constraint"},
|
||
|
version: "0.14",
|
||
|
supported: false,
|
||
|
err: errors.New("Malformed constraint: bad_constraint"),
|
||
|
},
|
||
|
{
|
||
|
name: "should support 0.11",
|
||
|
constraints: UnsupportedVersionConstraints,
|
||
|
version: "0.11.0",
|
||
|
supported: true,
|
||
|
err: nil,
|
||
|
},
|
||
|
{
|
||
|
name: "should support 0.14.8",
|
||
|
constraints: UnsupportedVersionConstraints,
|
||
|
version: "0.14.8",
|
||
|
supported: true,
|
||
|
err: nil,
|
||
|
},
|
||
|
{
|
||
|
name: "should not support <0.11",
|
||
|
constraints: UnsupportedVersionConstraints,
|
||
|
version: "0.10.9",
|
||
|
supported: false,
|
||
|
err: nil,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
t.Run(test.name, func(t *testing.T) {
|
||
|
UnsupportedVersionConstraints = test.constraints
|
||
|
|
||
|
got, err := IsVersionSupported(test.version)
|
||
|
assert.Equal(t, test.supported, got)
|
||
|
|
||
|
if err != nil {
|
||
|
assert.EqualError(t, test.err, err.Error())
|
||
|
} else {
|
||
|
assert.Equal(t, test.err, err)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|