@@ -249,6 +249,51 @@ func (s *RemoteSuite) TestPushToEmptyRepository(c *C) {
249
249
c .Assert (err , IsNil )
250
250
}
251
251
252
+ func (s * RemoteSuite ) TestPushTags (c * C ) {
253
+ srcFs := fixtures .ByURL ("https://github.com/git-fixtures/tags.git" ).One ().DotGit ()
254
+ sto , err := filesystem .NewStorage (srcFs )
255
+ c .Assert (err , IsNil )
256
+
257
+ dstFs := fixtures .ByTag ("empty" ).One ().DotGit ()
258
+ url := fmt .Sprintf ("file://%s" , dstFs .Base ())
259
+
260
+ r := newRemote (sto , & config.RemoteConfig {
261
+ Name : DefaultRemoteName ,
262
+ URL : url ,
263
+ })
264
+
265
+ rs := config .RefSpec ("refs/tags/*:refs/tags/*" )
266
+ err = r .Push (& PushOptions {
267
+ RefSpecs : []config.RefSpec {rs },
268
+ })
269
+ c .Assert (err , IsNil )
270
+
271
+ dstSto , err := filesystem .NewStorage (dstFs )
272
+ c .Assert (err , IsNil )
273
+ dstRepo , err := Open (dstSto , nil )
274
+ c .Assert (err , IsNil )
275
+
276
+ ref , err := dstRepo .Storer .Reference (plumbing .ReferenceName ("refs/tags/lightweight-tag" ))
277
+ c .Assert (err , IsNil )
278
+ c .Assert (ref , DeepEquals , plumbing .NewReferenceFromStrings ("refs/tags/lightweight-tag" , "f7b877701fbf855b44c0a9e86f3fdce2c298b07f" ))
279
+
280
+ ref , err = dstRepo .Storer .Reference (plumbing .ReferenceName ("refs/tags/annotated-tag" ))
281
+ c .Assert (err , IsNil )
282
+ c .Assert (ref , DeepEquals , plumbing .NewReferenceFromStrings ("refs/tags/annotated-tag" , "b742a2a9fa0afcfa9a6fad080980fbc26b007c69" ))
283
+
284
+ ref , err = dstRepo .Storer .Reference (plumbing .ReferenceName ("refs/tags/commit-tag" ))
285
+ c .Assert (err , IsNil )
286
+ c .Assert (ref , DeepEquals , plumbing .NewReferenceFromStrings ("refs/tags/commit-tag" , "ad7897c0fb8e7d9a9ba41fa66072cf06095a6cfc" ))
287
+
288
+ ref , err = dstRepo .Storer .Reference (plumbing .ReferenceName ("refs/tags/blob-tag" ))
289
+ c .Assert (err , IsNil )
290
+ c .Assert (ref , DeepEquals , plumbing .NewReferenceFromStrings ("refs/tags/blob-tag" , "fe6cb94756faa81e5ed9240f9191b833db5f40ae" ))
291
+
292
+ ref , err = dstRepo .Storer .Reference (plumbing .ReferenceName ("refs/tags/tree-tag" ))
293
+ c .Assert (err , IsNil )
294
+ c .Assert (ref , DeepEquals , plumbing .NewReferenceFromStrings ("refs/tags/tree-tag" , "152175bf7e5580299fa1f0ba41ef6474cc043b70" ))
295
+ }
296
+
252
297
func (s * RemoteSuite ) TestPushNoErrAlreadyUpToDate (c * C ) {
253
298
f := fixtures .Basic ().One ()
254
299
sto , err := filesystem .NewStorage (f .DotGit ())
0 commit comments