mirror of https://github.com/liamg/aminal.git
155 lines
6.1 KiB
Go
155 lines
6.1 KiB
Go
package version
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
var anyConstraints = map[string][]*Constraint{
|
|
"*": []*Constraint{},
|
|
"*.*": []*Constraint{},
|
|
"*.x.*": []*Constraint{},
|
|
"x.x.x.*": []*Constraint{},
|
|
}
|
|
|
|
func TestParseAnyConstraints(t *testing.T) {
|
|
for in, out := range anyConstraints {
|
|
constraint := NewConstrainGroupFromString(in)
|
|
if x := constraint.GetConstraints(); len(x) != 0 {
|
|
t.Errorf("FAIL: fromString(%v) = {%s}: want {%s}", in, x, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
var simpleConstraints = map[string][]*Constraint{
|
|
"<>1.0.0": []*Constraint{{"<>", "1.0.0.0"}},
|
|
"!=1.0.0": []*Constraint{{"!=", "1.0.0.0"}},
|
|
">1.0.0": []*Constraint{{">", "1.0.0.0"}},
|
|
"<1.2.3.4": []*Constraint{{"<", "1.2.3.4-dev"}},
|
|
"<=1.2.3": []*Constraint{{"<=", "1.2.3.0"}},
|
|
">=1.2.3": []*Constraint{{">=", "1.2.3.0"}},
|
|
"=1.2.3": []*Constraint{{"=", "1.2.3.0"}},
|
|
"==1.2.3": []*Constraint{{"==", "1.2.3.0"}},
|
|
"1.2.3": []*Constraint{{"=", "1.2.3.0"}},
|
|
"=1.0": []*Constraint{{"=", "1.0.0.0"}},
|
|
"1.2.3b5": []*Constraint{{"=", "1.2.3.0-beta5"}},
|
|
">= 1.2.3": []*Constraint{{">=", "1.2.3.0"}},
|
|
">=dev-master": []*Constraint{{">=", "9999999-dev"}},
|
|
"dev-master": []*Constraint{{"=", "9999999-dev"}},
|
|
"dev-feature-a": []*Constraint{{"=", "dev-feature-a"}},
|
|
"dev-some-fix": []*Constraint{{"=", "dev-some-fix"}},
|
|
"dev-CAPS": []*Constraint{{"=", "dev-CAPS"}},
|
|
"dev-master as 1.0.0": []*Constraint{{"=", "9999999-dev"}},
|
|
"<1.2.3.4-stable": []*Constraint{{"<", "1.2.3.4"}},
|
|
|
|
"<=3.0@dev": []*Constraint{{"<=", "3.0.0.0"}},
|
|
"1.0@dev": []*Constraint{{"=", "1.0.0.0"}}, //IgnoresStabilityFlag
|
|
"1.0.x-dev#abcd123": []*Constraint{{"=", "1.0.9999999.9999999-dev"}}, //IgnoresReferenceOnDevVersion
|
|
"1.0.x-dev#trunk/@123": []*Constraint{{"=", "1.0.9999999.9999999-dev"}}, //IgnoresReferenceOnDevVersion
|
|
//"1.0#abcd123": []string{"=", "1.0.0.0"}, //FailsOnBadReference
|
|
//"1.0#trunk/@123": []string{"=", "1.0.0.0"}, //FailsOnBadReference
|
|
}
|
|
|
|
func TestParseConstraints(t *testing.T) {
|
|
for in, out := range simpleConstraints {
|
|
constraint := NewConstrainGroupFromString(in)
|
|
if x := constraint.GetConstraints(); x[0].String() != out[0].String() {
|
|
t.Errorf("FAIL: parseConstraints(%v) = {%s}: want {%s}", in, x, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
var wildcardConstraints = map[string][]*Constraint{
|
|
"2.*": []*Constraint{{">", "1.9999999.9999999.9999999"}, {"<", "2.9999999.9999999.9999999"}},
|
|
"20.*": []*Constraint{{">", "19.9999999.9999999.9999999"}, {"<", "20.9999999.9999999.9999999"}},
|
|
"2.0.*": []*Constraint{{">", "1.9999999.9999999.9999999"}, {"<", "2.0.9999999.9999999"}},
|
|
"2.2.x": []*Constraint{{">", "2.1.9999999.9999999"}, {"<", "2.2.9999999.9999999"}},
|
|
"2.10.x": []*Constraint{{">", "2.9.9999999.9999999"}, {"<", "2.10.9999999.9999999"}},
|
|
"2.1.3.*": []*Constraint{{">", "2.1.2.9999999"}, {"<", "2.1.3.9999999"}},
|
|
"0.*": []*Constraint{{"<", "0.9999999.9999999.9999999"}},
|
|
}
|
|
|
|
func TestParseConstraintsWildcardConstraints(t *testing.T) {
|
|
for in, out := range wildcardConstraints {
|
|
constraint := NewConstrainGroupFromString(in)
|
|
if x := constraint.GetConstraints(); x[0].String() != out[0].String() && x[1].String() != out[1].String() {
|
|
t.Errorf("FAIL: parseConstraints(%v) = {%s}: want {%s}", in, x, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
var tildeConstraints = map[string][]*Constraint{
|
|
"~1": []*Constraint{{">=", "1.0.0.0"}, {"<", "2.0.0.0-dev"}},
|
|
"~1.2": []*Constraint{{">=", "1.2.0.0"}, {"<", "2.0.0.0-dev"}},
|
|
"~1.2.3": []*Constraint{{">=", "1.2.3.0"}, {"<", "1.3.0.0-dev"}},
|
|
"~1.2.3.4": []*Constraint{{">=", "1.2.3.4"}, {"<", "1.2.4.0-dev"}},
|
|
"~1.2-beta": []*Constraint{{">=", "1.2.0.0-beta"}, {"<", "2.0.0.0-dev"}},
|
|
"~1.2-b2": []*Constraint{{">=", "1.2.0.0-beta2"}, {"<", "2.0.0.0-dev"}},
|
|
"~1.2-BETA2": []*Constraint{{">=", "1.2.0.0-beta2"}, {"<", "2.0.0.0-dev"}},
|
|
"~1.2.2-dev": []*Constraint{{">=", "1.2.2.0-dev"}, {"<", "1.3.0.0-dev"}},
|
|
}
|
|
|
|
func TestParseConstraintsTildeConstraints(t *testing.T) {
|
|
for in, out := range tildeConstraints {
|
|
constraint := NewConstrainGroupFromString(in)
|
|
if x := constraint.GetConstraints(); x[0].String() != out[0].String() && x[1].String() != out[1].String() {
|
|
t.Errorf("FAIL: parseConstraints(%v) = {%s}: want {%s}", in, x, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
var multiConstraints = map[string][]*Constraint{
|
|
">2.0,<=3.0": []*Constraint{{">", "2.0.0.0"}, {"<=", "3.0.0.0"}},
|
|
">2.0@stable,<=3.0@dev": []*Constraint{{">", "2.0.0.0"}, {"<=", "3.0.0.0-dev"}},
|
|
}
|
|
|
|
func TestParseConstraintsMultiConstraints(t *testing.T) {
|
|
for in, out := range multiConstraints {
|
|
constraint := NewConstrainGroupFromString(in)
|
|
if x := constraint.GetConstraints(); x[0].String() != out[0].String() && x[1].String() != out[1].String() {
|
|
t.Errorf("FAIL: parseConstraints(%v) = {%s}: want {%s}", in, x, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
var miscConstraints = map[string]bool{
|
|
"*|1.0": true,
|
|
">2.0,<=3.0|2.5.0beta": true,
|
|
">2.0,<=3.0|3.5.0beta": false,
|
|
">=2.2.3,<2.4-dev|2.3.3": true,
|
|
"~1.2.3|1.2.3.5": true,
|
|
"~1.2.3|1.4.3.5": false,
|
|
"2.0.*|2.0.5": true,
|
|
"2.0.*|2.1.5": false,
|
|
"2.0.5|2.0.5": true,
|
|
"2.0.5|2.0.9": false,
|
|
">2.0.5|2.0.9": true,
|
|
"<2.0.5|2.0.9": false,
|
|
">=dev-master|dev-master": true,
|
|
}
|
|
|
|
func TestMatch(t *testing.T) {
|
|
for in, out := range miscConstraints {
|
|
tmp := strings.Split(in, "|")
|
|
|
|
constraint := NewConstrainGroupFromString(tmp[0])
|
|
if x := constraint.Match(tmp[1]); x != out {
|
|
t.Errorf("FAIL: Match(%v) = {%v}: want {%v}", in, x, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAddConstraint(t *testing.T) {
|
|
group := NewConstrainGroup()
|
|
group.AddConstraint(NewConstrain("=", "1.0.0"))
|
|
|
|
constraints := group.GetConstraints()
|
|
if x := constraints[0].GetOperator(); x != "=" {
|
|
t.Errorf("FAIL: AddConstraintOperator() = {%s}: want {%s}", x, "=")
|
|
}
|
|
|
|
if x := constraints[0].GetVersion(); x != "1.0.0" {
|
|
t.Errorf("FAIL: AddConstraintVersion() = {%s}: want {%s}", x, "1.0.0")
|
|
}
|
|
}
|