Loading tests/unit/gitlab_ci/pre_commit_run/runner.bash +17 −5 Original line number Diff line number Diff line Loading @@ -53,6 +53,10 @@ get_sha() { GIT_DIR=$1 git rev-parse --revs-only --verify $2 } get_ref_name() { sed 's@refs/[^/]\+/@@' <<<"$1" } get_head() { GIT_DIR=$1 git symbolic-ref HEAD | sed 's@refs/heads/@@' } Loading @@ -60,7 +64,7 @@ get_head() { # Handle arguments cd "${1? The directory to run from, this should be the top of the git repository}" source "${2? The full path to the Bash file containing pre_commit_run}" declare COMMIT_BRANCH=${3? Need the head reference of a target commmit} declare COMMIT_REF=${3? Need the head or tag reference of a target commit} declare SOURCE_REPO=${4? Need the path to the source repository fixture} shift 4 Loading @@ -76,18 +80,26 @@ declare -x CI_MERGE_REQUEST_TARGET_BRANCH_NAME # Set appropriate values for CI_* variables CI_REPOSITORY_URL=file://$SOURCE_REPO CI_DEFAULT_BRANCH=$(get_head $SOURCE_REPO) CI_COMMIT_SHA=$(get_sha $SOURCE_REPO $COMMIT_BRANCH) CI_COMMIT_SHA=$(get_sha $SOURCE_REPO $COMMIT_REF) case ${CI_PIPELINE_SOURCE:=push} in merge_request_event) assert '[[ ! -v CI_COMMIT_BEFORE_SHA ]]' \ "CI_COMMIT_BEFORE_SHA cannot be set for merge request pipelines" : ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:=$CI_DEFAULT_BRANCH} CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=$COMMIT_BRANCH CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=$(get_ref_name $COMMIT_REF) CI_COMMIT_BEFORE_SHA=$NULL_SHA ;; *) CI_COMMIT_BRANCH=$COMMIT_BRANCH *) case $COMMIT_REF in refs/heads/*) CI_COMMIT_BRANCH=$(get_ref_name $COMMIT_REF) ;; refs/tags/*) CI_PIPELINE_SOURCE=push CI_COMMIT_TAG=$(get_ref_name $COMMIT_REF) ;; *) echo >&2 "Unrecognised reference type: $COMMIT_REF"; exit 2 ;; esac ;; esac Loading tests/unit/gitlab_ci/pre_commit_run/tests.py +7 −7 Original line number Diff line number Diff line Loading @@ -102,7 +102,7 @@ class PreCommitRunTests(unittest.TestCase): to_sha = self.repo.get_sha("main") args = self.run_script( "main", "refs/heads/main", CI_COMMIT_BEFORE_SHA=from_sha, ) Loading @@ -118,7 +118,7 @@ class PreCommitRunTests(unittest.TestCase): Check that calling in merge request pipelines finds the LCA with the target branch """ args = self.run_script( "fork", "refs/heads/fork", CI_PIPELINE_SOURCE="merge_request_event", ) Loading @@ -135,7 +135,7 @@ class PreCommitRunTests(unittest.TestCase): CI_COMMIT_BRANCH != CI_DEFAULT_BRANCH """ args = self.run_script("fork") args = self.run_script("refs/heads/fork") expect = [ "run", Loading @@ -150,7 +150,7 @@ class PreCommitRunTests(unittest.TestCase): CI_COMMIT_BRANCH == CI_DEFAULT_BRANCH """ args = self.run_script("main") args = self.run_script("refs/heads/main") expect = ["run", "--all-files"] self.assertListEqual(expect, args) Loading @@ -159,7 +159,7 @@ class PreCommitRunTests(unittest.TestCase): """ Check that pushing to a new orphan branch check all files """ args = self.run_script("orphan") args = self.run_script("refs/heads/orphan") expect = ["run", "--all-files"] self.assertListEqual(expect, args) Loading @@ -168,7 +168,7 @@ class PreCommitRunTests(unittest.TestCase): """ Check additional arguments passed to pre_commit_run are passed to pre-commit """ args = self.run_script("main", ["more", "arguments"]) args = self.run_script("refs/heads/main", ["more", "arguments"]) expect = ["run", "more", "arguments", "--all-files"] self.assertListEqual(expect, args) Loading @@ -185,7 +185,7 @@ class PreCommitRunTests(unittest.TestCase): http: "fatal: error processing shallow info: 4" """ args = self.run_script( "main", "refs/heads/main", CI_PIPELINE_SOURCE="merge_request_event", CI_MERGE_REQUEST_TARGET_BRANCH_NAME="lca", ) Loading Loading
tests/unit/gitlab_ci/pre_commit_run/runner.bash +17 −5 Original line number Diff line number Diff line Loading @@ -53,6 +53,10 @@ get_sha() { GIT_DIR=$1 git rev-parse --revs-only --verify $2 } get_ref_name() { sed 's@refs/[^/]\+/@@' <<<"$1" } get_head() { GIT_DIR=$1 git symbolic-ref HEAD | sed 's@refs/heads/@@' } Loading @@ -60,7 +64,7 @@ get_head() { # Handle arguments cd "${1? The directory to run from, this should be the top of the git repository}" source "${2? The full path to the Bash file containing pre_commit_run}" declare COMMIT_BRANCH=${3? Need the head reference of a target commmit} declare COMMIT_REF=${3? Need the head or tag reference of a target commit} declare SOURCE_REPO=${4? Need the path to the source repository fixture} shift 4 Loading @@ -76,18 +80,26 @@ declare -x CI_MERGE_REQUEST_TARGET_BRANCH_NAME # Set appropriate values for CI_* variables CI_REPOSITORY_URL=file://$SOURCE_REPO CI_DEFAULT_BRANCH=$(get_head $SOURCE_REPO) CI_COMMIT_SHA=$(get_sha $SOURCE_REPO $COMMIT_BRANCH) CI_COMMIT_SHA=$(get_sha $SOURCE_REPO $COMMIT_REF) case ${CI_PIPELINE_SOURCE:=push} in merge_request_event) assert '[[ ! -v CI_COMMIT_BEFORE_SHA ]]' \ "CI_COMMIT_BEFORE_SHA cannot be set for merge request pipelines" : ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:=$CI_DEFAULT_BRANCH} CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=$COMMIT_BRANCH CI_MERGE_REQUEST_SOURCE_BRANCH_NAME=$(get_ref_name $COMMIT_REF) CI_COMMIT_BEFORE_SHA=$NULL_SHA ;; *) CI_COMMIT_BRANCH=$COMMIT_BRANCH *) case $COMMIT_REF in refs/heads/*) CI_COMMIT_BRANCH=$(get_ref_name $COMMIT_REF) ;; refs/tags/*) CI_PIPELINE_SOURCE=push CI_COMMIT_TAG=$(get_ref_name $COMMIT_REF) ;; *) echo >&2 "Unrecognised reference type: $COMMIT_REF"; exit 2 ;; esac ;; esac Loading
tests/unit/gitlab_ci/pre_commit_run/tests.py +7 −7 Original line number Diff line number Diff line Loading @@ -102,7 +102,7 @@ class PreCommitRunTests(unittest.TestCase): to_sha = self.repo.get_sha("main") args = self.run_script( "main", "refs/heads/main", CI_COMMIT_BEFORE_SHA=from_sha, ) Loading @@ -118,7 +118,7 @@ class PreCommitRunTests(unittest.TestCase): Check that calling in merge request pipelines finds the LCA with the target branch """ args = self.run_script( "fork", "refs/heads/fork", CI_PIPELINE_SOURCE="merge_request_event", ) Loading @@ -135,7 +135,7 @@ class PreCommitRunTests(unittest.TestCase): CI_COMMIT_BRANCH != CI_DEFAULT_BRANCH """ args = self.run_script("fork") args = self.run_script("refs/heads/fork") expect = [ "run", Loading @@ -150,7 +150,7 @@ class PreCommitRunTests(unittest.TestCase): CI_COMMIT_BRANCH == CI_DEFAULT_BRANCH """ args = self.run_script("main") args = self.run_script("refs/heads/main") expect = ["run", "--all-files"] self.assertListEqual(expect, args) Loading @@ -159,7 +159,7 @@ class PreCommitRunTests(unittest.TestCase): """ Check that pushing to a new orphan branch check all files """ args = self.run_script("orphan") args = self.run_script("refs/heads/orphan") expect = ["run", "--all-files"] self.assertListEqual(expect, args) Loading @@ -168,7 +168,7 @@ class PreCommitRunTests(unittest.TestCase): """ Check additional arguments passed to pre_commit_run are passed to pre-commit """ args = self.run_script("main", ["more", "arguments"]) args = self.run_script("refs/heads/main", ["more", "arguments"]) expect = ["run", "more", "arguments", "--all-files"] self.assertListEqual(expect, args) Loading @@ -185,7 +185,7 @@ class PreCommitRunTests(unittest.TestCase): http: "fatal: error processing shallow info: 4" """ args = self.run_script( "main", "refs/heads/main", CI_PIPELINE_SOURCE="merge_request_event", CI_MERGE_REQUEST_TARGET_BRANCH_NAME="lca", ) Loading