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

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

Issue 2918623003: [vpython] Verify environment, named installs. (Closed)
Patch Set: 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') | vpython/venv/config.go » ('j') | 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 pkgFoo := &vpython.Spec_Package{Name: "foo", Version: "1"}
20 pkgBar := &vpython.Spec_Package{Name: "bar", Version: "2"} 20 pkgBar := &vpython.Spec_Package{Name: "bar", Version: "2"}
21 pkgBaz := &vpython.Spec_Package{Name: "baz", Version: "3"} 21 pkgBaz := &vpython.Spec_Package{Name: "baz", Version: "3"}
22 22
23 Convey(`Test manifest generation`, t, func() { 23 Convey(`Test manifest generation`, t, func() {
24 » » var spec vpython.Spec 24 » » var env vpython.Environment
25 var rt vpython.Runtime 25 var rt vpython.Runtime
26 26
27 Convey(`Will normalize an empty spec`, func() { 27 Convey(`Will normalize an empty spec`, func() {
28 » » » So(Normalize(&spec, pkgFoo), ShouldBeNil) 28 » » » So(NormalizeEnvironment(&env), ShouldBeNil)
29 » » » So(spec, ShouldResemble, vpython.Spec{ 29 » » » So(env, ShouldResemble, vpython.Environment{
30 » » » » Virtualenv: pkgFoo, 30 » » » » Spec: &vpython.Spec{},
31 » » » » Runtime: &vpython.Runtime{},
31 }) 32 })
32 }) 33 })
33 34
34 » » Convey(`Will normalize to sorted order.`, func() { 35 » » Convey(`With a non-nil spec`, func() {
35 » » » spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgBar, pkg Baz} 36 » » » env.Spec = &vpython.Spec{}
36 » » » So(Normalize(&spec, nil), ShouldBeNil) 37
37 » » » So(spec, ShouldResemble, vpython.Spec{ 38 » » » Convey(`Will normalize to sorted order.`, func() {
38 » » » » Wheel: []*vpython.Spec_Package{pkgBar, pkgBaz, p kgFoo}, 39 » » » » env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgBar, pkgBaz}
40 » » » » So(NormalizeEnvironment(&env), ShouldBeNil)
41 » » » » So(env.Spec, ShouldResemble, &vpython.Spec{
42 » » » » » Wheel: []*vpython.Spec_Package{pkgBar, p kgBaz, pkgFoo},
43 » » » » })
44
45 » » » » So(Hash(env.Spec, &rt, ""), ShouldEqual, "7e80b8 643051ce0d82bf44fb180687e988791cfd7f3da39861370f0a56fc80f8")
46 » » » » So(Hash(env.Spec, &rt, "extra"), ShouldEqual, "1 40a02bb88b011d4aceafb9533266288fd4b441c3bdb70494419b3ef76457f34")
39 }) 47 })
40 48
41 » » » So(Hash(&spec, &rt, ""), ShouldEqual, "7e80b8643051ce0d8 2bf44fb180687e988791cfd7f3da39861370f0a56fc80f8") 49 » » » Convey(`Will fail to normalize if there are duplicate wh eels.`, func() {
42 » » » So(Hash(&spec, &rt, "extra"), ShouldEqual, "140a02bb88b0 11d4aceafb9533266288fd4b441c3bdb70494419b3ef76457f34") 50 » » » » env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgFoo, pkgBar, pkgBaz}
43 » » }) 51 » » » » So(NormalizeEnvironment(&env), ShouldErrLike, "d uplicate spec entries")
44 52
45 » » Convey(`Will fail to normalize if there are duplicate wheels.`, func() { 53 » » » » // Even if the versions differ.
46 » » » spec.Wheel = []*vpython.Spec_Package{pkgFoo, pkgFoo, pkg Bar, pkgBaz} 54 » » » » fooClone := *pkgFoo
47 » » » So(Normalize(&spec, nil), ShouldErrLike, "duplicate spec entries") 55 » » » » fooClone.Version = "other"
48 56 » » » » env.Spec.Wheel = []*vpython.Spec_Package{pkgFoo, &fooClone, pkgBar, pkgBaz}
49 » » » // Even if the versions differ. 57 » » » » So(NormalizeEnvironment(&env), ShouldErrLike, "d uplicate spec entries")
50 » » » fooClone := *pkgFoo 58 » » » })
51 » » » fooClone.Version = "other"
52 » » » spec.Wheel = []*vpython.Spec_Package{pkgFoo, &fooClone, pkgBar, pkgBaz}
53 » » » So(Normalize(&spec, nil), ShouldErrLike, "duplicate spec entries")
54 }) 59 })
55 }) 60 })
56 } 61 }
OLDNEW
« no previous file with comments | « vpython/spec/spec.go ('k') | vpython/venv/config.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698