1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0+ 3# 4# Run herd tests on all .litmus files in the litmus-tests directory 5# and check each file's result against a "Result:" comment within that 6# litmus test. If the verification result does not match that specified 7# in the litmus test, this script prints an error message prefixed with 8# "^^^". It also outputs verification results to a file whose name is 9# that of the specified litmus test, but with ".out" appended. 10# 11# Usage: 12# checkalllitmus.sh 13# 14# Run this in the directory containing the memory model. 15# 16# This script makes no attempt to run the litmus tests concurrently. 17# 18# Copyright IBM Corporation, 2018 19# 20# Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com> 21 22. scripts/parseargs.sh 23 24litmusdir=litmus-tests 25if test -d "$litmusdir" -a -r "$litmusdir" -a -x "$litmusdir" 26then 27 : 28else 29 echo ' --- ' error: $litmusdir is not an accessible directory 30 exit 255 31fi 32 33# Create any new directories that have appeared in the github litmus 34# repo since the last run. 35if test "$LKMM_DESTDIR" != "." 36then 37 find $litmusdir -type d -print | 38 ( cd "$LKMM_DESTDIR"; sed -e 's/^/mkdir -p /' | sh ) 39fi 40 41# Find the checklitmus script. If it is not where we expect it, then 42# assume that the caller has the PATH environment variable set 43# appropriately. 44if test -x scripts/checklitmus.sh 45then 46 clscript=scripts/checklitmus.sh 47else 48 clscript=checklitmus.sh 49fi 50 51# Run the script on all the litmus tests in the specified directory 52ret=0 53for i in $litmusdir/*.litmus 54do 55 if ! $clscript $i 56 then 57 ret=1 58 fi 59done 60if test "$ret" -ne 0 61then 62 echo " ^^^ VERIFICATION MISMATCHES" 1>&2 63else 64 echo All litmus tests verified as was expected. 1>&2 65fi 66exit $ret 67