|
|
|
@ -0,0 +1,34 @@
|
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
# Test all commits on this branch but the last one.
|
|
|
|
|
#
|
|
|
|
|
# Used in the all_commits ci job to ensure all commits build
|
|
|
|
|
# and tests pass at least for the sequoia-openpgp crate.
|
|
|
|
|
|
|
|
|
|
# NOTE: under gitlab's Settings, "CI/CD", General Pipelines ensure
|
|
|
|
|
# that the "git shallow clone" setting is set to 0. Otherwise other
|
|
|
|
|
# branch are not fetched.
|
|
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
set -x
|
|
|
|
|
|
|
|
|
|
# Use dummy identity to make git rebase happy.
|
|
|
|
|
git config user.name "C.I. McTestface"
|
|
|
|
|
git config user.email "ci.mctestface@example.com"
|
|
|
|
|
|
|
|
|
|
# If the previous commit already is on main we're done.
|
|
|
|
|
git merge-base --is-ancestor HEAD~ origin/main &&
|
|
|
|
|
echo "All commits tested already" &&
|
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
|
|
# Leave out the last commit - it has already been checked.
|
|
|
|
|
git checkout HEAD~
|
|
|
|
|
git status
|
|
|
|
|
git rebase origin/main \
|
|
|
|
|
--exec 'echo ===; echo ===; echo ===; git log -n 1;' \
|
|
|
|
|
--exec 'cargo test --all' &&
|
|
|
|
|
echo "All commits passed tests" &&
|
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
|
|
# The rebase failed - probably because a test failed.
|
|
|
|
|
git rebase --abort; exit 1
|