diff --git a/CI/run_unit_tests_for_mr.py b/CI/run_unit_tests_for_mr.py index 0dece529263e5850e7491fcec6f694de79ecb73d..8fd11fd83f04792c7fae8e15a2442e6cbd287c92 100644 --- a/CI/run_unit_tests_for_mr.py +++ b/CI/run_unit_tests_for_mr.py @@ -1,10 +1,22 @@ -import argparse, logging, requests, sys +import argparse, gitlab, logging, sys +from gitlab.exceptions import GitlabGetError from gitlab_mr_helpers import * def run_unit_tests(args): - # work around to get change set as long as we can't use the python API wrapper - r = requests.get("https://gitlab.cern.ch/api/v3/projects/13363/merge_requests/%d/changes" % (args.mr_id),headers={"PRIVATE-TOKEN" : args.token}) - changes = r.json()['changes'] + # get GitLab API handler + gl = gitlab.Gitlab(args.url,args.token) + try: + # get Gitlab project object + project = gl.projects.get(args.project_name) + logging.debug("retrieved Gitlab project handle") + # get Gitlab merge request object + mr = project.mergerequests.get(args.mr_id) + logging.debug("retrieved Gitlab merge request handle") + except GitlabGetError as e: + logging.critical("error communication with Gitlab API '%s'" % (e.error_message)) + sys.exit(1) + + changes = mr.changes()['changes'] changed_files = set([c[p] for c in changes for p in ['old_path','new_path']]) logging.debug("changed files:\n" + print_collection(changed_files)) affected_packages = sorted(set([map_filename_to_package(f) for f in changed_files]))