diff mbox series

[v2,3/3] oeqa/selftest/gitarchive: add tests about tags lisiting when no remote is configured

Message ID 20230818141712.189294-4-alexis.lothore@bootlin.com
State Accepted, archived
Commit 5e9d84d82fde81d66550d8c694ea70f0911fa4f7
Headers show
Series oeqa/utils/gitarchive: fix tag name computation | expand

Commit Message

Alexis Lothoré Aug. 18, 2023, 2:17 p.m. UTC
From: Alexis Lothoré <alexis.lothore@bootlin.com>

Add specific tests on gitarchive for when tag listing is required but no
remote is configured in target directory: it should either succeed if valid
url is provided, or fail is url is not provided or wrong

Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
---
 .../oeqa/selftest/cases/gitarchivetests.py    | 35 +++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/meta/lib/oeqa/selftest/cases/gitarchivetests.py b/meta/lib/oeqa/selftest/cases/gitarchivetests.py
index 4f7acd3311d5..11b88daab860 100644
--- a/meta/lib/oeqa/selftest/cases/gitarchivetests.py
+++ b/meta/lib/oeqa/selftest/cases/gitarchivetests.py
@@ -10,6 +10,7 @@  basepath = os.path.abspath(os.path.dirname(__file__) + '/../../../../../')
 lib_path = basepath + '/scripts/lib'
 sys.path = sys.path + [lib_path]
 import oeqa.utils.gitarchive as ga
+from oeqa.utils.git import GitError
 import tempfile
 import shutil
 import scriptutils
@@ -17,7 +18,7 @@  from oeqa.selftest.case import OESelftestTestCase
 
 logger = scriptutils.logger_create('resulttool')
 
-def create_fake_repository(commit, tag_list=[]):
+def create_fake_repository(commit, tag_list=[], add_remote=True):
     """ Create a testing git directory
 
     Initialize a simple git repository with one initial commit, and as many
@@ -31,7 +32,8 @@  def create_fake_repository(commit, tag_list=[]):
     fake_data_file = "fake_data.txt"
     tempdir = tempfile.mkdtemp(prefix='fake_results.')
     repo = ga.init_git_repo(tempdir, False, False, logger)
-    repo.run_cmd(["remote", "add", "origin", "."])
+    if add_remote:
+        repo.run_cmd(["remote", "add", "origin", "."])
     with open(os.path.join(tempdir, fake_data_file), "w") as fake_data:
         fake_data.write("Fake data")
     if commit:
@@ -94,3 +96,32 @@  class GitArchiveTests(OESelftestTestCase):
         self.assertEqual(len(revs[0].tags), 2)
         self.assertEqual(revs[0].tags, ['main/10-g0f7d5df/0', 'main/10-g0f7d5df/1'])
         delete_fake_repository(path)
+
+    def test_get_tags_without_valid_remote(self):
+        url = 'git://git.yoctoproject.org/poky'
+        path, git_obj = create_fake_repository(False, None, False)
+
+        tags = ga.get_tags(git_obj, pattern="yocto-*", url=url)
+        """Test for some well established tags (released tags)"""
+        self.assertIn("yocto-4.0", tags)
+        self.assertIn("yocto-4.1", tags)
+        self.assertIn("yocto-4.2", tags)
+        delete_fake_repository(path)
+
+    def test_get_tags_without_valid_remote_neither_url(self):
+        url = 'git://git.yoctoproject.org/poky'
+        path, git_obj = create_fake_repository(False, None, False)
+
+        """Test for some well established tags (released tags)"""
+        with self.assertRaises(GitError):
+            tags = ga.get_tags(git_obj, pattern="yocto-*")
+        delete_fake_repository(path)
+
+    def test_get_tags_without_valid_remote_and_wrong_url(self):
+        url = 'git://git.foo.org/bar'
+        path, git_obj = create_fake_repository(False, None, False)
+
+        """Test for some well established tags (released tags)"""
+        with self.assertRaises(GitError):
+            tags = ga.get_tags(git_obj, pattern="yocto-*", url=url)
+        delete_fake_repository(path)