123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- #Assembles, links and run tests of FreePascal
- #Param 1, the directory with the tests to perform.
- #Note versions can be either 2 or 3 fields, e g 1.1 1.0.10
- Export nrOfSucceded
- Export nrOfFailed
- #Iterate through tests
- Set Exit 0 # To handle the case, in the for stmt, when there is no match
- For sourceWithExt In {1}tÅ.log #only test files, which begins with a 't'
- Set Exit 1 #Revert error handling
- (Evaluate "{sourceWithExt}" =~ /(([Â.])*)¨1Å/) > Dev:Null
- Set apppath {¨1}
- (Evaluate {apppath} =~ /Å:([Â:]*)¨1/) > Dev:Null
- Set appname {¨1}
- If `Exists {apppath}.elg`
- Continue
- End
- Set testdirectives ""
- Set testdirectives "`StreamEdit {apppath}.pp ¶
- -d -e "/¶{[ ¶t]*(%Å*)¨1[ ¶t]*¶}/ Print ¨1"`" > Dev:Null
- Echo "============================================================="
- If {debugverbose}
- Echo {testdirectives}
- End
- If `Evaluate "{testdirectives}" =~ /Å%CPU=([,_0-9A-Za-z]*)¨1Å/`
- If `Evaluate "{¨1}" !~ /ÅpowerpcÅ/`
- Echo Skipped {apppath}. Test only for CPU: "{¨1}"
- Continue
- End
- End
-
- If `Evaluate "{testdirectives}" =~ /Å%SKIPCPU=([,_0-9A-Za-z]*)¨1Å/`
- If `Evaluate "{¨1}" =~ /ÅpowerpcÅ/`
- Echo Skipped {apppath}. Test not for CPU: {¨1}
- Continue
- End
- End
-
- If `Evaluate "{testdirectives}" =~ /Å%TARGET=([,_0-9A-Za-z]*)¨1Å/`
- If `Evaluate "{¨1}" !~ /ÅmacosÅ/`
- Echo Skipped {apppath}. Test only for target: {¨1}
- Continue
- End
- End
-
- If `Evaluate "{testdirectives}" =~ /Å%SKIPTARGET=([,_0-9A-Za-z]*)¨1Å/`
- If `Evaluate "{¨1}" =~ /ÅmacosÅ/`
- Echo Skipped {apppath}. Test not for target: {¨1}
- Continue
- End
- End
- If `Evaluate "{testdirectives}" =~ /Å%VERSION=([0-9.]*)¨1Å/`
- Set minver {¨1}
- If `Evaluate "{minver}" !~ /([0-9]*)¨1.([0-9]*)¨2.([0-9]*)¨3/`
- If `Evaluate "{minver}" !~ /([0-9]*)¨1.([0-9]*)¨2/`
- Echo Skipped {apppath}. Error in version no: {minver}
- Continue
- Else
- Set ¨3 0
- End
- End
-
- If Â(({cv1}> {¨1}) || (({cv1}=={¨1}) && ¶
- (({cv2}> {¨2}) || (({cv2}=={¨2}) && ¶
- ({cv3}>={¨3})))))
- Echo Skipped {apppath}. Compiler too old, test requires at least: {minver}
- Continue
- End
- End
-
- If `Evaluate "{testdirectives}" =~ /Å%MAXVERSION=([0-9.]*)¨1Å/`
- Set maxver {¨1}
- If `Evaluate "{maxver}" !~ /([0-9]*)¨1.([0-9]*)¨2.([0-9]*)¨3/`
- If `Evaluate "{maxver}" !~ /([0-9]*)¨1.([0-9]*)¨2/`
- Echo Skipped {apppath}. Error in version no: {maxver}
- Continue
- Else
- Set ¨3 0
- End
- End
-
- If Â(({cv1}< {¨1}) || (({cv1}=={¨1}) && ¶
- (({cv2}< {¨2}) || (({cv2}=={¨2}) && ¶
- ({cv3}<={¨3})))))
- Echo Skipped {apppath}. Compiler too new, test requires no more than: {maxver}
- Continue
- End
- End
- If `Evaluate "{testdirectives}" =~ /Å%NOTE=([Â%]*)¨1Å/`
- Echo Note: {¨1}
- End
- # Start compiling
- Echo Start compiling "{apppath}"
-
- Set Exit 0
- SetFile -c 'MPS ' -t 'TEXT' {appname}_ppas
-
- If {debugverbose}
- Execute {appname}_ppas | Tee {apppath}.log
- Else
- Execute {appname}_ppas > {apppath}.log
- End
- If "{Status}" != 0
- Set Exit 1
- Echo Compiling of "{apppath}" failed
- Set -e nrOfFailed `Evaluate {nrOfFailed}+1`
- If {debugverbose}
- StreamEdit {apppath}.pp -d -e "1,15 Print"
- End
- Continue
- Else
- Set Exit 1
- Echo Compiling of "{apppath}" succeded
- End
-
- If `Evaluate "{testdirectives}" =~ /Å%NORUNÅ/`
- Echo Skipped running of {apppath} due to option NORUN
- Continue
- End
- If `Evaluate "{testdirectives}" =~ /Å%INTERACTIVEÅ/`
- Echo Skipped running of {apppath} due to option INTERACTIVE
- Continue
- End
- If Not `Exists {apppath}`
- # Should this be counted as a failed test ?
- # Or perhaps files is to be checked for if they are units ?
- Echo Skipped running du to non existing executable
- Continue
- End
- If 1
- If `Evaluate "{testdirectives}" =~ /Å%RESULT=([0-9]*)¨1Å/`
- Set expectedresult {¨1}
- Else
- Set expectedresult 0
- End
-
- #Execute test program
- Echo "Xxx" > "{apppath}.elg" #Needed, to continue if test app crashes
- Set Exit 0
- If {debugverbose}
- {apppath} | Tee {apppath}.elg
- Else
- {apppath} > {apppath}.elg
- End
- Set actualresult {Status}
- Set Exit 1
- If {actualresult} != 0
- Echo Running of "{apppath}" failed
- Else
- Echo Running of "{apppath}" succeded
- End
- Echo "Exit code was {actualresult}, expected {expectedresult}"
- If "{actualresult}" != "{expectedresult}"
- Echo -n "Failed to run {apppath}¶r" >> log #¶r gives a linefeed
- Echo Failed test "{apppath}"
- Set -e nrOfFailed `Evaluate {nrOfFailed}+1`
- If {debugverbose}
- StreamEdit {apppath}.pp -d -e "1,15 Print"
- End
- Else
- Echo -n "Successfully run {apppath}¶r" >> log #¶r gives a linefeed
- Echo Succeded test "{apppath}"
- Set -e nrOfSucceded `Evaluate {nrOfSucceded}+1`
- End
- End
- Set Exit 0 # To handle the case, in the for stmt, when there is no match
- End
- Set Exit 1 #Revert error handling
|