summaryrefslogtreecommitdiff
path: root/abuild.in
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2024-06-06 01:20:09 -0500
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2024-06-06 21:42:58 -0500
commit16f63fb0e82e9028ba1b9b868c7743e31f3d3f32 (patch)
treef6c94f2aad7dc57231ec45ab00a1087325ef0bfa /abuild.in
parent63674cd048f2763638d155cf515be08cc41e99f9 (diff)
downloadabuild-awilfox/feature-15.tar.gz
abuild-awilfox/feature-15.tar.bz2
abuild-awilfox/feature-15.tar.xz
abuild-awilfox/feature-15.zip
abuild: Implement a checkretry optionawilfox/feature-15
This allows a test suite to be retried automatically in case of flaky or unreliable tests upstream. The default retry count is 5, but can be set in abuild.conf with the variable `$ABUILD_RETRY_COUNT`. Closes: #15
Diffstat (limited to 'abuild.in')
-rw-r--r--abuild.in16
1 files changed, 16 insertions, 0 deletions
diff --git a/abuild.in b/abuild.in
index 72a29b2..076824f 100644
--- a/abuild.in
+++ b/abuild.in
@@ -1533,6 +1533,9 @@ build_abuildrepo() {
if options_has "checkroot"; then
_check=check_fakeroot
fi
+ if options_has "checkretry"; then
+ _check=check_retry
+ fi
if ! want_check; then
_check=true
fi
@@ -1787,6 +1790,19 @@ check_fakeroot() {
do_fakeroot "$abuild_path" $forceroot $color_opt $keep_build check
}
+# wrap check() with retries
+check_retry() {
+ count=${ABUILD_RETRY_COUNT:=5}
+ (cd "$startdir";
+ try=1
+ while [ $try -le $count ]; do
+ msg "Test attempt $try of $count..."
+ check && exit 0
+ try=$(($try+1))
+ [ $try -gt $count ] && exit 1
+ done)
+}
+
# build and package in fakeroot
rootpkg() {
cd "$startdir"