Commit e27fb441 authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Pass pre_commit_run test refs as full refs

parent b7447783
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -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/@@'
}
@@ -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

@@ -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

+7 −7
Original line number Diff line number Diff line
@@ -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,
		)

@@ -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",
		)

@@ -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",
@@ -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)
@@ -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)
@@ -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)
@@ -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",
		)