@@ -280,6 +280,57 @@ func (s *BaseStorageSuite) TestSetReferenceAndGetReference(c *C) {
280280 c .Assert (e .Hash ().String (), Equals , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" )
281281}
282282
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+
283334func (s * BaseStorageSuite ) TestRemoveReference (c * C ) {
284335 err := s .Storer .SetReference (
285336 plumbing .NewReferenceFromStrings ("foo" , "bc9968d75e48de59f0870ffb71f5e160bbbdcf52" ),
0 commit comments