NAME=r2 --
FILE=bins/elf/bomb
CMDS=r2 -s main -qcs bins/elf/bomb
EXPECT=<<EOF
0x400da0
EOF
RUN

NAME=seek undo/redo
FILE=-
CMDS=<<EOF
wx 01
s 1
s-
s+
pb 8
EOF
EXPECT=<<EOF
00000000
EOF
RUN

NAME=seek undo/redo
FILE=-
CMDS=wx 01; s 1; s-; s+; pb 8
EXPECT=<<EOF
00000000
EOF
RUN

NAME=radare2 -V
FILE=-
CMDS=!!radare2 -V~r_anal?
EXPECT=<<EOF
1
EOF
RUN

NAME=radare2 -h
FILE=-
CMDS=!!radare2 -h~Usage?
EXPECT=<<EOF
1
EOF
RUN

NAME=radare2 -hh
FILE=-
CMDS=!!radare2 -hh~R2_USER_PLUGINS?
EXPECT=<<EOF
1
EOF
RUN

NAME=radare2 -L
FILE=-
CMDS=!!radare2 -L~default?
EXPECT=<<EOF
1
EOF
RUN

NAME=r2 shortcut
FILE=-
CMDS=<<EOF
?q `!!r2 -h~Usage?`
?+ ?vi $?
?! ?e `!!r2.bat -h~Usage?`
EOF
EXPECT=<<EOF
1
EOF
RUN

NAME=no-nl-at-eof script
FILE=-
CMDS=!radare2 -i scripts/no-nl-at-eof.r2 -NQ -
EXPECT=<<EOF
1
EOF
EXPECT_ERR=<<EOF
EOF
RUN

NAME=radare2 -i -Q with missing script
FILE=-
CMDS=<<EOF
# Should not hang
!radare2 -i script/missing.r2 -NQ -
EOF
EXPECT=
EXPECT_ERR=<<EOF
ERROR: Script 'script/missing.r2' not found
EOF
RUN

NAME=radare2 empty -i
FILE=-
CMDS=!radare2 -i "" -
EXPECT_ERR=<<EOF
ERROR: Cannot open empty script path
EOF
RUN

NAME=radare2 empty -I
FILE=-
CMDS=!radare2 -I "" -
EXPECT_ERR=<<EOF
ERROR: Cannot open empty script path
EOF
RUN

NAME=radare2 empty -R
FILE=-
CMDS=!radare2 -R ""
EXPECT_ERR=<<EOF
ERROR: Missing file to open
EOF
RUN

NAME=radare2 empty -P
FILE=-
CMDS=!radare2 -P ""
EXPECT_ERR=<<EOF
ERROR: Cannot open empty rapatch path
EOF
RUN

NAME=radare2 aaa
FILE=malloc://123
ARGS=-a x86
CMDS=<<EOF
-A
?ee --
aaa
?ee --
r2 -e scr.color=0 -a x86 -qA malloc://123
EOF
EXPECT_ERR=<<EOF
INFO: Analyze all flags starting with sym. and entry0 (aa)
INFO: Analyze imports (af@@@i)
INFO: Analyze symbols (af@@@s)
INFO: Analyze all functions arguments/locals (afva@@@F)
INFO: Analyze function calls (aac)
INFO: find and analyze function preludes (aap)
INFO: Analyze len bytes of instructions for references (aar)
INFO: Finding and parsing C++ vtables (avrr)
INFO: Analyzing methods (af @@ method.*)
INFO: Recovering local variables (afva@@@F)
INFO: Type matching analysis for all functions (aaft)
INFO: Propagate noreturn information (aanr)
INFO: Use -AA or aaaa to perform additional experimental analysis
--
INFO: Analyze all flags starting with sym. and entry0 (aa)
INFO: Analyze imports (af@@@i)
INFO: Analyze symbols (af@@@s)
INFO: Analyze all functions arguments/locals (afva@@@F)
INFO: Analyze function calls (aac)
INFO: find and analyze function preludes (aap)
INFO: Analyze len bytes of instructions for references (aar)
INFO: Finding and parsing C++ vtables (avrr)
INFO: Analyzing methods (af @@ method.*)
INFO: Recovering local variables (afva@@@F)
INFO: Type matching analysis for all functions (aaft)
INFO: Propagate noreturn information (aanr)
INFO: Use -AA or aaaa to perform additional experimental analysis
--
INFO: Analyze all flags starting with sym. and entry0 (aa)
INFO: Analyze imports (af@@@i)
INFO: Analyze symbols (af@@@s)
INFO: Analyze all functions arguments/locals (afva@@@F)
INFO: Analyze function calls (aac)
INFO: find and analyze function preludes (aap)
INFO: Analyze len bytes of instructions for references (aar)
INFO: Finding and parsing C++ vtables (avrr)
INFO: Analyzing methods (af @@ method.*)
INFO: Recovering local variables (afva@@@F)
INFO: Type matching analysis for all functions (aaft)
INFO: Propagate noreturn information (aanr)
INFO: Use -AA or aaaa to perform additional experimental analysis
EOF
EXPECT=
RUN
