summaryrefslogtreecommitdiff
path: root/.gitlab-ci
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2019-12-05 09:00:13 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2019-12-05 10:40:40 +1000
commit9d996a0420ad2373d8fde019fbd4d86f2e3873e3 (patch)
tree4663f429e13fbb8a38c9ab3ee648a42e749350e8 /.gitlab-ci
parent902806c7504dce3730925a5b8e4bb90fda8ac15e (diff)
downloadlibinput-9d996a0420ad2373d8fde019fbd4d86f2e3873e3.tar.gz
gitlab CI: add a local emulation mode to the gitlab CI script
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to '.gitlab-ci')
-rwxr-xr-x.gitlab-ci/check-commit.py39
1 files changed, 33 insertions, 6 deletions
diff --git a/.gitlab-ci/check-commit.py b/.gitlab-ci/check-commit.py
index 5833b201..be89bf49 100755
--- a/.gitlab-ci/check-commit.py
+++ b/.gitlab-ci/check-commit.py
@@ -9,22 +9,44 @@ import git
import os
import pytest
-# Environment variables set by gitlab
-CI_COMMIT_SHA = os.environ['CI_COMMIT_SHA']
-CI_MERGE_REQUEST_TARGET_BRANCH_NAME = 'master'
-CI_SERVER_HOST = os.environ['CI_SERVER_HOST']
+if os.environ.get('CI'):
+ # Environment variables set by gitlab
+ CI_COMMIT_SHA = os.environ['CI_COMMIT_SHA']
+ CI_MERGE_REQUEST_TARGET_BRANCH_NAME = 'master'
+ CI_SERVER_HOST = os.environ['CI_SERVER_HOST']
+ UPSTREAM = 'upstream'
+else:
+ # Local emulation mode when called directly
+ import argparse
+
+ parser = argparse.ArgumentParser(description='Commit message checker - local emulation mode')
+ parser.add_argument('--sha', help='The commit message to start at (default: HEAD}',
+ default='HEAD')
+ parser.add_argument('--branch', help='The branch name to merge to (default: master)',
+ default='master')
+ parser.add_argument('--remote', help='The remote name (default: origin)',
+ default='origin')
+ args = parser.parse_args()
+
+ CI_COMMIT_SHA = args.sha
+ CI_MERGE_REQUEST_TARGET_BRANCH_NAME = args.branch
+ CI_SERVER_HOST = None
+ UPSTREAM = 'origin'
+ print(f'Running in local testing mode.')
+
+print(f'Merging {CI_COMMIT_SHA} into {CI_MERGE_REQUEST_TARGET_BRANCH_NAME}')
# We need to add the real libinput as remote, our origin here is the user's
# fork.
repo = git.Repo('.')
-if 'upstream' not in repo.remotes:
+if UPSTREAM not in repo.remotes:
upstream = repo.create_remote('upstream', f'https://{CI_SERVER_HOST}/libinput/libinput.git')
upstream.fetch()
sha = CI_COMMIT_SHA
branch = CI_MERGE_REQUEST_TARGET_BRANCH_NAME
-commits = list(repo.iter_commits(f'upstream/{branch}..{sha}'))
+commits = list(repo.iter_commits(f'{UPSTREAM}/{branch}..{sha}'))
def error(commit, message, long_message=''):
@@ -45,6 +67,7 @@ def error(commit, message, long_message=''):
f'{info}\n\n')
return msg
+
@pytest.mark.parametrize('commit', commits)
class TestCommits:
def test_author_email(self, commit):
@@ -82,3 +105,7 @@ class TestCommits:
error(commit, 'Second line in commit message must be emtpy')
except IndexError:
pass
+
+
+if __name__ == '__main__':
+ pytest.main([__file__])