Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(549)

Side by Side Diff: vpython/spec/spec_test.go

Issue 2921133002: [vpython] Add conditional packages based on PEP425 (Closed)
Patch Set: rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « vpython/spec/spec.go ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The LUCI Authors. All rights reserved. 1 // Copyright 2017 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package spec 5 package spec
6 6
7 import ( 7 import (
8 "testing" 8 "testing"
9 9
10 "github.com/luci/luci-go/vpython/api/vpython" 10 "github.com/luci/luci-go/vpython/api/vpython"
11 11
12 . "github.com/luci/luci-go/common/testing/assertions" 12 . "github.com/luci/luci-go/common/testing/assertions"
13 . "github.com/smartystreets/goconvey/convey" 13 . "github.com/smartystreets/goconvey/convey"
14 ) 14 )
15 15
16 func TestNormalizeAndHash(t *testing.T) { 16 func TestNormalizeAndHash(t *testing.T) {
17 t.Parallel() 17 t.Parallel()
18 18
19 » pkgFoo := &vpython.Spec_Package{Name: "foo", Version: "1"} 19 » Convey(`Test manifest generation`, t, func() {
20 » pkgBar := &vpython.Spec_Package{Name: "bar", Version: "2"} 20 » » otherTag := &vpython.Pep425Tag{Version: "otherVersion", Abi: "ot herABI", Arch: "otherArch"}
21 » pkgBaz := &vpython.Spec_Package{Name: "baz", Version: "3"} 21 » » maybeTag := &vpython.Pep425Tag{Version: "maybeVersion", Abi: "ma ybeABI", Arch: "maybeArch"}
22 22
23 » Convey(`Test manifest generation`, t, func() { 23 » » pkgFoo := &vpython.Spec_Package{Name: "foo", Version: "1"}
24 » » var env vpython.Environment 24 » » pkgBar := &vpython.Spec_Package{Name: "bar", Version: "2"}
25 » » pkgBaz := &vpython.Spec_Package{Name: "baz", Version: "3"}
26 » » pkgMaybe := &vpython.Spec_Package{Name: "maybe", Version: "3", M atchTag: []*vpython.Pep425Tag{
27 » » » {Version: maybeTag.Version},
28 » » }}
29
30 » » env := vpython.Environment{
31 » » » Pep425Tag: []*vpython.Pep425Tag{otherTag},
32 » » }
25 var rt vpython.Runtime 33 var rt vpython.Runtime
26 34
27 Convey(`Will normalize an empty spec`, func() { 35 Convey(`Will normalize an empty spec`, func() {
28 So(NormalizeEnvironment(&env), ShouldBeNil) 36 So(NormalizeEnvironment(&env), ShouldBeNil)
29 So(env, ShouldResemble, vpython.Environment{ 37 So(env, ShouldResemble, vpython.Environment{
30 » » » » Spec: &vpython.Spec{}, 38 » » » » Spec: &vpython.Spec{},
31 » » » » Runtime: &vpython.Runtime{}, 39 » » » » Runtime: &vpython.Runtime{},
40 » » » » Pep425Tag: []*vpython.Pep425Tag{otherTag},
32 }) 41 })
33 }) 42 })
34 43
35 Convey(`With a non-nil spec`, func() { 44 Convey(`With a non-nil spec`, func() {
36 env.Spec = &vpython.Spec{} 45 env.Spec = &vpython.Spec{}
37 46
38 Convey(`Will normalize to sorted order.`, func() { 47 Convey(`Will normalize to sorted order.`, func() {
39 env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgBar, pkgBaz} 48 env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgBar, pkgBaz}
40 So(NormalizeEnvironment(&env), ShouldBeNil) 49 So(NormalizeEnvironment(&env), ShouldBeNil)
41 So(env.Spec, ShouldResemble, &vpython.Spec{ 50 So(env.Spec, ShouldResemble, &vpython.Spec{
42 Wheel: []*vpython.Spec_Package{pkgBar, p kgBaz, pkgFoo}, 51 Wheel: []*vpython.Spec_Package{pkgBar, p kgBaz, pkgFoo},
43 }) 52 })
44 53
45 So(Hash(env.Spec, &rt, ""), ShouldEqual, "7e80b8 643051ce0d82bf44fb180687e988791cfd7f3da39861370f0a56fc80f8") 54 So(Hash(env.Spec, &rt, ""), ShouldEqual, "7e80b8 643051ce0d82bf44fb180687e988791cfd7f3da39861370f0a56fc80f8")
46 So(Hash(env.Spec, &rt, "extra"), ShouldEqual, "1 40a02bb88b011d4aceafb9533266288fd4b441c3bdb70494419b3ef76457f34") 55 So(Hash(env.Spec, &rt, "extra"), ShouldEqual, "1 40a02bb88b011d4aceafb9533266288fd4b441c3bdb70494419b3ef76457f34")
47 }) 56 })
48 57
58 Convey(`With match tags`, func() {
59 env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgMaybe}
60
61 Convey(`Will omit the package if it doesn't matc h a tag`, func() {
62 So(NormalizeEnvironment(&env), ShouldBeN il)
63 So(env.Spec, ShouldResemble, &vpython.Sp ec{
64 Wheel: []*vpython.Spec_Package{p kgFoo},
65 })
66 })
67
68 Convey(`Will include the package if it matches a tag, and strip the match field.`, func() {
69 env.Pep425Tag = append(env.Pep425Tag, ma ybeTag)
70
71 So(NormalizeEnvironment(&env), ShouldBeN il)
72
73 pkgMaybe.MatchTag = nil
74 So(env.Spec, ShouldResemble, &vpython.Sp ec{
75 Wheel: []*vpython.Spec_Package{p kgFoo, pkgMaybe},
76 })
77 })
78 })
79
49 Convey(`Will fail to normalize if there are duplicate wh eels.`, func() { 80 Convey(`Will fail to normalize if there are duplicate wh eels.`, func() {
50 env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgFoo, pkgBar, pkgBaz} 81 env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgFoo, pkgBar, pkgBaz}
51 So(NormalizeEnvironment(&env), ShouldErrLike, "d uplicate spec entries") 82 So(NormalizeEnvironment(&env), ShouldErrLike, "d uplicate spec entries")
52 83
53 // Even if the versions differ. 84 // Even if the versions differ.
54 fooClone := *pkgFoo 85 fooClone := *pkgFoo
55 fooClone.Version = "other" 86 fooClone.Version = "other"
56 env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, &fooClone, pkgBar, pkgBaz} 87 env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, &fooClone, pkgBar, pkgBaz}
57 So(NormalizeEnvironment(&env), ShouldErrLike, "d uplicate spec entries") 88 So(NormalizeEnvironment(&env), ShouldErrLike, "d uplicate spec entries")
58 }) 89 })
59 }) 90 })
60 }) 91 })
61 } 92 }
OLDNEW
« no previous file with comments | « vpython/spec/spec.go ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698