3 ## This program is free software; you can redistribute it and/or modify
4 ## it under the terms of the GNU General Public License as published by
5 ## the Free Software Foundation; version 3 or later of the License.
7 ## This program is distributed in the hope that it will be useful,
8 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
9 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 ## GNU General Public License for more details.
12 ## SPDX-License-Identifier: GPL-3.0-or-later
13 ## <https://spdx.org/licenses/GPL-3.0-or-later.html>
20 if command -v shellcheck
1>/dev
/null
; then
21 shellcheck
--exclude=1090,1091 \
23 "$(dirname "${BASH_SOURCE[0]}")/helpers.sh"
25 echo "shellcheck not found, running unchecked" >&2
29 dependencies
=(dirname git
make mktemp
rm timeout
)
30 for dependency
in "${dependencies[@]}"; do
31 if ! command -v "${dependency}" 1>/dev
/null
; then
32 echo "missing ${dependency}, test skipped" >&2
37 source "$(dirname "${BASH_SOURCE[0]}")/helpers.sh"
40 base_dir
="$(mktemp --directory --tmpdir \
41 "test-$
(basename "${BASH_SOURCE[0]}" .sh
)-XXXXXXXX")"
42 clone_dir
="${base_dir}/coreboot"
43 git clone
"$(git rev-parse --show-toplevel)" "${clone_dir}" \
44 1>"${base_dir}/clone.log" 2>&1
50 clone_submodules
"${clone_dir}" "${base_dir}"
51 git config user.name
"John Doe"
52 git config user.email
"john.doe@example.com"
57 log_file
="${base_dir}/good_case.log"
58 echo "this is a test" >> README.md
59 timeout
4m git commit
--all --signoff --message="good case" \
60 1>"${log_file}" 2>&1 \
61 || check_exit_code positive
"${log_file}"
62 git
reset --hard --quiet HEAD^
63 git clean
-d --force --quiet -x
66 log_file
="${base_dir}/bad_case.log"
67 # Goal here is to verify whether a failing `util/lint` test will prevent
68 # a commit. It's a bit tricky because `checkpatch.pl` is run just after
69 # the lint tests and will cover many of those too. So we need a case
70 # that fails with `util/lint` but succeeds with `checkpatch.pl`. I found
71 # that `lint-stable-009-old-licenses` does the job quite well.
72 printf "You should have received a copy of the %s\n" "GNU" > src
/test.c
74 timeout
4m git commit
--signoff --message="bad case" \
75 1>"${log_file}" 2>&1 \
76 && check_exit_code negative
"${log_file}"
77 git
rm --force --quiet src
/test.c
78 git clean
-d --force --quiet -x
82 rm --force --recursive "${base_dir}"