| package discovery |
| |
| import ( |
| "fmt" |
| "testing" |
| ) |
| |
| func TestVersionSet(t *testing.T) { |
| tests := []struct { |
| ConstraintStr string |
| VersionStr string |
| ShouldHave bool |
| }{ |
| // These test cases are not exhaustive since the underlying go-version |
| // library is well-tested. This is mainly here just to exercise our |
| // wrapper code, but also used as an opportunity to cover some basic |
| // but important cases such as the ~> constraint so that we'll be more |
| // likely to catch any accidental breaking behavior changes in the |
| // underlying library. |
| { |
| ">=1.0.0", |
| "1.0.0", |
| true, |
| }, |
| { |
| ">=1.0.0", |
| "0.0.0", |
| false, |
| }, |
| { |
| ">=1.0.0", |
| "1.1.0-beta1", |
| false, |
| }, |
| { |
| ">=1.0.0", |
| "1.1.0", |
| true, |
| }, |
| { |
| "~>1.1.0-a", |
| "1.1.0-beta1", |
| true, |
| }, |
| { |
| "~>1.1.0", |
| "1.1.2", |
| true, |
| }, |
| { |
| "~>1.1.0", |
| "1.2.0", |
| false, |
| }, |
| } |
| |
| for _, test := range tests { |
| t.Run(fmt.Sprintf("%s has %s", test.ConstraintStr, test.VersionStr), func(t *testing.T) { |
| accepted, err := ConstraintStr(test.ConstraintStr).Parse() |
| if err != nil { |
| t.Fatalf("unwanted error parsing constraints string %q: %s", test.ConstraintStr, err) |
| } |
| |
| version, err := VersionStr(test.VersionStr).Parse() |
| if err != nil { |
| t.Fatalf("unwanted error parsing version string %q: %s", test.VersionStr, err) |
| } |
| |
| if got, want := accepted.Allows(version), test.ShouldHave; got != want { |
| t.Errorf("Has returned %#v; want %#v", got, want) |
| } |
| }) |
| } |
| } |