diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2010-03-03 10:25:25 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2010-03-03 10:25:25 +0000 |
commit | 93d89c2b5e8497365be152fb53cb6cd4c5764d34 (patch) | |
tree | 0de8d05bbd0eeaeb5e4b85395f8dd576984b6a9e /cil/bin/test-bad | |
parent | 891377ce1962cdb31357d6580d6546ec22df2b4f (diff) | |
download | compcert-93d89c2b5e8497365be152fb53cb6cd4c5764d34.tar.gz compcert-93d89c2b5e8497365be152fb53cb6cd4c5764d34.zip |
Getting rid of CIL
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1270 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cil/bin/test-bad')
-rwxr-xr-x | cil/bin/test-bad | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/cil/bin/test-bad b/cil/bin/test-bad deleted file mode 100755 index 4eacdc00..00000000 --- a/cil/bin/test-bad +++ /dev/null @@ -1,202 +0,0 @@ -#!/bin/sh -# run a regression test containing one or more intentional failures -# -# To create a source file to be processed by this script do the following: -# - the file should be a standalone program with main without any arguments -# You can add other files as part of the CFLAGS variable -# - add a comment -# // NUMERRORS n -# where n is the number of errors to be tested by this file -# -# This file is processed n+1 times. The first time, it should succeed (main returns or -# exits with code 0) and the other n times it should fail. -# For each run the preprocessor variable ERROR is defined to be -# be k (0 <= k <= n). -# You can mark certain lines in your program so that they are used ONLY in a certain run: put the -# following comment after a line to make it appear only in the run with ERROR == 3 -# -# some_code; // ERROR(3) -# -# -# Furthermore, for each run that is intended to fail you can specify a string that -# must appear in the output. -# -# some_code; // ERROR(3):this string must appear in output -# -# Do not put any spaces around the : -# -# Simple example: -# -# #define E(n) {printf("Error %d\n", n); exit(n); } -# #define SUCCESS {printf("Success\n"); exit(0); } -# -# // NUMERRORS 3 -# int main() { -# -# char char x; // ERROR(1):invalid type specifier -# int y; -# int z = ++y; -# // This conditional should be true -# if(z == y) E(2); // ERROR(2):Error 2 -# -# #if ERROR == 3 -# z = (++y, y--); -# if(z == y + 1) E(3); // ERROR(3):Error 3 -# #endif -# -# SUCCESS; -# } -# -# -# set RUNONLY=n to run only the test case n -# - -if [ "$1" = "" ]; then - # most parameters are passed by name, instead of as positional - # arguments, for better impedance match with Makefile; but it's - # good to have at least 1 positional arg so when it's missing I - # can easily tell, and print this message - echo "usage: CILHOME=... CILLY=... CFLAGS=... $0 source-file.c" - echo "You can also set RUNONLY=n to run only the nth iteration" - exit 0 -fi -echo "CILLY=$CILLY" -echo "CFLAGS=$CFLAGS" -srcfile="$1" -# Construct the name of the temporary file to use -srcfilenoext=`echo $srcfile | sed s/.c\$//` -tmpname="$srcfilenoext-tmp" - -# for GCC, use "# xx foo.c". For MSVC, use "#line xx foo.c" -if [ "$_MSVC" != "" ]; then - LINEOPT="line" - OUTFLAG="/Fe" - OUTEXT=".exe" -else - LINEOPT="" - OUTFLAG="-o " - OUTEXT=".exe" # So that I can delete the executables -fi - -# Start it in the right directory -# cd "$CILLYHOME/test/small2" || exit - -# read how many failure cases are in the file; expect line of form -# "// NUMERRORS n" -numcases=`grep NUMERRORS "$srcfile" | perl -e '$_ = <>; m|(\d+)|; print $1;'` -if [ -z "$numcases" ]; then - echo "didn't find a string of form NUMERRORS <n> in the file" - exit 2 -fi -echo "there are $numcases failure cases in this file" - - -# iterate through the cases; first case (0) is where no errors are present -i=0 -if [ "$RUNONLY" != "" ] ;then - i=$RUNONLY -fi -while [ $i -le $numcases ]; do - echo - echo - echo "********************** Iteration $i" - echo - echo - # generate a temporary file; first hide the ERROR tags which identify - # the current test, then remove all remaining ERROR lines - # (syntax for errors has parentheses so if I have >=10 cases I don't - # run into problems where e.g. ERROR1 is a substring of ERROR10) - # use the little perl script to put line number directives where we remove - # lines - echo "generating test $i" - rm -f $tmpname.c 2>/dev/null - ( echo "#define ERROR $i"; echo "#$LINEOPT 1 \"$srcfile\"";cat "$srcfile") |\ - sed "s|ERROR($i)|(selected: $i)|" | \ - perl -e 'my $ln = 0; while(<>) { if($_ =~ m|ERROR\(|) { print "#'$LINEOPT' $ln\n"; } else { print $_; }; $ln ++}' \ - > "$tmpname.c" - chmod a-w "$tmpname.c" - - # Grab the errorline for this test case - themsg=`cat "$srcfile" | grep "ERROR($i).*:" | sed "s/^.*ERROR.*://" ` - if [ "x$themsg" != "x" ] ;then - echo "Expecting error message:$themsg" - fi - - # compile this with our tool - rm -f test-bad.out test-bad.err ${tmpname}$OUTEXT - echo $CILLY $CFLAGS $tmpname.c ${OUTFLAG}${tmpname}$OUTEXT - $CILHOME/bin/teetwo test-bad.out test-bad.err \ - $CILLY $CFLAGS -DERROR=$i $tmpname.c ${OUTFLAG}${tmpname}$OUTEXT - # cat test-bad.out test-bad.err - status=$? - runit=1 - if [ $status != 0 ]; then - if [ $i = 0 ] ;then - echo "The 0th iteration failed to CURE! It is supposed to succeed." - exit $status - else - if [ "x$themsg" != "x" ] ;then - echo "grep \"$themsg\" test-bad.out test-bad.err" - if ! grep "$themsg" test-bad.out test-bad.err ;then - echo "The ${i}th iteration failed to CURE but cannot find: $themsg" - exit 3 - else - echo "The ${i}th iteration failed to CURE, as expected!" - fi - else - echo "The ${i}th iteration failed to CURE. We expected some failure!" - fi - runit=0 - fi - fi - - # run it - if [ $runit != 0 ]; then - echo "./$tmpname$OUTEXT" - rm -f test-bad.out test-bad.err - if $CILHOME/bin/teetwo test-bad.out test-bad.err ./$tmpname$OUTEXT ; then - # cat test-bad.out test-bad.err - if [ $i = 0 ]; then - # expected success on 0th iteration - echo "(succeeded as expected)" - else - # unexpected success on >0th iteration - echo "The ${i}th iteration did not fail! It is supposed to fail." - exit 2 - fi - else - # cat test-bad.out test-bad.err - if [ $i = 0 ]; then - # unexpected failure on 0th iteration - echo "The 0th iteration failed! It is supposed to succeed." - #cat $tmpname.c - exit 2 - else - # expected failure on >0th iteration - if [ "x$themsg" != "x" ] ;then - echo "grep \"$themsg\" test-bad.out test-bad.err" - if ! grep "$themsg" test-bad.out test-bad.err ;then - echo "The ${i}th iteration failed but cannot find:$themsg" - exit 3 - fi - fi - echo "(failed as expected)" - fi - fi - fi - - # possibly bail after 0th - if [ "$TESTBADONCE" != "" ]; then - echo "bailing after 0th iteration because TESTBADONCE is set" - exit 0 - fi - if [ "$RUNONLY" != "" ]; then - echo "bailing after ${RUNONLY}th iteration because RUNONLY is set" - exit 0 - fi - - i=`expr $i + 1` -done - -echo "all $numcases cases in $srcfile failed as expected" - |