From 9d5e11682cd48ba93195b9cd7797d22c9f518247 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 30 Nov 2022 18:44:33 +0100 Subject: [PATCH] SCRIPTS: run-regtests: add a version check It happens from time to time while switching between branches and/or updating after someone else's changes that regtests are run by accident on the wrong binary, typically the one the tests were run on during development and not with the latest adaptations. And obviously it's when this happens that we break the CI. There are various causes to this but they all come down to humans context-switching a lot, and there's no real fix for this that doesn't add even more burden hence increases the overhead. However we can help the human detect such mistakes very easily. This change here will compare the version of the haproxy binary to the version of the tree, and will emit a warning in the regtest output if they do not match, regardless of the outcome of the test. This is sufficient in case of failures because these are quickly glanced over, and is sufficient as well in case of accidental success because the warning is the last message. E.g: ########################## Starting vtest ########################## Testing with haproxy version: 2.7-dev10-cfcdbc-38 Warning: version does not match the current tree (2.7-dev10-111c78-39) 0 tests failed, 0 tests skipped, 182 tests passed This should not affect builds made out of a git tree because the version is retrieved using "make version", or exactly the same way as it's passd to the haproxy binary. We just need to know what "make" command to run, so $MAKE is used primarily, falling back to "make" then to "gmake". In case all of these fail, we just ignore the version check. This should be sufficient to catch human mistakes without affecting the CI. --- scripts/run-regtests.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scripts/run-regtests.sh b/scripts/run-regtests.sh index 5126efb3f..85f13419e 100755 --- a/scripts/run-regtests.sh +++ b/scripts/run-regtests.sh @@ -350,6 +350,12 @@ EOF HAPROXY_VERSION=$(echo $HAPROXY_VERSION | cut -d " " -f 3) echo "Testing with haproxy version: $HAPROXY_VERSION" +PROJECT_VERSION=$(${MAKE:-make} version 2>&1 | grep '^VERSION:\|^SUBVERS:'|cut -f2 -d' '|tr -d '\012') +if [ -z "${PROJECT_VERSION}${MAKE}" ]; then + # try again with gmake, just in case + PROJECT_VERSION=$(gmake version 2>&1 | grep '^VERSION:\|^SUBVERS:'|cut -f2 -d' '|tr -d '\012') +fi + FEATURES_PATTERN=" $FEATURES " SERVICES_PATTERN=" $SERVICES " @@ -380,6 +386,11 @@ fi echo "########################## Starting vtest ##########################" echo "Testing with haproxy version: $HAPROXY_VERSION" + +if [ -n "$PROJECT_VERSION" -a "$PROJECT_VERSION" != "$HAPROXY_VERSION" ]; then + echo "Warning: version does not match the current tree ($PROJECT_VERSION)" +fi + _vtresult=0 if [ -n "$testlist" ]; then if [ -n "$jobcount" ]; then