diff options
| author | EuAndreh <eu@euandre.org> | 2023-11-10 11:52:17 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2023-11-10 11:53:13 -0300 |
| commit | 7ff4704b10e0ea03b792790eae847a1d04f47737 (patch) | |
| tree | fb46c3eb0a825a84d7e4c3aa56cfa4d1f714a545 /tests | |
| parent | tests/assert-install.sh: Fix progress report string (diff) | |
| download | papod-7ff4704b10e0ea03b792790eae847a1d04f47737.tar.gz papod-7ff4704b10e0ea03b792790eae847a1d04f47737.tar.xz | |
tests/assert-clean.sh: Enforce correctness of "make clean"
Diffstat (limited to 'tests')
| -rwxr-xr-x | tests/assert-clean.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/assert-clean.sh b/tests/assert-clean.sh new file mode 100755 index 0000000..3cd550c --- /dev/null +++ b/tests/assert-clean.sh @@ -0,0 +1,47 @@ +#!/bin/sh +set -eu + +if [ -n "${RECURSIVE_CHECK:-}" ]; then + exit +fi +export RECURSIVE_CHECK=true + + +if [ ! -e .git ]; then + echo "Not in a Git repository, skipping \"$0\"" >&2 + exit +fi + + +. tools/lib.sh + +D="$(mkdtemp)" +trap 'rm -rf "$D"' EXIT + + +git clone -q --depth=1 file://"$PWD" "$D" +cd "$D" + +make all check 1>/dev/null 2>&1 ||: +make -s clean + + +{ + printf '%s: "clean" target deletes all derived assets...' "$0" + + if [ -n "$(git status -s)" ]; then + printf ' ERR.\n' + echo 'Repository left dirty:' + git status + exit 1 + fi + + if [ -n "$(git clean -nffdx)" ]; then + printf ' ERR.\n' + echo 'Untracked files left:' + git clean -ffdx --dry-run + exit 1 + fi + + printf ' OK\n' +} >&2 |
