#!/usr/bin/env bash
set -e

count_only=""
if [ "$1" = "-c" ]; then
  count_only=1
  shift
fi

trap "kill 0; exit 1" int

count=0
for filename in "$@"; do
  count=$(($count + $(bats-exec-test -c "$filename")))
done

if [ -n "$count_only" ]; then
  echo "$count"
  exit
fi

echo "1..$count"
status=0
offset=0
for filename in "$@"; do
  index=0
  {
    IFS= read -r # 1..n
    while IFS= read -r line; do
      case "$line" in
      "ok "* | "not ok "* )
        index=$(($index + 1))
        echo "${line/ $index / $(($offset + $index)) }"
        [ "${line:0:6}" != "not ok" ] || status=1
        ;;
      * )
        echo "$line"
        ;;
      esac
    done
  } < <( bats-exec-test "$filename" )
  offset=$(($offset + $index))
done

exit "$status"