# file : libbuild2/test/script/parser+scope-if.test.testscript # license : MIT; see accompanying LICENSE file : if : { : true : $* -s <<EOI >>EOO if true foo { cmd } EOI { ? true foo { cmd } } EOO : false : $* -s <<EOI >>EOO if false foo { cmd } EOI { ? false foo } EOO : not-true : $* -s <<EOI >>EOO if! true { cmd } EOI { ? true } EOO : not-false : $* -s <<EOI >>EOO if! false { cmd } EOI { ? false { cmd } } EOO : eos-inside : $* <<EOI 2>>EOE != 0 if { EOI testscript:3:1: error: expected '}' at the end of the scope EOE } : elif : { : true : $* -s <<EOI >>EOO if false { cmd } elif true { cmd1 } EOI { ? false ? true { cmd1 } } EOO : false : $* -s <<EOI >>EOO if false { cmd } elif false { cmd } EOI { ? false ? false } EOO : not-false : $* -s <<EOI >>EOO if false { cmd } elif! false { cmd1 } EOI { ? false ? false { cmd1 } } EOO : not-true : $* -s <<EOI >>EOO if false { cmd } elif! true { cmd } EOI { ? false ? true } EOO : after-else : $* <<EOI 2>>EOE != 0 if false { cmd } else { cmd } elif true { cmd } EOI testscript:9:1: error: 'elif' after 'else' EOE } : else : { : true : $* -s <<EOI >>EOO if false { cmd } else { cmd1 } EOI { ? false { cmd1 } } EOO : false : $* -s <<EOI >>EOO if true { cmd1 } else { cmd } EOI { ? true { cmd1 } } EOO : chain : $* -s <<EOI >>EOO if false { cmd } elif false { cmd cmd } elif false { cmd } elif true { cmd1 cmd2 } elif false { cmd } else { cmd cmd } EOI { ? false ? false ? false ? true { { cmd1 } { cmd2 } } } EOO : scope-expected : $* <<EOI 2>>EOE != 0 if { cmd } else cmd EOI testscript:5:1: error: expected scope after 'else' EOE : after-else : $* <<EOI 2>>EOE != 0 if false { cmd } else { cmd } else { cmd } EOI testscript:9:1: error: 'else' after 'else' EOE } : nested : { : take : $* -s <<EOI >>EOO if true { cmd1 if false { cmd } elif false { if true { cmd } } else { cmd2 } cmd3 } EOI { ? true { { cmd1 } ? false ? false { { cmd2 } } { cmd3 } } } EOO : skip : $* -s <<EOI >>EOO if false { cmd1 if false { cmd } elif false { if true { cmd } } else { cmd2 } cmd3 } else { cmd } EOI { ? false { { cmd } } } EOO } : demote : { : group : Chain remains a group : $* -s <<EOI >>EOO if false { cmd } elif true { cmd1 cmd2 } else { cmd } EOI { ? false ? true { { cmd1 } { cmd2 } } } EOO : test : Chain demoted to test : $* -s <<EOI >>EOO if false { cmd } elif true { cmd1 } else { cmd } EOI { ? false ? true { cmd1 } } EOO } : line-index : Make sure command line index spans setup/if/teardown : $* -s -l <<EOI >>EOO +setup # 1 if false one # 2 { cmd } elif false two # 3 { cmd } elif true # 4 { cmd1 } elif false # 5 { cmd } else { cmd } if false one # 6 { cmd } elif false two # 7 { cmd } else { cmd2 } -tdown # 8 EOI { +setup # 1 ? false one # 2 ? false two # 3 ? true # 4 { cmd1 # 0 } ? false one # 6 ? false two # 7 { cmd2 # 0 } -tdown # 8 } EOO : scope-comman-if : $* -s <<EOI >>EOO if true { cmd } if true cmd1 cmd2 end EOI { ? true { cmd } { ? true cmd1 cmd2 } } EOO : shared-id-desc : $* -s -i <<EOI >>EOO : test summary : if false { cmd } else { cmd1 } EOI { ? false : sm:test summary { # 3 cmd1 } } EOO