Fix FreeBSD reporting on reruns

Turns out, when your test-suite fails on FreeBSD the rerun logic
would fail as follows:

Results Summary
PASS	 1358
FAIL	   7
SKIP	  47

Running Time:	04:00:02
Percent passed:	96.2%
Log directory:	/var/tmp/test_results/20220225T092538
mktemp: illegal option -- p
usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
       mktemp [-d] [-q] [-u] -t prefix
mktemp: illegal option -- p
usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
       mktemp [-d] [-q] [-u] -t prefix
/usr/local/share/zfs/zfs-tests.sh: cannot create :
                                   No such file or directory
...

This change resolves a flaw from the original commit, 2320e6eb4
("Add zfs-test  facility to automatically rerun failing tests")

Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #13156
This commit is contained in:
наб 2022-02-26 20:19:05 +01:00 committed by Tony Hutter
parent 7bd292e59b
commit f2eaa97840
1 changed files with 12 additions and 10 deletions

View File

@ -680,14 +680,16 @@ export __ZFS_POOL_EXCLUDE
export TESTFAIL_CALLBACKS export TESTFAIL_CALLBACKS
export PATH=$STF_PATH export PATH=$STF_PATH
mktemp_file() {
if [ "$UNAME" = "FreeBSD" ]; then if [ "$UNAME" = "FreeBSD" ]; then
mkdir -p "$FILEDIR" || true mktemp -u "${FILEDIR}/$1.XXXXXX"
RESULTS_FILE=$(mktemp -u "${FILEDIR}/zts-results.XXXXXX")
REPORT_FILE=$(mktemp -u "${FILEDIR}/zts-report.XXXXXX")
else else
RESULTS_FILE=$(mktemp -u -t zts-results.XXXXXX -p "$FILEDIR") mktemp -ut "$1.XXXXXX" -p "$FILEDIR"
REPORT_FILE=$(mktemp -u -t zts-report.XXXXXX -p "$FILEDIR")
fi fi
}
mkdir -p "$FILEDIR" || :
RESULTS_FILE=$(mktemp_file zts-results)
REPORT_FILE=$(mktemp_file zts-report)
# #
# Run all the tests as specified. # Run all the tests as specified.
@ -711,8 +713,8 @@ RESULT=$?
if [ "$RESULT" -eq "2" ] && [ -n "$RERUN" ]; then if [ "$RESULT" -eq "2" ] && [ -n "$RERUN" ]; then
MAYBES="$($ZTS_REPORT --list-maybes)" MAYBES="$($ZTS_REPORT --list-maybes)"
TEMP_RESULTS_FILE=$(mktemp -u -t zts-results-tmp.XXXXX -p "$FILEDIR") TEMP_RESULTS_FILE=$(mktemp_file zts-results-tmp)
TEST_LIST=$(mktemp -u -t test-list.XXXXX -p "$FILEDIR") TEST_LIST=$(mktemp_file test-list)
grep "^Test:.*\[FAIL\]" "$RESULTS_FILE" >"$TEMP_RESULTS_FILE" grep "^Test:.*\[FAIL\]" "$RESULTS_FILE" >"$TEMP_RESULTS_FILE"
for test_name in $MAYBES; do for test_name in $MAYBES; do
grep "$test_name " "$TEMP_RESULTS_FILE" >>"$TEST_LIST" grep "$test_name " "$TEMP_RESULTS_FILE" >>"$TEST_LIST"