# file : libbuild2/build/script/parser+command-if.test.testscript # license : MIT; see accompanying LICENSE file : if : { : true : $* <>EOO if true foo cmd1 cmd2 end EOI ? true foo cmd1 cmd2 EOO : false : $* <>EOO if false foo cmd1 cmd2 end EOI ? false foo EOO : not-true : $* <>EOO if! true foo cmd1 cmd2 end EOI ? true foo EOO : not-false : $* <>EOO if! false foo cmd1 cmd2 end EOI ? false foo cmd1 cmd2 EOO : without-command : $* <>EOE != 0 if cmd end EOI buildfile:11:3: error: missing program EOE } : elif : { : true : $* <>EOO if false cmd1 cmd2 elif true cmd3 cmd4 end EOI ? false ? true cmd3 cmd4 EOO : false : $* <>EOO if false cmd1 cmd2 elif false cmd3 cmd4 end EOI ? false ? false EOO : not-true : $* <>EOO if false cmd1 cmd2 elif! true cmd3 cmd4 end EOI ? false ? true EOO : not-false : $* <>EOO if false cmd1 cmd2 elif! false cmd3 cmd4 end EOI ? false ? false cmd3 cmd4 EOO : without-if : $* <>EOE != 0 cmd elif true cmd end EOI buildfile:12:1: error: 'elif' without preceding 'if' EOE : not-without-if : $* <>EOE != 0 cmd elif! true cmd end EOI buildfile:12:1: error: 'elif!' without preceding 'if' EOE : after-else : $* <>EOE != 0 if false cmd else cmd elif true cmd end EOI buildfile:15:1: error: 'elif' after 'else' EOE } : else : { : true : $* <>EOO if false cmd1 cmd2 else cmd3 cmd4 end EOI ? false cmd3 cmd4 EOO : false : $* <>EOO if true cmd1 cmd2 else cmd3 cmd4 end EOI ? true cmd1 cmd2 EOO : chain : $* <>EOO if false cmd cmd elif false cmd cmd elif false cmd cmd elif true cmd1 cmd2 elif false cmd cmd else cmd cmd end EOI ? false ? false ? false ? true cmd1 cmd2 EOO : command-after : $* <>EOE != 0 if true cmd else cmd cmd end EOI buildfile:13:6: error: expected newline instead of 'cmd' EOE : without-if : $* <>EOE != 0 cmd else cmd end EOI buildfile:12:1: error: 'else' without preceding 'if' EOE : after-else : $* <>EOE != 0 if false cmd else cmd else cmd end EOI buildfile:15:1: error: 'else' after 'else' EOE } : end { : without-if : $* <>EOE != 0 cmd end EOI buildfile:12:1: error: 'end' without preceding 'if' EOE : before { : command : $* <>EOE != 0 if true cmd end cmd EOI buildfile:13:5: error: expected newline instead of 'cmd' EOE } } : nested : { : take : $* <>EOO if true cmd1 if false cmd elif false if true cmd end else cmd2 end cmd3 end EOI ? true cmd1 ? false ? false cmd2 cmd3 EOO : skip : $* <>EOO if false cmd1 if false cmd elif false if true cmd end else cmd2 end cmd3 else cmd end EOI ? false cmd EOO } : contained : { : eos : $* <>EOE != 0 if EOI buildfile:12:1: error: expected closing 'end' EOE } : line-index : $* -l <>EOO if false cmd if true cmd end cmd elif false cmd else cmd end EOI ? false # 1 ? false # 6 cmd # 8 EOO : var : $* <>EOO if true x = foo else x = bar end cmd $x EOI ? true cmd foo EOO