MirrorGitRepository: add list_tags() method
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 1 Apr 2014 09:15:48 +0000 (12:15 +0300)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 27 May 2014 13:03:26 +0000 (16:03 +0300)
For getting tags pointing at a certain object.

Change-Id: I5e952d912c79e0ed8ba22061e484a88866d0fc27
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
gbp_repocache/__init__.py
tests/test_gbp_repocache.py

index d3772ef1af46225e37d881ec86bc8c6020fffce2..981b6cc7b23da48e71e619131eced6c2adde488b 100644 (file)
@@ -109,6 +109,10 @@ class MirrorGitRepository(GitRepository): # pylint: disable=R0904
             repo.force_fetch()
             return repo
 
+    def list_tags(self, obj):
+        """List tags pointing at certain object"""
+        return self._git_inout('tag', ['--points-at', obj])[0].splitlines()
+
     def get_tag_info(self, tag):
         """Look up data of a tag"""
         stdout, _stderr, ret = self._git_inout('cat-file', ['tag', tag])
index 3205696480527e4a105c7723121f719ff4f2fffe..636e5058d34879cbf0a6725be899ad0e2c2942ee 100644 (file)
@@ -79,6 +79,18 @@ class TestMirrorGitRepository(UnitTestsBase):
         # Restore orig repo HEAD
         self.orig_repo.set_branch(orig_branch)
 
+    def test_list_tags(self):
+        """Test list_tags() method"""
+        repo = MirrorGitRepository.clone('testrepo', self.orig_repo.path)
+
+        # No tags pointing to HEAD
+        repo.create_tag('tag1', msg='Tag 1', commit='HEAD^')
+        eq_(repo.list_tags('HEAD'), [])
+
+        # One tag pointing to HEAD
+        repo.create_tag('tag2', msg='Tag 2')
+        eq_(repo.list_tags('HEAD'), ['tag2'])
+
     def test_get_tag_info(self):
         """Test get_tag_info() method"""
         repo = MirrorGitRepository.clone('testrepo', self.orig_repo.path)