#!/usr/bin/env bash set -e setglobal count_only_flag = ''"" if test $1 = "-c" { setglobal count_only_flag = '1' shift } setglobal extended_syntax_flag = ''"" if test $1 = "-x" { setglobal extended_syntax_flag = '"-x'" shift } trap "kill 0; exit 1" int setglobal count = '0' for filename in [@Argv] { let count+="$[bats-exec-test -c $filename]" } if test -n $count_only_flag { echo $count exit } echo "1..$count" setglobal status = '0' setglobal offset = '0' for filename in [@Argv] { setglobal index = '0' do { env IFS= read -r # 1..n while env IFS= read -r line { match $line { with "begin "* let index+=1 echo $(line/ $index / $(($offset + $index)) ) with "ok "* | "not ok "* test -n $extended_syntax_flag || let index+=1 echo $(line/ $index / $(($offset + $index)) ) test $(line:0:6) != "not ok" || setglobal status = '1' with * echo $line } } } < <( bats-exec-test $extended_syntax_flag "$filename" ) setglobal offset = $shExpr('$offset + $index') } exit "$status"