[coreboot-gerrit] Change in coreboot[master]: util/gitconfig/test: Add commit-msg hook test

Alex Thiessen (Code Review) gerrit at coreboot.org
Mon Jan 15 22:54:54 CET 2018


Alex Thiessen has uploaded this change for review. ( https://review.coreboot.org/23281


Change subject: util/gitconfig/test: Add commit-msg hook test
......................................................................

util/gitconfig/test: Add commit-msg hook test

Add a test that, after cloning the repository to a temporary directory,
installs git hooks and attempts to do a good and a bad commit, expecting
the former to succeed and the latter to fail, thus testing the
`commit-msg` hook.

Change-Id: Icdaf0109c60cb5b6952b1a2468ab050a742e4201
Signed-off-by: Alex Thiessen <alex.thiessen.de+coreboot at gmail.com>
---
A util/gitconfig/test/commit-message-hook.sh
1 file changed, 87 insertions(+), 0 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/81/23281/1

diff --git a/util/gitconfig/test/commit-message-hook.sh b/util/gitconfig/test/commit-message-hook.sh
new file mode 100755
index 0000000..b37262d
--- /dev/null
+++ b/util/gitconfig/test/commit-message-hook.sh
@@ -0,0 +1,87 @@
+#!/bin/bash
+
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2003-2018 Alex Thiessen <alex.thiessen.de+coreboot at gmail.com>
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; version 3 or later of the License.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## SPDX-License-Identifier: GPL-3.0-or-later
+## <https://spdx.org/licenses/GPL-3.0-or-later.html>
+##
+
+set -o errexit
+set -o nounset
+
+# statical analysis
+if command -v shellcheck 1>/dev/null; then
+	shellcheck --exclude=1090,1091 \
+		"${BASH_SOURCE[0]}" \
+		"$(dirname "${BASH_SOURCE[0]}")/helpers.sh"
+else
+	echo "shellcheck not found, running unchecked" >&2
+fi
+
+# dependency check
+dependencies=(dirname git make mktemp rm timeout)
+for dependency in "${dependencies[@]}"; do
+	if ! command -v "${dependency}" 1>/dev/null; then
+		echo "missing ${dependency}, test skipped" >&2
+		exit 0
+	fi
+done
+
+source "$(dirname "${BASH_SOURCE[0]}")/helpers.sh"
+
+# setup
+base_dir="$(mktemp --directory --tmpdir \
+	"test-$(basename "${BASH_SOURCE[0]}" .sh)-XXXXXXXX")"
+clone_dir="${base_dir}/coreboot"
+git clone "$(git rev-parse --show-toplevel)" "${clone_dir}" \
+	 1>"${base_dir}/clone.log" 2>&1
+
+(
+	set -o errexit
+	set -o nounset
+
+	clone_submodules "${clone_dir}" "${base_dir}"
+	git config user.name "John Doe"
+	git config user.email "john.doe at example.com"
+	make gitconfig
+
+	# test
+	echo "good case..."
+	log_file="${base_dir}/good_case.log"
+	echo "this is a test" >> README
+	timeout 4m git commit --all --signoff --message="good case" \
+		1>"${log_file}" 2>&1 \
+		|| check_exit_code positive "${log_file}"
+	git reset --hard --quiet HEAD^
+	git clean -d --force --quiet -x
+
+	echo "bad case..."
+	log_file="${base_dir}/bad_case.log"
+	# Goal here is to verify whether a failing `util/lint` test will prevent
+	# a commit. It's a bit tricky because `checkpatch.pl` is run just after
+	# the lint tests and will cover many of those too. So we need a case
+	# that fails with `util/lint` but succeeds with `checkpatch.pl`. I found
+	# that `lint-stable-009-old-licenses` does the job quite well.
+	printf "You should have received a copy of the %s\n" "GNU" > src/test.c
+	git add src/test.c
+	timeout 4m git commit --signoff --message="bad case" \
+		1>"${log_file}" 2>&1 \
+		&& check_exit_code negative "${log_file}"
+	git rm --force --quiet src/test.c
+	git clean -d --force --quiet -x
+)
+
+# teardown
+rm --force --recursive "${base_dir}"

-- 
To view, visit https://review.coreboot.org/23281
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icdaf0109c60cb5b6952b1a2468ab050a742e4201
Gerrit-Change-Number: 23281
Gerrit-PatchSet: 1
Gerrit-Owner: Alex Thiessen <alex.thiessen.de+coreboot at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180115/3f05a34e/attachment.html>


More information about the coreboot-gerrit mailing list