NAME=Print the parser plugins
FILE==
CMDS=Lp
EXPECT=<<EOF
6502.pseudo
arm.pseudo
att2intel
avr.pseudo
chip8.pseudo
tms320.pseudo
dalvik.pseudo
m68k.pseudo
mips.pseudo
ppc.pseudo
v850.pseudo
wasm.pseudo
x86.pseudo
sh.pseudo
riscv.pseudo
z80.pseudo
EOF
RUN

NAME=Print the parser plugins in JSON
FILE==
CMDS=Lpj
EXPECT=<<EOF
[{"name":"6502.pseudo"},{"name":"arm.pseudo"},{"name":"att2intel"},{"name":"avr.pseudo"},{"name":"chip8.pseudo"},{"name":"tms320.pseudo"},{"name":"dalvik.pseudo"},{"name":"m68k.pseudo"},{"name":"mips.pseudo"},{"name":"ppc.pseudo"},{"name":"v850.pseudo"},{"name":"wasm.pseudo"},{"name":"x86.pseudo"},{"name":"sh.pseudo"},{"name":"riscv.pseudo"},{"name":"z80.pseudo"}]
EOF
RUN

NAME=Print the core plugins
FILE==
CMDS=Lc
EXPECT=<<EOF
java: Suite of java commands, type `java` for more info (Made by deroad, v1.0, LGPL-3.0-only)
dex: Suite of dex commands, type `dex` for more info (Made by deroad, v1.0, LGPL-3.0-only)
EOF
RUN

NAME=Print the core plugins in JSON
FILE==
CMDS=Lcj
EXPECT=<<EOF
[{"name":"java","description":"Suite of java commands, type `java` for more info","author":"deroad","version":"1.0","license":"LGPL-3.0-only"},{"name":"dex","description":"Suite of dex commands, type `dex` for more info","author":"deroad","version":"1.0","license":"LGPL-3.0-only"}]
EOF
RUN

NAME=Print the io plugins
FILE==
BROKEN=1
CMDS=Lo
EXPECT=<<EOF
rw_  ar       Open ar/lib files (LGPL3) ar://,lib://
rw_  fd       Local process filedescriptor IO (MIT) fd://
rw_  bfdbg    Attach to brainfuck Debugger instance (LGPL3) bfdbg://
rwd  bochs    Attach to a BOCHS debugger instance (LGPL3) bochs://
r_d  debug    Attach to native debugger instance (LGPL3) dbg://,pidof://,waitfor:// v0.2.0 pancake
rw_  default  Open local files (LGPL3) file://,nocache://
rwd  gdb      Attach to gdbserver instance (LGPL3) gdb://
rw_  gzip     Read/write gzipped files (LGPL3) gzip://
rw_  http     Make http get requests (LGPL3) http://
rw_  ihex     Open intel HEX file (LGPL) ihex://
r__  mach     mach debug io (unsupported in this platform) (LGPL)
rw_  malloc   Memory allocation plugin (LGPL3) malloc://,hex://
rw_  null     Null plugin (LGPL3) null://
rw_  procpid  Open /proc/[pid]/mem io (LGPL3) procpid://
rwd  ptrace   Ptrace and /proc/pid/mem (if available) io plugin (LGPL3) ptrace://,attach://
rwd  qnx      Attach to QNX pdebug instance (LGPL3) qnx://
rw_  rzpipe   rzpipe io plugin (MIT) rzpipe://
rw_  rzweb    rzweb io client plugin (LGPL3) rzweb://
rw_  rap      Remote binary protocol plugin (MIT) rap://,raps://
rw_  self     Read memory from self (LGPL3) self://
rw_  shm      Shared memory resources plugin (MIT) shm://
rw_  sparse   Sparse buffer allocation plugin (LGPL3) sparse://
rw_  tcp      Load files via TCP (listen or connect) (LGPL3) tcp://
rwd  winkd    Attach to a KD debugger (LGPL3) winkd://
rwd  winedbg  Wine-dbg io and debug.io plugin (MIT) winedbg://
rw_  zip      Open zip files (BSD) zip://,apk://,ipa://,jar://,zipall://,apkall://,ipaall://,jarall://
EOF
RUN

NAME=Print the io plugins in JSON
FILE==
BROKEN=1
CMDS=Loj
EXPECT=<<EOF
[{"permissions":"rw_","name":"ar","description":"Open ar/lib files","license":"LGPL3","uris":["ar://","lib://"]},{"permissions":"rw_","name":"fd","description":"Local process filedescriptor IO","license":"MIT","uris":["fd://"]},{"permissions":"rw_","name":"bfdbg","description":"Attach to brainfuck Debugger instance","license":"LGPL3","uris":["bfdbg://"]},{"permissions":"rwd","name":"bochs","description":"Attach to a BOCHS debugger instance","license":"LGPL3","uris":["bochs://"]},{"permissions":"r_d","name":"debug","description":"Attach to native debugger instance","license":"LGPL3","uris":["dbg://","pidof://","waitfor://"],"version":"0.2.0","author":"pancake"},{"permissions":"rw_","name":"default","description":"Open local files","license":"LGPL3","uris":["file://","nocache://"]},{"permissions":"rwd","name":"gdb","description":"Attach to gdbserver instance","license":"LGPL3","uris":["gdb://"]},{"permissions":"rw_","name":"gzip","description":"Read/write gzipped files","license":"LGPL3","uris":["gzip://"]},{"permissions":"rw_","name":"http","description":"Make http get requests","license":"LGPL3","uris":["http://"]},{"permissions":"rw_","name":"ihex","description":"Open intel HEX file","license":"LGPL","uris":["ihex://"]},{"permissions":"r__","name":"mach","description":"mach debug io (unsupported in this platform)","license":"LGPL"},{"permissions":"rw_","name":"malloc","description":"Memory allocation plugin","license":"LGPL3","uris":["malloc://","hex://"]},{"permissions":"rw_","name":"null","description":"Null plugin","license":"LGPL3","uris":["null://"]},{"permissions":"rw_","name":"procpid","description":"Open /proc/[pid]/mem io","license":"LGPL3","uris":["procpid://"]},{"permissions":"rwd","name":"ptrace","description":"Ptrace and /proc/pid/mem (if available) io plugin","license":"LGPL3","uris":["ptrace://","attach://"]},{"permissions":"rwd","name":"qnx","description":"Attach to QNX pdebug instance","license":"LGPL3","uris":["qnx://"]},{"permissions":"rw_","name":"rzpipe","description":"rzpipe io plugin","license":"MIT","uris":["rzpipe://"]},{"permissions":"rw_","name":"rzweb","description":"rzweb io client plugin","license":"LGPL3","uris":["rzweb://"]},{"permissions":"rw_","name":"rap","description":"Remote binary protocol plugin","license":"MIT","uris":["rap://","raps://"]},{"permissions":"rw_","name":"self","description":"Read memory from self","license":"LGPL3","uris":["self://"]},{"permissions":"rw_","name":"shm","description":"Shared memory resources plugin","license":"MIT","uris":["shm://"]},{"permissions":"rw_","name":"sparse","description":"Sparse buffer allocation plugin","license":"LGPL3","uris":["sparse://"]},{"permissions":"rw_","name":"tcp","description":"Load files via TCP (listen or connect)","license":"LGPL3","uris":["tcp://"]},{"permissions":"rwd","name":"winkd","description":"Attach to a KD debugger","license":"LGPL3","uris":["winkd://"]},{"permissions":"rwd","name":"winedbg","description":"Wine-dbg io and debug.io plugin","license":"MIT","uris":["winedbg://"]},{"permissions":"rw_","name":"zip","description":"Open zip files","license":"BSD","uris":["zip://","apk://","ipa://","jar://","zipall://","apkall://","ipaall://","jarall://"]}]
EOF
RUN

NAME=Print the bin plugins
FILE==
CMDS=Li
EXPECT=<<EOF
bin  any         Dummy format rz_bin plugin (LGPL3)  
bin  art         Android Runtime (LGPL3)  
bin  avr         ATmel AVR MCUs (LGPL3)  
bin  bf          brainfuck (LGPL3)  
bin  bflt        bFLT uClinux executable (LGPL3)  
bin  bios        BIOS bin plugin (LGPL)  
bin  bootimg     Android Boot Image (LGPL3)  
bin  cgc         CGC format rz_bin plugin (LGPL3)  
bin  coff        COFF format rz_bin plugin (LGPL3)  
bin  dex         dex bin plugin (LGPL3)  
bin  dmp64       Windows Crash Dump x64 rz_bin plugin (LGPL3)  
bin  dol         Nintendo Dolphin binary format (BSD)  
bin  dyldcache   dyldcache bin plugin (LGPL3)  
bin  elf         ELF format plugin (LGPL3)  
bin  elf64       elf64 bin plugin (LGPL3)  
bin  java        java bin plugin (LGPL3)  
bin  le          LE/LX format plugin (LGPL3)  GustavoLCR
bin  luac        LUA Compiled File (LGPL3)  
bin  mach0       mach0 bin plugin (LGPL3)  
bin  mach064     mach064 bin plugin (LGPL3)  
bin  mbn         MBN/SBL bootloader things (LGPL3)  
bin  mdmp        Windows MiniDump plugin (LGPL3)  
bin  menuet      Menuet/KolibriOS bin plugin (LGPL3)  
bin  mz          MZ bin plugin (MIT)  
bin  ne          NE format plugin (LGPL3)  GustavoLCR
bin  nes         NES (MIT)  
bin  nin3ds      Nintendo 3DS Firmware plugin (LGPL3)  
bin  ninds       Nintendo DS plugin (LGPL3)  
bin  ningb       Nintendo Gameboy plugin (LGPL3)  
bin  ningba      Nintendo Gameboy Advance plugin (LGPL3)  
bin  nro         Nintendo Switch NRO0 binaries (MIT)  
bin  nso         Nintendo Switch NSO0 binaries (MIT)  
bin  omf         omf bin plugin (LGPL3)  
bin  qnx         QNX executable file support (LGPL3)  deepakchethan
bin  p9          Plan9 bin plugin (LGPL3)  
bin  pe          PE bin plugin (LGPL3)  
bin  pe64        PE64 (PE32+) bin plugin (LGPL3)  
bin  pebble      Pebble Watch App (LGPL)  
bin  prg         C64 PRG (LGPL3)  
bin  psxexe      Sony PlayStation 1 Executable (LGPL3)  
bin  pyc         Python byte-compiled file plugin (LGPL3)  
bin  sfc         Super NES / Super Famicom ROM file (LGPL3)  
bin  smd         SEGA Genesis/Megadrive (LGPL3)  
bin  sms         SEGA MasterSystem/GameGear (LGPL3)  
bin  spc700      SNES-SPC700 Sound File Data (LGPL3)  
bin  symbols     Apple Symbols file (MIT)  
bin  te          TE bin plugin (LGPL3)  
bin  vsf         VICE Snapshot File (LGPL3)  
bin  wasm        WebAssembly bin plugin (MIT)  
bin  xbe         Microsoft Xbox XBE plugin (LGPL3)  
bin  kernelcache kernelcache bin plugin (LGPL3)  
bin  z64         Nintendo 64 Bin-BE plugin (LGPL3)  
bin  zimg        zimg format bin plugin (LGPL3)  
xtr  .fatmach0   fat mach0 bin extractor plugin (LGPL3)
xtr  .sep64      64-bit SEP bin extractor plugin (LGPL3)
EOF
RUN

NAME=Print the bin plugins in quiet mode
FILE==
CMDS=Liq
EXPECT=<<EOF
any
art
avr
bf
bflt
bios
bootimg
cgc
coff
dex
dmp64
dol
dyldcache
elf
elf64
java
le
luac
mach0
mach064
mbn
mdmp
menuet
mz
ne
nes
nin3ds
ninds
ningb
ningba
nro
nso
omf
qnx
p9
pe
pe64
pebble
prg
psxexe
pyc
sfc
smd
sms
spc700
symbols
te
vsf
wasm
xbe
kernelcache
z64
zimg
xtr.fatmach0
xtr.sep64
EOF
RUN

NAME=Print the bin plugins in JSON
FILE==
CMDS=Lij
EXPECT=<<EOF
[{"name":"any","description":"Dummy format rz_bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"art","description":"Android Runtime","license":"LGPL3","author":"LGPL3"},{"name":"avr","description":"ATmel AVR MCUs","license":"LGPL3","author":"LGPL3"},{"name":"bf","description":"brainfuck","license":"LGPL3","author":"LGPL3"},{"name":"bflt","description":"bFLT uClinux executable","license":"LGPL3","author":"LGPL3"},{"name":"bios","description":"BIOS bin plugin","license":"LGPL","author":"LGPL"},{"name":"bootimg","description":"Android Boot Image","license":"LGPL3","author":"LGPL3"},{"name":"cgc","description":"CGC format rz_bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"coff","description":"COFF format rz_bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"dex","description":"dex bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"dmp64","description":"Windows Crash Dump x64 rz_bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"dol","description":"Nintendo Dolphin binary format","license":"BSD","author":"BSD"},{"name":"dyldcache","description":"dyldcache bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"elf","description":"ELF format plugin","license":"LGPL3","author":"LGPL3"},{"name":"elf64","description":"elf64 bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"java","description":"java bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"le","description":"LE/LX format plugin","license":"LGPL3","author":"LGPL3"},{"name":"luac","description":"LUA Compiled File","license":"LGPL3","author":"LGPL3"},{"name":"mach0","description":"mach0 bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"mach064","description":"mach064 bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"mbn","description":"MBN/SBL bootloader things","license":"LGPL3","author":"LGPL3"},{"name":"mdmp","description":"Windows MiniDump plugin","license":"LGPL3","author":"LGPL3"},{"name":"menuet","description":"Menuet/KolibriOS bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"mz","description":"MZ bin plugin","license":"MIT","author":"MIT"},{"name":"ne","description":"NE format plugin","license":"LGPL3","author":"LGPL3"},{"name":"nes","description":"NES","license":"MIT","author":"MIT"},{"name":"nin3ds","description":"Nintendo 3DS Firmware plugin","license":"LGPL3","author":"LGPL3"},{"name":"ninds","description":"Nintendo DS plugin","license":"LGPL3","author":"LGPL3"},{"name":"ningb","description":"Nintendo Gameboy plugin","license":"LGPL3","author":"LGPL3"},{"name":"ningba","description":"Nintendo Gameboy Advance plugin","license":"LGPL3","author":"LGPL3"},{"name":"nro","description":"Nintendo Switch NRO0 binaries","license":"MIT","author":"MIT"},{"name":"nso","description":"Nintendo Switch NSO0 binaries","license":"MIT","author":"MIT"},{"name":"omf","description":"omf bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"qnx","description":"QNX executable file support","license":"LGPL3","author":"LGPL3"},{"name":"p9","description":"Plan9 bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"pe","description":"PE bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"pe64","description":"PE64 (PE32+) bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"pebble","description":"Pebble Watch App","license":"LGPL","author":"LGPL"},{"name":"prg","description":"C64 PRG","license":"LGPL3","author":"LGPL3"},{"name":"psxexe","description":"Sony PlayStation 1 Executable","license":"LGPL3","author":"LGPL3"},{"name":"pyc","description":"Python byte-compiled file plugin","license":"LGPL3","author":"LGPL3"},{"name":"sfc","description":"Super NES / Super Famicom ROM file","license":"LGPL3","author":"LGPL3"},{"name":"smd","description":"SEGA Genesis/Megadrive","license":"LGPL3","author":"LGPL3"},{"name":"sms","description":"SEGA MasterSystem/GameGear","license":"LGPL3","author":"LGPL3"},{"name":"spc700","description":"SNES-SPC700 Sound File Data","license":"LGPL3","author":"LGPL3"},{"name":"symbols","description":"Apple Symbols file","license":"MIT","author":"MIT"},{"name":"te","description":"TE bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"vsf","description":"VICE Snapshot File","license":"LGPL3","author":"LGPL3"},{"name":"wasm","description":"WebAssembly bin plugin","license":"MIT","author":"MIT"},{"name":"xbe","description":"Microsoft Xbox XBE plugin","license":"LGPL3","author":"LGPL3"},{"name":"kernelcache","description":"kernelcache bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"z64","description":"Nintendo 64 Bin-BE plugin","license":"LGPL3","author":"LGPL3"},{"name":"zimg","description":"zimg format bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"xtr.fatmach0","description":"fat mach0 bin extractor plugin","license":"LGPL3"},{"name":"xtr.sep64","description":"64-bit SEP bin extractor plugin","license":"LGPL3"}]
EOF
RUN

NAME=Print the hash plugins
FILE==
CMDS=Lh
EXPECT=<<EOF
algorithm      license    author
md2            LGPL3      swedenspy
md4            LGPL3      deroad
md5            LGPL2      Alan DeKok
sha1           LGPL3      deroad
sha256         BSD-3      Aaron D. Gifford
sha384         BSD-3      Aaron D. Gifford
sha512         BSD-3      Aaron D. Gifford
sm3            LGPL2      FSF/deroad
blake3         CC0        Samuel Neves,Jack O'Connor
fletcher8      LGPL3      deroad
fletcher16     LGPL3      deroad
fletcher32     LGPL3      deroad
fletcher64     LGPL3      deroad
adler32        LGPL3      deroad
crc8smbus      LGPL3      deroad
crc8cdma2000   LGPL3      deroad
crc8darc       LGPL3      deroad
crc8dvbs2      LGPL3      deroad
crc8ebu        LGPL3      deroad
crc8icode      LGPL3      deroad
crc8itu        LGPL3      deroad
crc8maxim      LGPL3      deroad
crc8rohc       LGPL3      deroad
crc8wcdma      LGPL3      deroad
crc15can       LGPL3      deroad
crc16          LGPL3      deroad
crc16citt      LGPL3      deroad
crc16usb       LGPL3      deroad
crc16hdlc      LGPL3      deroad
crc16augccitt  LGPL3      deroad
crc16buypass   LGPL3      deroad
crc16cdma2000  LGPL3      deroad
crc16dds110    LGPL3      deroad
crc16dectr     LGPL3      deroad
crc16dectx     LGPL3      deroad
crc16dnp       LGPL3      deroad
crc16en13757   LGPL3      deroad
crc16genibus   LGPL3      deroad
crc16maxim     LGPL3      deroad
crc16mcrf4xx   LGPL3      deroad
crc16riello    LGPL3      deroad
crc16t10dif    LGPL3      deroad
crc16teledisk  LGPL3      deroad
crc16tms37157  LGPL3      deroad
crca           LGPL3      deroad
crc16kermit    LGPL3      deroad
crc16modbus    LGPL3      deroad
crc16x25       LGPL3      deroad
crc16xmodem    LGPL3      deroad
crc24          LGPL3      deroad
crc32          LGPL3      deroad
crc32ecma267   LGPL3      deroad
crc32c         LGPL3      deroad
crc32bzip2     LGPL3      deroad
crc32d         LGPL3      deroad
crc32mpeg2     LGPL3      deroad
crc32posix     LGPL3      deroad
crc32q         LGPL3      deroad
crc32jamcrc    LGPL3      deroad
crc32xfer      LGPL3      deroad
crc64          LGPL3      deroad
crc64ecma182   LGPL3      deroad
crc64we        LGPL3      deroad
crc64xz        LGPL3      deroad
crc64iso       LGPL3      deroad
xor8           LGPL3      deroad
xor16          LGPL3      deroad
xxhash32       LGPL3      deroad
ssdeep         LGPL3      deroad
parity         LGPL3      deroad
entropy        LGPL3      deroad
entropy_fract  LGPL3      deroad
EOF
RUN

NAME=Print the hash plugins in JSON
FILE==
CMDS=Lhj
EXPECT=<<EOF
[{"name":"md2","license":"LGPL3","author":"swedenspy"},{"name":"md4","license":"LGPL3","author":"deroad"},{"name":"md5","license":"LGPL2","author":"Alan DeKok"},{"name":"sha1","license":"LGPL3","author":"deroad"},{"name":"sha256","license":"BSD-3","author":"Aaron D. Gifford"},{"name":"sha384","license":"BSD-3","author":"Aaron D. Gifford"},{"name":"sha512","license":"BSD-3","author":"Aaron D. Gifford"},{"name":"sm3","license":"LGPL2","author":"FSF/deroad"},{"name":"blake3","license":"CC0","author":"Samuel Neves,Jack O'Connor"},{"name":"fletcher8","license":"LGPL3","author":"deroad"},{"name":"fletcher16","license":"LGPL3","author":"deroad"},{"name":"fletcher32","license":"LGPL3","author":"deroad"},{"name":"fletcher64","license":"LGPL3","author":"deroad"},{"name":"adler32","license":"LGPL3","author":"deroad"},{"name":"crc8smbus","license":"LGPL3","author":"deroad"},{"name":"crc8cdma2000","license":"LGPL3","author":"deroad"},{"name":"crc8darc","license":"LGPL3","author":"deroad"},{"name":"crc8dvbs2","license":"LGPL3","author":"deroad"},{"name":"crc8ebu","license":"LGPL3","author":"deroad"},{"name":"crc8icode","license":"LGPL3","author":"deroad"},{"name":"crc8itu","license":"LGPL3","author":"deroad"},{"name":"crc8maxim","license":"LGPL3","author":"deroad"},{"name":"crc8rohc","license":"LGPL3","author":"deroad"},{"name":"crc8wcdma","license":"LGPL3","author":"deroad"},{"name":"crc15can","license":"LGPL3","author":"deroad"},{"name":"crc16","license":"LGPL3","author":"deroad"},{"name":"crc16citt","license":"LGPL3","author":"deroad"},{"name":"crc16usb","license":"LGPL3","author":"deroad"},{"name":"crc16hdlc","license":"LGPL3","author":"deroad"},{"name":"crc16augccitt","license":"LGPL3","author":"deroad"},{"name":"crc16buypass","license":"LGPL3","author":"deroad"},{"name":"crc16cdma2000","license":"LGPL3","author":"deroad"},{"name":"crc16dds110","license":"LGPL3","author":"deroad"},{"name":"crc16dectr","license":"LGPL3","author":"deroad"},{"name":"crc16dectx","license":"LGPL3","author":"deroad"},{"name":"crc16dnp","license":"LGPL3","author":"deroad"},{"name":"crc16en13757","license":"LGPL3","author":"deroad"},{"name":"crc16genibus","license":"LGPL3","author":"deroad"},{"name":"crc16maxim","license":"LGPL3","author":"deroad"},{"name":"crc16mcrf4xx","license":"LGPL3","author":"deroad"},{"name":"crc16riello","license":"LGPL3","author":"deroad"},{"name":"crc16t10dif","license":"LGPL3","author":"deroad"},{"name":"crc16teledisk","license":"LGPL3","author":"deroad"},{"name":"crc16tms37157","license":"LGPL3","author":"deroad"},{"name":"crca","license":"LGPL3","author":"deroad"},{"name":"crc16kermit","license":"LGPL3","author":"deroad"},{"name":"crc16modbus","license":"LGPL3","author":"deroad"},{"name":"crc16x25","license":"LGPL3","author":"deroad"},{"name":"crc16xmodem","license":"LGPL3","author":"deroad"},{"name":"crc24","license":"LGPL3","author":"deroad"},{"name":"crc32","license":"LGPL3","author":"deroad"},{"name":"crc32ecma267","license":"LGPL3","author":"deroad"},{"name":"crc32c","license":"LGPL3","author":"deroad"},{"name":"crc32bzip2","license":"LGPL3","author":"deroad"},{"name":"crc32d","license":"LGPL3","author":"deroad"},{"name":"crc32mpeg2","license":"LGPL3","author":"deroad"},{"name":"crc32posix","license":"LGPL3","author":"deroad"},{"name":"crc32q","license":"LGPL3","author":"deroad"},{"name":"crc32jamcrc","license":"LGPL3","author":"deroad"},{"name":"crc32xfer","license":"LGPL3","author":"deroad"},{"name":"crc64","license":"LGPL3","author":"deroad"},{"name":"crc64ecma182","license":"LGPL3","author":"deroad"},{"name":"crc64we","license":"LGPL3","author":"deroad"},{"name":"crc64xz","license":"LGPL3","author":"deroad"},{"name":"crc64iso","license":"LGPL3","author":"deroad"},{"name":"xor8","license":"LGPL3","author":"deroad"},{"name":"xor16","license":"LGPL3","author":"deroad"},{"name":"xxhash32","license":"LGPL3","author":"deroad"},{"name":"ssdeep","license":"LGPL3","author":"deroad"},{"name":"parity","license":"LGPL3","author":"deroad"},{"name":"entropy","license":"LGPL3","author":"deroad"},{"name":"entropy_fract","license":"LGPL3","author":"deroad"}]
EOF
RUN

NAME=Print the hash plugins in JSON
FILE==
CMDS=Lhq
EXPECT=<<EOF
md2 md4 md5 sha1 sha256 sha384 sha512 sm3 blake3 fletcher8 fletcher16 fletcher32 fletcher64 adler32 crc8smbus crc8cdma2000 crc8darc crc8dvbs2 crc8ebu crc8icode crc8itu crc8maxim crc8rohc crc8wcdma crc15can crc16 crc16citt crc16usb crc16hdlc crc16augccitt crc16buypass crc16cdma2000 crc16dds110 crc16dectr crc16dectx crc16dnp crc16en13757 crc16genibus crc16maxim crc16mcrf4xx crc16riello crc16t10dif crc16teledisk crc16tms37157 crca crc16kermit crc16modbus crc16x25 crc16xmodem crc24 crc32 crc32ecma267 crc32c crc32bzip2 crc32d crc32mpeg2 crc32posix crc32q crc32jamcrc crc32xfer crc64 crc64ecma182 crc64we crc64xz crc64iso xor8 xor16 xxhash32 ssdeep parity entropy entropy_fract 
EOF
RUN

NAME=Set the debug backend
FILE==
CMDS=<<EOF
Ld null
Ld~!windbg,native
EOF
EXPECT=<<EOF
0  ---  bf       LGPL3
1  ---  bochs    LGPL3
2  ---  dmp      LGPL3
3  ---  gdb      LGPL3
4  ---  io       MIT
5  dbg  null     MIT
6  ---  rap      LGPL3
7  ---  winkd    LGPL3
8  ---  qnx      LGPL3
EOF
RUN

NAME=Print the debug plugins
FILE==
CMDS=Ld~!windbg,native
EXPECT=<<EOF
0  ---  bf       LGPL3
1  ---  bochs    LGPL3
2  ---  dmp      LGPL3
3  ---  gdb      LGPL3
4  ---  io       MIT
5  ---  null     MIT
6  ---  rap      LGPL3
7  ---  winkd    LGPL3
8  ---  qnx      LGPL3
EOF
RUN

NAME=Print the debug plugins in JSON
FILE==
CMDS=<<EOF
Ldj~{[0]}
Ldj~{[1]}
Ldj~{[2]}
Ldj~{[3]}
Ldj~{[4]}
Ldj~{[5]}
Ldj~{[6]}
Ldj~{[7]}
Ldj~{[8]}
EOF
EXPECT=<<EOF
{"arch":"bf","name":"bf","license":"LGPL3"}
{"arch":"x86","name":"bochs","license":"LGPL3"}
{"arch":"x86,arm","name":"dmp","license":"LGPL3"}
{"arch":"x86,arm,sh,mips,avr,lm32,v850,ba2,tricore","name":"gdb","license":"LGPL3"}
{"arch":"any","name":"io","license":"MIT"}
{"arch":"any","name":"null","license":"MIT"}
{"arch":"any","name":"rap","license":"LGPL3"}
{"arch":"x86","name":"winkd","license":"LGPL3"}
{"arch":"x86,arm","name":"qnx","license":"LGPL3"}
EOF
RUN

NAME=Print the asm/analysis plugins
FILE==
CMDS=La
EXPECT=<<EOF
_dAe  8 16       6502        LGPL3   6502/NES/C64/Tamagotchi/T-1000 CPU
adAe  8          8051        PD      8051 Intel CPU
_dA_  32         amd29k      LGPL3   AMD 29k RISC CPU (by deroad)
a___  16 32 64   arm.as      LGPL3   as ARM Assembler (use RZ_ARM32_AS and RZ_ARM64_AS environment) (by pancake)
adAe  16 32 64   arm         BSD     Capstone ARM disassembler
adAe  8 16       avr         LGPL3   AVR Atmel
adA_  16 32 64   bf          LGPL3   Brainfuck (by pancake, nibble) v4.0.0
_dA_  32         chip8       LGPL3   Chip8 disassembler
_dA_  16 32 64   cil         LGPL3   .NET Common Intermediate Language
_dA_  16         cr16        LGPL3   cr16 disassembly plugin
adA_  32 64      dalvik      LGPL3   AndroidVM Dalvik
ad__  16         dcpu16      PD      Mojang's DCPU-16
_dA_  32 64      ebc         LGPL3   EFI Bytecode (by Fedor Sakharov)
adAe  16         gb          LGPL3   GameBoy(TM) (z80-like) (by condret)
_dAe  16         h8300       LGPL3   H8/300 disassembly plugin
_dA_  32         hexagon     LGPL3   Qualcomm Hexagon (QDSP6) V6 (by Rot127)
_dA_  4          i4004       LGPL3   Intel 4004 microprocessor
_dA_  8          i8080       BSD     Intel 8080 CPU
adA_  32         java        LGPL-3  Java bytecode disassembler (by deroad)
_d__  8          lh5801      LGPL3   SHARP LH5801 disassembler
_d__  32         lm32        BSD     disassembly plugin for Lattice Micro 32 ISA (by Felix Held)
adA_  8          luac        LGPL3   luac disassemble plugin
_dA_  32         m68k        BSD     Capstone M68K disassembler
_dA_  8 32       m680x       BSD     Capstone M680X Disassembler
_dA_  32         malbolge    LGPL3   Malbolge Ternary VM (by condret)
_dA_  32         mcore       LGPL3   Motorola MCORE disassembler
_d__  16         mcs96       LGPL3   condrets car
adAe  16 32 64   mips        BSD     Capstone MIPS disassembler
_dA_  16         msp430      LGPL3   msp430 disassembly plugin
adA_  16 32 64   null        MIT     no disassemble (by pancake) v1.0.0
_dA_  32         or1k        LGPL3   OpenRISC 1000
_dAe  8          pic         LGPL3   PIC disassembler
a___  32 64      ppc.as      LGPL3   as PPC Assembler (use RZ_PPC_AS environment) (by eagleoflqj)
_dAe  32 64      ppc         BSD     Capstone PowerPC disassembler (by pancake)
_dA_  32         propeller   LGPL3   propeller disassembly plugin
_dA_  8 16       pyc         LGPL3   PYC disassemble plugin
adA_  32         rl78        LGPL3   Renesas RL78 disassembler (by Bastian Engel)
_dA_  32         rsp         LGPL3   Reality Signal Processor
_dA_  32         rx          LGPL3   Renesas RX Family disassembler (by Heersin)
adAe  32         sh          LGPL3   SuperH-4 CPU (by DMaroo)
_dA_  8 16       snes        LGPL3   SuperNES CPU
_dA_  32 64      sparc       BSD     Capstone SPARC disassembler
_dA_  16         spc700      LGPL3   spc700, snes' sound-chip
_dA_  32 64      sysz        BSD     SystemZ CPU disassembler
_dA_  32         tms320      LGPLv3  TMS320 DSP family (c54x,c55x,c55x+,c64x)
_d__  32         tms320c64x  BSD     Capstone TMS320c64x disassembler
_dAe  32         v810        LGPL3   v810 disassembly plugin (by pancake)
_dAe  32         v850        LGPL3   v850 disassembly plugin
adA_  32         wasm        MIT     WebAssembly (by cgvwzq) v0.1.0
a___  16 32 64   x86.as      LGPL3   Intel X86 GNU Assembler (Use RZ_X86_AS env)
_dAe  16 32 64   x86         BSD     Capstone X86 disassembler
a___  16 32 64   x86.nasm    LGPL3   X86 nasm assembler
a___  16 32 64   x86.nz      LGPL3   x86 handmade assembler
_dA_  16         xap         PD      XAP4 RISC (CSR)
_dA_  32         xcore       BSD     Capstone XCore disassembler (by pancake)
_dAe  32 64      riscv.cs    BSD     Capstone RISCV disassembler
_dA_  32         tricore     BSD     Siemens TriCore CPU (by billow)
_dA_  16 32      arc         GPL3    Argonaut RISC Core
_dA_  32         cris        GPL3    Axis Communications 32-bit embedded processor (by pancake)
_d__  32         hppa        GPL3    HP PA-RISC
_d__  32         lanai       GPL3    LANAI
adAe  32 64      mips.gnu    GPL3    MIPS CPU
_dA_  32         nios2       GPL3    NIOS II Embedded Processor
_dAe  32 64      riscv       GPL3    RISC-V
_dA_  32 64      sparc.gnu   GPL3    Scalable Processor Architecture
_dA_  8 32       vax         GPL3    VAX
_dAe  32         xtensa      GPL3    XTensa CPU
adA_  8          z80         GPL3    Zilog Z80 (by condret)
EOF
RUN

NAME=Print the asm/analysis plugins in quiet mode
FILE==
CMDS=Laq
EXPECT=<<EOF
6502
8051
amd29k
arm.as
arm
avr
bf
chip8
cil
cr16
dalvik
dcpu16
ebc
gb
h8300
hexagon
i4004
i8080
java
lh5801
lm32
luac
m68k
m680x
malbolge
mcore
mcs96
mips
msp430
null
or1k
pic
ppc.as
ppc
propeller
pyc
rl78
rsp
rx
sh
snes
sparc
spc700
sysz
tms320
tms320c64x
v810
v850
wasm
x86.as
x86
x86.nasm
x86.nz
xap
xcore
riscv.cs
tricore
arc
cris
hppa
lanai
mips.gnu
nios2
riscv
sparc.gnu
vax
xtensa
z80
EOF
RUN

NAME=Print the asm/analysis plugins in JSON
FILE==
CMDS=Laj
EXPECT=<<EOF
["6502":{"bits":"8 16 ","license":"LGPL3","description":"6502/NES/C64/Tamagotchi/T-1000 CPU","features":"_d"},"8051":{"bits":"8 ","license":"PD","description":"8051 Intel CPU","features":"ad"},"amd29k":{"bits":"32 ","license":"LGPL3","description":"AMD 29k RISC CPU","features":"_d"},"arm.as":{"bits":"16 32 64 ","license":"LGPL3","description":"as ARM Assembler (use RZ_ARM32_AS and RZ_ARM64_AS environment)","features":"a_"},"arm":{"bits":"16 32 64 ","license":"BSD","description":"Capstone ARM disassembler","features":"ad"},"avr":{"bits":"8 16 ","license":"LGPL3","description":"AVR Atmel","features":"ad"},"bf":{"bits":"16 32 64 ","license":"LGPL3","description":"Brainfuck","features":"ad"},"chip8":{"bits":"32 ","license":"LGPL3","description":"Chip8 disassembler","features":"_d"},"cil":{"bits":"16 32 64 ","license":"LGPL3","description":".NET Common Intermediate Language","features":"_d"},"cr16":{"bits":"16 ","license":"LGPL3","description":"cr16 disassembly plugin","features":"_d"},"dalvik":{"bits":"32 64 ","license":"LGPL3","description":"AndroidVM Dalvik","features":"ad"},"dcpu16":{"bits":"16 ","license":"PD","description":"Mojang's DCPU-16","features":"ad"},"ebc":{"bits":"32 64 ","license":"LGPL3","description":"EFI Bytecode","features":"_d"},"gb":{"bits":"16 ","license":"LGPL3","description":"GameBoy(TM) (z80-like)","features":"ad"},"h8300":{"bits":"16 ","license":"LGPL3","description":"H8/300 disassembly plugin","features":"_d"},"hexagon":{"bits":"32 ","license":"LGPL3","description":"Qualcomm Hexagon (QDSP6) V6","features":"_d"},"i4004":{"bits":"4 ","license":"LGPL3","description":"Intel 4004 microprocessor","features":"_d"},"i8080":{"bits":"8 ","license":"BSD","description":"Intel 8080 CPU","features":"_d"},"java":{"bits":"32 ","license":"LGPL-3","description":"Java bytecode disassembler","features":"ad"},"lh5801":{"bits":"8 ","license":"LGPL3","description":"SHARP LH5801 disassembler","features":"_d"},"lm32":{"bits":"32 ","license":"BSD","description":"disassembly plugin for Lattice Micro 32 ISA","features":"_d"},"luac":{"bits":"8 ","license":"LGPL3","description":"luac disassemble plugin","features":"ad"},"m68k":{"bits":"32 ","license":"BSD","description":"Capstone M68K disassembler","features":"_d"},"m680x":{"bits":"8 32 ","license":"BSD","description":"Capstone M680X Disassembler","features":"_d"},"malbolge":{"bits":"32 ","license":"LGPL3","description":"Malbolge Ternary VM","features":"_d"},"mcore":{"bits":"32 ","license":"LGPL3","description":"Motorola MCORE disassembler","features":"_d"},"mcs96":{"bits":"16 ","license":"LGPL3","description":"condrets car","features":"_d"},"mips":{"bits":"16 32 64 ","license":"BSD","description":"Capstone MIPS disassembler","features":"ad"},"msp430":{"bits":"16 ","license":"LGPL3","description":"msp430 disassembly plugin","features":"_d"},"null":{"bits":"16 32 64 ","license":"MIT","description":"no disassemble","features":"ad"},"or1k":{"bits":"32 ","license":"LGPL3","description":"OpenRISC 1000","features":"_d"},"pic":{"bits":"8 ","license":"LGPL3","description":"PIC disassembler","features":"_d"},"ppc.as":{"bits":"32 64 ","license":"LGPL3","description":"as PPC Assembler (use RZ_PPC_AS environment)","features":"a_"},"ppc":{"bits":"32 64 ","license":"BSD","description":"Capstone PowerPC disassembler","features":"_d"},"propeller":{"bits":"32 ","license":"LGPL3","description":"propeller disassembly plugin","features":"_d"},"pyc":{"bits":"8 16 ","license":"LGPL3","description":"PYC disassemble plugin","features":"_d"},"rl78":{"bits":"32 ","license":"LGPL3","description":"Renesas RL78 disassembler","features":"ad"},"rsp":{"bits":"32 ","license":"LGPL3","description":"Reality Signal Processor","features":"_d"},"rx":{"bits":"32 ","license":"LGPL3","description":"Renesas RX Family disassembler","features":"_d"},"sh":{"bits":"32 ","license":"LGPL3","description":"SuperH-4 CPU","features":"ad"},"snes":{"bits":"8 16 ","license":"LGPL3","description":"SuperNES CPU","features":"_d"},"sparc":{"bits":"32 64 ","license":"BSD","description":"Capstone SPARC disassembler","features":"_d"},"spc700":{"bits":"16 ","license":"LGPL3","description":"spc700, snes' sound-chip","features":"_d"},"sysz":{"bits":"32 64 ","license":"BSD","description":"SystemZ CPU disassembler","features":"_d"},"tms320":{"bits":"32 ","license":"LGPLv3","description":"TMS320 DSP family (c54x,c55x,c55x+,c64x)","features":"_d"},"tms320c64x":{"bits":"32 ","license":"BSD","description":"Capstone TMS320c64x disassembler","features":"_d"},"v810":{"bits":"32 ","license":"LGPL3","description":"v810 disassembly plugin","features":"_d"},"v850":{"bits":"32 ","license":"LGPL3","description":"v850 disassembly plugin","features":"_d"},"wasm":{"bits":"32 ","license":"MIT","description":"WebAssembly","features":"ad"},"x86.as":{"bits":"16 32 64 ","license":"LGPL3","description":"Intel X86 GNU Assembler (Use RZ_X86_AS env)","features":"a_"},"x86":{"bits":"16 32 64 ","license":"BSD","description":"Capstone X86 disassembler","features":"_d"},"x86.nasm":{"bits":"16 32 64 ","license":"LGPL3","description":"X86 nasm assembler","features":"a_"},"x86.nz":{"bits":"16 32 64 ","license":"LGPL3","description":"x86 handmade assembler","features":"a_"},"xap":{"bits":"16 ","license":"PD","description":"XAP4 RISC (CSR)","features":"_d"},"xcore":{"bits":"32 ","license":"BSD","description":"Capstone XCore disassembler","features":"_d"},"riscv.cs":{"bits":"32 64 ","license":"BSD","description":"Capstone RISCV disassembler","features":"_d"},"tricore":{"bits":"32 ","license":"BSD","description":"Siemens TriCore CPU","features":"_d"},"arc":{"bits":"16 32 ","license":"GPL3","description":"Argonaut RISC Core","features":"_d"},"cris":{"bits":"32 ","license":"GPL3","description":"Axis Communications 32-bit embedded processor","features":"_d"},"hppa":{"bits":"32 ","license":"GPL3","description":"HP PA-RISC","features":"_d"},"lanai":{"bits":"32 ","license":"GPL3","description":"LANAI","features":"_d"},"mips.gnu":{"bits":"32 64 ","license":"GPL3","description":"MIPS CPU","features":"ad"},"nios2":{"bits":"32 ","license":"GPL3","description":"NIOS II Embedded Processor","features":"_d"},"riscv":{"bits":"32 64 ","license":"GPL3","description":"RISC-V","features":"_d"},"sparc.gnu":{"bits":"32 64 ","license":"GPL3","description":"Scalable Processor Architecture","features":"_d"},"vax":{"bits":"8 32 ","license":"GPL3","description":"VAX","features":"_d"},"xtensa":{"bits":"32 ","license":"GPL3","description":"XTensa CPU","features":"_d"},"z80":{"bits":"8 ","license":"GPL3","description":"Zilog Z80","features":"ad"}]
EOF
RUN

NAME=Print the lang plugins
FILE==
CMDS=<<EOF
Ll~^pipe
Ll~lib
EOF
EXPECT=<<EOF
pipe: Use #!pipe node script.js (LGPL)
lib: Load libs directly into rizin (LGPL)
EOF
RUN

NAME=Print the lang plugins in JSON
BROKEN=1
FILE==
CMDS=Llj
EXPECT=<<EOF
[{"name":"c","description":"C language extension","license":"LGPL"},{"name":"cpipe","description":"rzpipe scripting in C","license":"LGPL"},{"name":"vala","description":"Vala language extension","license":"LGPL"},{"name":"rust","description":"Rust language extension","license":"MIT"},{"name":"zig","description":"Zig language extension","license":"MIT"},{"name":"spp","description":"SPP template programs","license":"MIT"},{"name":"pipe","description":"Use #!pipe node script.js","license":"LGPL"},{"name":"lib","description":"Load libs directly into rizin","license":"LGPL"}]
EOF
RUN
