@@ -280,6 +280,57 @@ func (s *BaseStorageSuite) TestSetReferenceAndGetReference(c *C) {
280
280
c .Assert (e .Hash ().String (), Equals , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" )
281
281
}
282
282
283
+ func (s * BaseStorageSuite ) TestCheckAndSetReference (c * C ) {
284
+ err := s .Storer .SetReference (
285
+ plumbing .NewReferenceFromStrings ("foo" , "482e0eada5de4039e6f216b45b3c9b683b83bfa" ),
286
+ )
287
+ c .Assert (err , IsNil )
288
+
289
+ err = s .Storer .CheckAndSetReference (
290
+ plumbing .NewReferenceFromStrings ("foo" , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" ),
291
+ plumbing .NewReferenceFromStrings ("foo" , "482e0eada5de4039e6f216b45b3c9b683b83bfa" ),
292
+ )
293
+ c .Assert (err , IsNil )
294
+
295
+ e , err := s .Storer .Reference (plumbing .ReferenceName ("foo" ))
296
+ c .Assert (err , IsNil )
297
+ c .Assert (e .Hash ().String (), Equals , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" )
298
+ }
299
+
300
+ func (s * BaseStorageSuite ) TestCheckAndSetReferenceNil (c * C ) {
301
+ err := s .Storer .SetReference (
302
+ plumbing .NewReferenceFromStrings ("foo" , "482e0eada5de4039e6f216b45b3c9b683b83bfa" ),
303
+ )
304
+ c .Assert (err , IsNil )
305
+
306
+ err = s .Storer .CheckAndSetReference (
307
+ plumbing .NewReferenceFromStrings ("foo" , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" ),
308
+ nil ,
309
+ )
310
+ c .Assert (err , IsNil )
311
+
312
+ e , err := s .Storer .Reference (plumbing .ReferenceName ("foo" ))
313
+ c .Assert (err , IsNil )
314
+ c .Assert (e .Hash ().String (), Equals , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" )
315
+ }
316
+
317
+ func (s * BaseStorageSuite ) TestCheckAndSetReferenceError (c * C ) {
318
+ err := s .Storer .SetReference (
319
+ plumbing .NewReferenceFromStrings ("foo" , "c3f4688a08fd86f1bf8e055724c84b7a40a09733" ),
320
+ )
321
+ c .Assert (err , IsNil )
322
+
323
+ err = s .Storer .CheckAndSetReference (
324
+ plumbing .NewReferenceFromStrings ("foo" , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" ),
325
+ plumbing .NewReferenceFromStrings ("foo" , "482e0eada5de4039e6f216b45b3c9b683b83bfa" ),
326
+ )
327
+ c .Assert (err , Equals , storage .ErrReferenceHasChanged )
328
+
329
+ e , err := s .Storer .Reference (plumbing .ReferenceName ("foo" ))
330
+ c .Assert (err , IsNil )
331
+ c .Assert (e .Hash ().String (), Equals , "c3f4688a08fd86f1bf8e055724c84b7a40a09733" )
332
+ }
333
+
283
334
func (s * BaseStorageSuite ) TestRemoveReference (c * C ) {
284
335
err := s .Storer .SetReference (
285
336
plumbing .NewReferenceFromStrings ("foo" , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" ),
0 commit comments