Linux-libre 5.4-rc7-gnu
[librecmc/linux-libre.git] / tools / memory-model / scripts / checkalllitmus.sh
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0+
3 #
4 # Run herd7 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
24 litmusdir=litmus-tests
25 if test -d "$litmusdir" -a -r "$litmusdir" -a -x "$litmusdir"
26 then
27         :
28 else
29         echo ' --- ' error: $litmusdir is not an accessible directory
30         exit 255
31 fi
32
33 # Create any new directories that have appeared in the github litmus
34 # repo since the last run.
35 if test "$LKMM_DESTDIR" != "."
36 then
37         find $litmusdir -type d -print |
38         ( cd "$LKMM_DESTDIR"; sed -e 's/^/mkdir -p /' | sh )
39 fi
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.
44 if test -x scripts/checklitmus.sh
45 then
46         clscript=scripts/checklitmus.sh
47 else
48         clscript=checklitmus.sh
49 fi
50
51 # Run the script on all the litmus tests in the specified directory
52 ret=0
53 for i in $litmusdir/*.litmus
54 do
55         if ! $clscript $i
56         then
57                 ret=1
58         fi
59 done
60 if test "$ret" -ne 0
61 then
62         echo " ^^^ VERIFICATION MISMATCHES" 1>&2
63 else
64         echo All litmus tests verified as was expected. 1>&2
65 fi
66 exit $ret