@@ -18,6 +18,7 @@ package controllers
18
18
19
19
import (
20
20
"bytes"
21
+ "fmt"
21
22
"io/ioutil"
22
23
"strings"
23
24
"testing"
@@ -31,14 +32,12 @@ import (
31
32
var (
32
33
helmPackageFile = "testdata/charts/helmchart-0.1.0.tgz"
33
34
34
- localDepFixture helmchart.Dependency = helmchart.Dependency {
35
- Name : "helmchart" ,
36
- Version : "0.1.0" ,
37
- Repository : "file://../helmchart" ,
38
- }
39
- remoteDepFixture helmchart.Dependency = helmchart.Dependency {
40
- Name : "helmchart" ,
41
- Version : "0.1.0" ,
35
+ chartName = "helmchart"
36
+ chartVersion = "0.1.0"
37
+ chartLocalRepository = "file://../helmchart"
38
+ remoteDepFixture helmchart.Dependency = helmchart.Dependency {
39
+ Name : chartName ,
40
+ Version : chartVersion ,
42
41
Repository : "https://example.com/charts" ,
43
42
}
44
43
chartFixture helmchart.Chart = helmchart.Chart {
@@ -58,72 +57,65 @@ func TestBuild_WithEmptyDependencies(t *testing.T) {
58
57
}
59
58
60
59
func TestBuild_WithLocalChart (t * testing.T ) {
61
- loc := localDepFixture
62
- chart := chartFixture
63
- dm := DependencyManager {
64
- Chart : & chart ,
65
- ChartPath : "testdata/charts/helmchart" ,
66
- Dependencies : []* DependencyWithRepository {
67
- {
68
- Dependency : & loc ,
69
- Repo : nil ,
70
- },
71
- },
72
- }
73
-
74
- if err := dm .Build (); err != nil {
75
- t .Errorf ("Build() expected to not return error: %s" , err )
76
- }
77
-
78
- deps := dm .Chart .Dependencies ()
79
- if len (deps ) != 1 {
80
- t .Fatalf ("chart expected to have one dependency registered" )
81
- }
82
- if deps [0 ].Metadata .Name != localDepFixture .Name {
83
- t .Errorf ("chart dependency has incorrect name, expected: %s, got: %s" , localDepFixture .Name , deps [0 ].Metadata .Name )
84
- }
85
- if deps [0 ].Metadata .Version != localDepFixture .Version {
86
- t .Errorf ("chart dependency has incorrect version, expected: %s, got: %s" , localDepFixture .Version , deps [0 ].Metadata .Version )
87
- }
88
-
89
60
tests := []struct {
90
- name string
91
- dep helmchart.Dependency
92
- expectError string
61
+ name string
62
+ dep helmchart.Dependency
63
+ wantErr bool
64
+ errMsg string
93
65
}{
66
+ {
67
+ name : "valid path" ,
68
+ dep : helmchart.Dependency {
69
+ Name : chartName ,
70
+ Version : chartVersion ,
71
+ Repository : chartLocalRepository ,
72
+ },
73
+ },
74
+ {
75
+ name : "valid path" ,
76
+ dep : helmchart.Dependency {
77
+ Name : chartName ,
78
+ Alias : "aliased" ,
79
+ Version : chartVersion ,
80
+ Repository : chartLocalRepository ,
81
+ },
82
+ },
94
83
{
95
84
name : "invalid path" ,
96
85
dep : helmchart.Dependency {
97
- Name : "helmchart" ,
98
- Version : "0.1.0" ,
86
+ Name : chartName ,
87
+ Version : chartVersion ,
99
88
Repository : "file://../invalid" ,
100
89
},
101
- expectError : "no such file or directory" ,
90
+ wantErr : true ,
91
+ errMsg : "no such file or directory" ,
102
92
},
103
93
{
104
94
name : "invalid version constraint format" ,
105
95
dep : helmchart.Dependency {
106
- Name : "helmchart" ,
96
+ Name : chartName ,
107
97
Version : "!2.0" ,
108
- Repository : "file://../helmchart" ,
98
+ Repository : chartLocalRepository ,
109
99
},
110
- expectError : "has an invalid version/constraint format" ,
100
+ wantErr : true ,
101
+ errMsg : "has an invalid version/constraint format" ,
111
102
},
112
103
{
113
104
name : "invalid version" ,
114
105
dep : helmchart.Dependency {
115
- Name : "helmchart" ,
116
- Version : "1.0.0" ,
117
- Repository : "file://../helmchart" ,
106
+ Name : chartName ,
107
+ Version : chartVersion ,
108
+ Repository : chartLocalRepository ,
118
109
},
119
- expectError : "can't get a valid version for dependency" ,
110
+ wantErr : true ,
111
+ errMsg : "can't get a valid version for dependency" ,
120
112
},
121
113
}
122
114
123
115
for _ , tt := range tests {
124
116
t .Run (tt .name , func (t * testing.T ) {
125
117
c := chartFixture
126
- dm = DependencyManager {
118
+ dm : = DependencyManager {
127
119
Chart : & c ,
128
120
ChartPath : "testdata/charts/helmchart" ,
129
121
Dependencies : []* DependencyWithRepository {
@@ -134,13 +126,30 @@ func TestBuild_WithLocalChart(t *testing.T) {
134
126
},
135
127
}
136
128
137
- if err := dm .Build (); err == nil {
129
+ err := dm .Build ()
130
+ deps := dm .Chart .Dependencies ()
131
+
132
+ if (err != nil ) && tt .wantErr {
133
+ if ! strings .Contains (err .Error (), tt .errMsg ) {
134
+ t .Errorf ("Build() expected to return error: %s, got: %s" , tt .errMsg , err )
135
+ }
136
+ if len (deps ) > 0 {
137
+ t .Fatalf ("chart expected to have no dependencies registered" )
138
+ }
139
+ return
140
+ } else if err != nil {
138
141
t .Errorf ("Build() expected to return error" )
139
- } else if ! strings .Contains (err .Error (), tt .expectError ) {
140
- t .Errorf ("Build() expected to return error: %s, got: %s" , tt .expectError , err )
142
+ return
143
+ }
144
+
145
+ if len (deps ) == 0 {
146
+ t .Fatalf ("chart expected to have at least one dependency registered" )
147
+ }
148
+ if deps [0 ].Metadata .Name != chartName {
149
+ t .Errorf ("chart dependency has incorrect name, expected: %s, got: %s" , chartName , deps [0 ].Metadata .Name )
141
150
}
142
- if len ( dm . Chart . Dependencies ()) > 0 {
143
- t .Fatalf ("chart expected to have no dependencies registered" )
151
+ if deps [ 0 ]. Metadata . Version != chartVersion {
152
+ t .Errorf ("chart dependency has incorrect version, expected: %s, got: %s" , chartVersion , deps [ 0 ]. Metadata . Version )
144
153
}
145
154
})
146
155
}
@@ -153,7 +162,7 @@ func TestBuild_WithRemoteChart(t *testing.T) {
153
162
t .Fatal (err )
154
163
}
155
164
i := repo .NewIndexFile ()
156
- i .Add (& helmchart.Metadata {Name : "helmchart" , Version : "0.1.0" }, "helmchart-0.1.0. tgz" , "http://example.com/charts" , "sha256:1234567890" )
165
+ i .Add (& helmchart.Metadata {Name : chartName , Version : chartVersion }, fmt . Sprintf ( "%s-%s. tgz", chartName , chartVersion ) , "http://example.com/charts" , "sha256:1234567890" )
157
166
mg := mockGetter {response : b }
158
167
cr := & helm.ChartRepository {
159
168
URL : remoteDepFixture .Repository ,
@@ -178,11 +187,11 @@ func TestBuild_WithRemoteChart(t *testing.T) {
178
187
if len (deps ) != 1 {
179
188
t .Fatalf ("chart expected to have one dependency registered" )
180
189
}
181
- if deps [0 ].Metadata .Name != remoteDepFixture . Name {
182
- t .Errorf ("chart dependency has incorrect name, expected: %s, got: %s" , remoteDepFixture . Name , deps [0 ].Metadata .Name )
190
+ if deps [0 ].Metadata .Name != chartName {
191
+ t .Errorf ("chart dependency has incorrect name, expected: %s, got: %s" , chartName , deps [0 ].Metadata .Name )
183
192
}
184
- if deps [0 ].Metadata .Version != remoteDepFixture . Version {
185
- t .Errorf ("chart dependency has incorrect version, expected: %s, got: %s" , remoteDepFixture . Version , deps [0 ].Metadata .Version )
193
+ if deps [0 ].Metadata .Version != chartVersion {
194
+ t .Errorf ("chart dependency has incorrect version, expected: %s, got: %s" , chartVersion , deps [0 ].Metadata .Version )
186
195
}
187
196
188
197
// When repo is not set
0 commit comments