processtests.sh 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. # Generates the tests in tests/test/cg/variants by
  3. # a) generating the test programs
  4. # b) compiling them with kylix and running them
  5. # c) changing them based on the Kylix compilation and running result, so
  6. # they become self-checking
  7. # Only tested under Linux with Kylix installed, might also work under cygwin
  8. ./genvartests
  9. BIGTEST=tnofalvarol.pp
  10. BIGTESTMAIN=tnofalvarol.inc
  11. rm ivarol*
  12. rm $BIGTEST
  13. rm $BIGTESTMAIN
  14. echo '{$ifdef fpc}' > $BIGTEST
  15. echo '{$mode delphi}' >> $BIGTEST
  16. echo '{$else fpc}' >> $BIGTEST
  17. echo '{$define FPC_HAS_TYPE_EXTENDED}' >> $BIGTEST
  18. echo '{$endif fpc}' >> $BIGTEST
  19. echo '{$define bigfile}' >> $BIGTEST
  20. echo >> $BIGTEST
  21. for file in tvarol*.pp
  22. do
  23. dcc $file
  24. if [ $? -ne 0 ]; then
  25. echo '{ %fail }' > $file.new
  26. cat $file >> $file.new
  27. mv $file.new $file
  28. else
  29. ./`basename $file .pp` > output
  30. if grep XXX output >/dev/null; then
  31. sed -e "s/writeln('YYY')/halt(1)/" < $file > $file.new
  32. grep -v "writeln('XXX')" < $file.new > $file
  33. rm $file.new
  34. fi
  35. if grep YYY output >/dev/null; then
  36. sed -e "s/writeln('XXX')/halt(1)/" < $file > $file.new
  37. grep -v "writeln('YYY')" < $file.new > $file
  38. rm $file.new
  39. fi
  40. if grep VVV output >/dev/null; then
  41. sed -e "s/writeln('COMPFAILV')/raise tobject.create/" < $file > $file.new
  42. else
  43. sed -e "s/writeln('VVV')/halt(1)/" < $file > $file.new
  44. fi
  45. mv $file.new $file
  46. if grep QQQ output >/dev/null; then
  47. sed -e "s/writeln('COMPFAILQ')/raise tobject.create/" < $file > $file.new
  48. else
  49. sed -e "s/writeln('QQQ')/halt(1)/" < $file > $file.new
  50. fi
  51. mv $file.new $file
  52. if ! grep "ifdef FPC_HAS_TYPE_EXTENDED" $file >/dev/null; then
  53. namenr=`echo $file | sed -e 's/tvarol//' -e 's/\.pp//'`
  54. # lines=`wc -l < $file`
  55. # lines=$(($lines - 5))
  56. # tail -$lines < $file >> $BIGTEST
  57. echo " dotest${namenr};" >> $BIGTESTMAIN
  58. newname=`echo $file | sed -e 's/tvarol/ivarol/'`
  59. mv $file $newname
  60. echo '{$i' $newname '}' >> $BIGTEST
  61. fi
  62. fi
  63. done
  64. echo >> $BIGTEST
  65. echo Begin >> $BIGTEST
  66. cat $BIGTESTMAIN >> $BIGTEST
  67. echo End. >> $BIGTEST
  68. rm $BIGTESTMAIN