@@ -142,6 +142,43 @@ def test_head_reset(self, rw_repo):
142142 # END for each new head name
143143 self .failUnlessRaises (TypeError , RemoteReference .create , rw_repo , "some_name" )
144144
145- self .fail ("tag creation" )
146- self .fail ("tag deletion" )
147- self .fail ("remote deletion" )
145+ # tag ref
146+ tag_name = "1.0.2"
147+ light_tag = TagReference .create (rw_repo , tag_name )
148+ self .failUnlessRaises (GitCommandError , TagReference .create , rw_repo , tag_name )
149+ light_tag = TagReference .create (rw_repo , tag_name , "HEAD~1" , force = True )
150+ assert isinstance (light_tag , TagReference )
151+ assert light_tag .name == tag_name
152+ assert light_tag .commit == cur_head .commit .parents [0 ]
153+ assert light_tag .tag is None
154+
155+ # tag with tag object
156+ other_tag_name = "releases/1.0.2RC"
157+ msg = "my mighty tag\n second line"
158+ obj_tag = TagReference .create (rw_repo , other_tag_name , message = msg )
159+ assert isinstance (obj_tag , TagReference )
160+ assert obj_tag .name == other_tag_name
161+ assert obj_tag .commit == cur_head .commit
162+ assert obj_tag .tag is not None
163+
164+ TagReference .delete (rw_repo , light_tag , obj_tag )
165+ tags = rw_repo .tags
166+ assert light_tag not in tags and obj_tag not in tags
167+
168+ # remote deletion
169+ remote_refs_so_far = 0
170+ remotes = rw_repo .remotes
171+ assert remotes
172+ for remote in remotes :
173+ refs = remote .refs
174+ RemoteReference .delete (rw_repo , * refs )
175+ remote_refs_so_far += len (refs )
176+ # END for each ref to delete
177+ assert remote_refs_so_far
178+
179+ for remote in remotes :
180+ # remotes without references throw
181+ self .failUnlessRaises (AssertionError , getattr , remote , 'refs' )
182+ # END for each remote
183+
184+ self .fail ("set commit using ref.commit = that" )
0 commit comments