From 9329786102d5d0f4b104d408d461fdf02e3881b9 Mon Sep 17 00:00:00 2001 From: Loic Dachary Date: Fri, 30 Oct 2015 07:40:00 +0900 Subject: [PATCH] suite: implement git_branch_exists with ls-remote Use git ls-remote to verify the existence of a branch instead of a github specific interface so that it plays well with all valid git remote URL. Rename github_branch_exists into git_branch_exists. Signed-off-by: Loic Dachary --- teuthology/suite.py | 17 +++++++---------- teuthology/test/test_suite.py | 9 ++++++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/teuthology/suite.py b/teuthology/suite.py index 5b77bd627..4b9b4b3d4 100644 --- a/teuthology/suite.py +++ b/teuthology/suite.py @@ -216,12 +216,12 @@ def create_initial_config(suite, suite_branch, ceph_branch, teuthology_branch, log.info("ceph version: {ver}".format(ver=ceph_version)) if teuthology_branch and teuthology_branch != 'master': - if not github_branch_exists('teuthology', teuthology_branch): + if not git_branch_exists('teuthology', teuthology_branch): exc = BranchNotFoundError(teuthology_branch, 'teuthology.git') schedule_fail(message=str(exc), name=name) elif not teuthology_branch: # Decide what branch of teuthology to use - if github_branch_exists('teuthology', ceph_branch): + if git_branch_exists('teuthology', ceph_branch): teuthology_branch = ceph_branch else: log.info("branch {0} not in teuthology.git; will use master for" @@ -230,12 +230,12 @@ def create_initial_config(suite, suite_branch, ceph_branch, teuthology_branch, log.info("teuthology branch: %s", teuthology_branch) if suite_branch and suite_branch != 'master': - if not github_branch_exists('ceph-qa-suite', suite_branch): + if not git_branch_exists('ceph-qa-suite', suite_branch): exc = BranchNotFoundError(suite_branch, 'ceph-qa-suite.git') schedule_fail(message=str(exc), name=name) elif not suite_branch: # Decide what branch of ceph-qa-suite to use - if github_branch_exists('ceph-qa-suite', ceph_branch): + if git_branch_exists('ceph-qa-suite', ceph_branch): suite_branch = ceph_branch else: log.info("branch {0} not in ceph-qa-suite.git; will use master for" @@ -486,14 +486,11 @@ def build_git_url(project, project_owner='ceph'): url_templ = re.sub('\.git$', '', base) return url_templ.format(project_owner=project_owner, project=project) -def github_branch_exists(project, branch, project_owner='ceph'): +def git_branch_exists(project, branch, project_owner='ceph'): """ - Query GitHub to check the existence of a project's branch + Query the git repository to check the existence of a project's branch """ - url = build_git_url(project, project_owner) + '/tree/' + branch - resp = requests.head(url) - return resp.ok - + return git_ls_remote(project, branch, project_owner) != None def get_branch_info(project, branch, project_owner='ceph'): """ diff --git a/teuthology/test/test_suite.py b/teuthology/test/test_suite.py index abf7a87e3..87405ee57 100644 --- a/teuthology/test/test_suite.py +++ b/teuthology/test/test_suite.py @@ -746,9 +746,12 @@ class TestBuildMatrix(object): assert fragments[0] == 'thrash/ceph/base.yaml' assert fragments[1] == 'thrash/ceph-thrash/default.yaml' -def test_github_branch_exists(): - assert False == suite.github_branch_exists('ceph', 'nobranchnowaycanthappen') - assert True == suite.github_branch_exists('ceph', 'master') +@patch('subprocess.check_output') +def test_git_branch_exists(m_check_output): + m_check_output.return_value = '' + assert False == suite.git_branch_exists('ceph', 'nobranchnowaycanthappen') + m_check_output.return_value = 'HHH branch' + assert True == suite.git_branch_exists('ceph', 'master') class TestSuiteMain(object): -- 2.47.3