@@ -170,42 +170,39 @@ func (s *clientSuite) TestAddLocalCharmError(c *gc.C) {
170
170
c .Assert (err , gc .ErrorMatches , `POST http://.*/environment/deadbeef-0bad-400d-8000-4b1d0d06f00d/charms\?series=quantal: the POST method is not allowed` )
171
171
}
172
172
173
- func (s * clientSuite ) TestMinVersionTooHighLocalCharm (c * gc.C ) {
173
+ func (s * clientSuite ) TestMinVersionLocalCharm (c * gc.C ) {
174
+ tests := []minverTest {
175
+ {"2.0.0" , "1.0.0" , true },
176
+ {"1.0.0" , "2.0.0" , false },
177
+ {"1.25.0" , "1.24.0" , true },
178
+ {"1.24.0" , "1.25.0" , false },
179
+ {"1.25.1" , "1.25.0" , true },
180
+ {"1.25.0" , "1.25.1" , false },
181
+ {"1.25.0" , "1.25.0" , true },
182
+ {"1.25.0" , "1.25-alpha1" , true },
183
+ {"1.25-alpha1" , "1.25.0" , false },
184
+ }
174
185
client := s .APIState .Client ()
186
+ for _ , t := range tests {
187
+ testMinVer (client , t , c )
188
+ }
189
+ }
175
190
176
- cleanup := api .PatchClientFacadeCall (client ,
177
- func (request string , paramsIn interface {}, response interface {}) error {
178
- c .Assert (paramsIn , gc .IsNil )
179
- if response , ok := response .(* params.AgentVersionResult ); ok {
180
- response .Version = version.Number {Major : 1 }
181
- } else {
182
- c .Log ("wrong output structure" )
183
- c .Fail ()
184
- }
185
- return nil
186
- },
187
- )
188
- defer cleanup ()
189
-
190
- charmArchive := testcharms .Repo .CharmArchive (c .MkDir (), "dummy" )
191
- curl := charm .MustParseURL (
192
- fmt .Sprintf ("local:quantal/%s-%d" , charmArchive .Meta ().Name , charmArchive .Revision ()),
193
- )
194
- charmArchive .Meta ().MinJujuVersion = & version.Number {Major : 2 }
195
-
196
- _ , err := client .AddLocalCharm (curl , charmArchive )
197
-
198
- c .Assert (err , jc .Satisfies , api .IsMinVersionError )
191
+ type minverTest struct {
192
+ juju string
193
+ charm string
194
+ ok bool
199
195
}
200
196
201
- func (s * clientSuite ) TestMinVersionOKLocalCharm (c * gc.C ) {
202
- client := s .APIState .Client ()
197
+ func testMinVer (client * api.Client , t minverTest , c * gc.C ) {
198
+ charmMinVer := version .MustParse (t .charm )
199
+ jujuVer := version .MustParse (t .juju )
203
200
204
201
cleanup := api .PatchClientFacadeCall (client ,
205
202
func (request string , paramsIn interface {}, response interface {}) error {
206
203
c .Assert (paramsIn , gc .IsNil )
207
204
if response , ok := response .(* params.AgentVersionResult ); ok {
208
- response .Version = version. Number { Major : 2 }
205
+ response .Version = jujuVer
209
206
} else {
210
207
c .Log ("wrong output structure" )
211
208
c .Fail ()
@@ -219,11 +216,21 @@ func (s *clientSuite) TestMinVersionOKLocalCharm(c *gc.C) {
219
216
curl := charm .MustParseURL (
220
217
fmt .Sprintf ("local:quantal/%s-%d" , charmArchive .Meta ().Name , charmArchive .Revision ()),
221
218
)
222
- charmArchive .Meta ().MinJujuVersion = & version. Number { Major : 1 }
219
+ charmArchive .Meta ().MinJujuVersion = & charmMinVer
223
220
224
221
_ , err := client .AddLocalCharm (curl , charmArchive )
225
222
226
- c .Assert (err , jc .ErrorIsNil )
223
+ if t .ok {
224
+ if err != nil {
225
+ c .Errorf ("Unexpected non-nil error for jujuver %v, minver %v: %#v" , t .juju , t .charm , err )
226
+ }
227
+ } else {
228
+ if err == nil {
229
+ c .Errorf ("Unexpected nil error for jujuver %v, minver %v" , t .juju , t .charm )
230
+ } else if ! api .IsMinVersionError (err ) {
231
+ c .Errorf ("Wrong error for jujuver %v, minver %v: expected minVersionError, got: %#v" , t .juju , t .charm , err )
232
+ }
233
+ }
227
234
}
228
235
229
236
func fakeAPIEndpoint (c * gc.C , client * api.Client , address , method string , handle func (http.ResponseWriter , * http.Request )) net.Listener {
0 commit comments