| package discovery |
| |
| import ( |
| "fmt" |
| "testing" |
| ) |
| |
| func TestPluginConstraintsAllows(t *testing.T) { |
| tests := []struct { |
| Constraints *PluginConstraints |
| Version string |
| Want bool |
| }{ |
| { |
| &PluginConstraints{ |
| Versions: AllVersions, |
| }, |
| "1.0.0", |
| true, |
| }, |
| { |
| &PluginConstraints{ |
| Versions: ConstraintStr(">1.0.0").MustParse(), |
| }, |
| "1.0.0", |
| false, |
| }, |
| // This is not an exhaustive test because the callees |
| // already have plentiful tests of their own. |
| } |
| |
| for i, test := range tests { |
| t.Run(fmt.Sprintf("%02d", i), func(t *testing.T) { |
| version := VersionStr(test.Version).MustParse() |
| got := test.Constraints.Allows(version) |
| if got != test.Want { |
| t.Logf("looking for %s in %#v", test.Version, test.Constraints) |
| t.Errorf("wrong result %#v; want %#v", got, test.Want) |
| } |
| }) |
| } |
| } |
| |
| func TestPluginConstraintsAcceptsSHA256(t *testing.T) { |
| mustUnhex := func(hex string) (ret []byte) { |
| _, err := fmt.Sscanf(hex, "%x", &ret) |
| if err != nil { |
| panic(err) |
| } |
| return ret |
| } |
| |
| tests := []struct { |
| Constraints *PluginConstraints |
| Digest []byte |
| Want bool |
| }{ |
| { |
| &PluginConstraints{ |
| Versions: AllVersions, |
| SHA256: mustUnhex("0123456789abcdef"), |
| }, |
| mustUnhex("0123456789abcdef"), |
| true, |
| }, |
| { |
| &PluginConstraints{ |
| Versions: AllVersions, |
| SHA256: mustUnhex("0123456789abcdef"), |
| }, |
| mustUnhex("f00dface"), |
| false, |
| }, |
| { |
| &PluginConstraints{ |
| Versions: AllVersions, |
| SHA256: nil, |
| }, |
| mustUnhex("f00dface"), |
| true, |
| }, |
| } |
| |
| for i, test := range tests { |
| t.Run(fmt.Sprintf("%02d", i), func(t *testing.T) { |
| got := test.Constraints.AcceptsSHA256(test.Digest) |
| if got != test.Want { |
| t.Logf("%#v.AcceptsSHA256(%#v)", test.Constraints, test.Digest) |
| t.Errorf("wrong result %#v; want %#v", got, test.Want) |
| } |
| }) |
| } |
| } |