Include tag list in the git treeish meta data
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Mon, 26 May 2014 14:13:32 +0000 (17:13 +0300)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 27 May 2014 13:52:07 +0000 (16:52 +0300)
List all annotated tags pointing at the exported commit. Adds a new
'tags' key (an array) to the metadata.

Change-Id: I0271130807f3af8e3e112360842fcac095d07fd5
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
obs_service_gbp_utils/__init__.py
tests/test_obs_service_gbp_utils.py

index f41534ad23adb0ce6d40ea03888c2f1975ad4fa0..83ca45b73d5ebd3314aeb403895906a869ce435e 100644 (file)
@@ -144,6 +144,12 @@ def write_treeish_meta(repo, treeish, outdir, filename):
     if obj_type in ('tag', 'commit'):
         meta['commit'] = _commit_info_in_json(repo, treeish)
 
+        # Get information about (annotated) tags pointing to the commit
+        meta['tags'] = []
+        for tag in repo.list_tags(treeish + '^0'):
+            if repo.get_obj_type(tag) == 'tag':
+                meta['tags'].append(repo.get_tag_info(tag))
+
     # No dir components allowed in filename
     filepath = os.path.join(outdir, os.path.basename(filename))
 
index f83091e65860a91350772e3df7685da5f8d8a673..11b5de7572ba5f5bad42a75ecef9e9a15319493b 100644 (file)
@@ -146,8 +146,10 @@ class TestGitMeta(UnitTestsBase):
         super(TestGitMeta, cls).setup_class()
         cls.repo = MirrorGitRepository.clone('myrepo', cls._template_repo.path)
 
-        # Create test tag
+        # Create test tags
         cls.repo.create_tag('tag', msg='Subject\n\nBody')
+        cls.repo.create_tag('tag2', msg='Subject 2')
+        cls.repo.create_tag('light_tag')
 
         # Reference meta
         cls.tag_meta = {'tagname': 'tag',
@@ -164,6 +166,12 @@ class TestGitMeta(UnitTestsBase):
                            'body': '',
                            'files':
                                 {'A': ['debian/changelog', 'debian/control']}}
+        cls.tags_meta = [cls.tag_meta,
+                         {'tagname': 'tag2',
+                          'sha1': cls.repo.rev_parse('tag2'),
+                          'tagger': committer,
+                          'subject': 'Subject 2',
+                          'body': ''}]
 
     @classmethod
     def teardown_class(cls):
@@ -184,6 +192,7 @@ class TestGitMeta(UnitTestsBase):
             meta = json.load(meta_fp)
         eq_(meta['treeish'], 'tag')
         eq_(meta['tag'], self.tag_meta)
+        eq_(meta['tags'], self.tags_meta)
         eq_(meta['commit'], self.commit_meta)
 
     def test_commit(self):
@@ -194,6 +203,7 @@ class TestGitMeta(UnitTestsBase):
             meta = json.load(meta_fp)
         eq_(meta['treeish'], 'HEAD')
         ok_('tag' not in meta)
+        eq_(meta['tags'], self.tags_meta)
         eq_(meta['commit'], self.commit_meta)
 
     def test_tree(self):
@@ -205,6 +215,7 @@ class TestGitMeta(UnitTestsBase):
             meta = json.load(meta_fp)
         eq_(meta['treeish'], tree)
         ok_('tag' not in meta)
+        ok_('tags' not in meta)
         ok_('commit' not in meta)
 
     def test_failures(self):