diff --git a/teuthology/test/test_repo_utils.py b/teuthology/test/test_repo_utils.py index a155fd410..969f82513 100644 --- a/teuthology/test/test_repo_utils.py +++ b/teuthology/test/test_repo_utils.py @@ -3,6 +3,7 @@ import os import os.path from pytest import raises, mark +import re import shutil import subprocess import tempfile @@ -29,14 +30,21 @@ def setup_class(cls): cls.repo_url = 'file://' + cls.src_path cls.commit = None - cls.git_version = parse( - subprocess.check_output(('git', 'version') - ).decode().strip().split(' ')[-1]) + cls.git_version = parse(cls.get_system_git_version()) @classmethod def teardown_class(cls): shutil.rmtree(cls.temp_path) + @classmethod + def get_system_git_version(cls): + # parsing following patterns + # 1) git version 2.45.2 + # 2) git version 2.39.3 (Apple Git-146) + git_version = subprocess.check_output(('git', 'version')).decode() + m = re.match(r"git version (?P\d+.\d+.\d+) ?", git_version) + return m['ver'] + def setup_method(self, method): # In git 2.28.0, the --initial-branch flag was added. if self.git_version >= parse("2.28.0"): @@ -239,4 +247,4 @@ def test_url_to_dirname(self, input_, expected): def test_current_branch(self): repo_utils.clone_repo(self.repo_url, self.dest_path, 'main', self.commit) - assert repo_utils.current_branch(self.dest_path) == "main" \ No newline at end of file + assert repo_utils.current_branch(self.dest_path) == "main"