| Index: vpython/spec/spec_test.go
|
| diff --git a/vpython/spec/spec_test.go b/vpython/spec/spec_test.go
|
| index abc17c29f85af1fac6ead54ac2469b228d1f2e66..e7fe295e0203212255e1164816630cd4434165ce 100644
|
| --- a/vpython/spec/spec_test.go
|
| +++ b/vpython/spec/spec_test.go
|
| @@ -16,19 +16,28 @@ import (
|
| func TestNormalizeAndHash(t *testing.T) {
|
| t.Parallel()
|
|
|
| - pkgFoo := &vpython.Spec_Package{Name: "foo", Version: "1"}
|
| - pkgBar := &vpython.Spec_Package{Name: "bar", Version: "2"}
|
| - pkgBaz := &vpython.Spec_Package{Name: "baz", Version: "3"}
|
| -
|
| Convey(`Test manifest generation`, t, func() {
|
| - var env vpython.Environment
|
| + otherTag := &vpython.Pep425Tag{Version: "otherVersion", Abi: "otherABI", Arch: "otherArch"}
|
| + maybeTag := &vpython.Pep425Tag{Version: "maybeVersion", Abi: "maybeABI", Arch: "maybeArch"}
|
| +
|
| + pkgFoo := &vpython.Spec_Package{Name: "foo", Version: "1"}
|
| + pkgBar := &vpython.Spec_Package{Name: "bar", Version: "2"}
|
| + pkgBaz := &vpython.Spec_Package{Name: "baz", Version: "3"}
|
| + pkgMaybe := &vpython.Spec_Package{Name: "maybe", Version: "3", MatchTag: []*vpython.Pep425Tag{
|
| + {Version: maybeTag.Version},
|
| + }}
|
| +
|
| + env := vpython.Environment{
|
| + Pep425Tag: []*vpython.Pep425Tag{otherTag},
|
| + }
|
| var rt vpython.Runtime
|
|
|
| Convey(`Will normalize an empty spec`, func() {
|
| So(NormalizeEnvironment(&env), ShouldBeNil)
|
| So(env, ShouldResemble, vpython.Environment{
|
| - Spec: &vpython.Spec{},
|
| - Runtime: &vpython.Runtime{},
|
| + Spec: &vpython.Spec{},
|
| + Runtime: &vpython.Runtime{},
|
| + Pep425Tag: []*vpython.Pep425Tag{otherTag},
|
| })
|
| })
|
|
|
| @@ -46,6 +55,28 @@ func TestNormalizeAndHash(t *testing.T) {
|
| So(Hash(env.Spec, &rt, "extra"), ShouldEqual, "140a02bb88b011d4aceafb9533266288fd4b441c3bdb70494419b3ef76457f34")
|
| })
|
|
|
| + Convey(`With match tags`, func() {
|
| + env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgMaybe}
|
| +
|
| + Convey(`Will omit the package if it doesn't match a tag`, func() {
|
| + So(NormalizeEnvironment(&env), ShouldBeNil)
|
| + So(env.Spec, ShouldResemble, &vpython.Spec{
|
| + Wheel: []*vpython.Spec_Package{pkgFoo},
|
| + })
|
| + })
|
| +
|
| + Convey(`Will include the package if it matches a tag, and strip the match field.`, func() {
|
| + env.Pep425Tag = append(env.Pep425Tag, maybeTag)
|
| +
|
| + So(NormalizeEnvironment(&env), ShouldBeNil)
|
| +
|
| + pkgMaybe.MatchTag = nil
|
| + So(env.Spec, ShouldResemble, &vpython.Spec{
|
| + Wheel: []*vpython.Spec_Package{pkgFoo, pkgMaybe},
|
| + })
|
| + })
|
| + })
|
| +
|
| Convey(`Will fail to normalize if there are duplicate wheels.`, func() {
|
| env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgFoo, pkgBar, pkgBaz}
|
| So(NormalizeEnvironment(&env), ShouldErrLike, "duplicate spec entries")
|
|
|