#!/bin/bash

# For Jenkins, we need to keep track of the exit code returned from each tc run;
# if it's ever non-zero (ie, a failure), must return that value when this script exits
#
STATUS=0

for DIR in `ls | grep ^TC_ | sort`; do 
  echo "**" | tee reports/$DIR.txt
  echo "** TC Group: $DIR" | tee -a reports/$DIR.txt
  echo "** Date    : "`date` | tee -a reports/$DIR.txt
  echo "** By      : "`who | cut -d " " -f 1` | tee -a reports/$DIR.txt
  echo "**" | tee -a reports/$DIR.txt
  echo "" >> reports/$DIR.txt
  echo "-- Description --" >> reports/$DIR.txt
  cat $DIR/Description  >> reports/$DIR.txt
  echo -- Positive Cases -- >> reports/$DIR.txt
  grep -h "^# $DIR.*POS " $DIR/[0-9]* | cut -d ' ' -f 2- | sed -e 's/ /  	/' >> reports/$DIR.txt
  echo >> reports/$DIR.txt
  echo -- Negative Cases -- >> reports/$DIR.txt
  grep -h "^# $DIR.*NEG " $DIR/[0-9]* | cut -d ' ' -f 2- | sed -e 's/ /	/' >> reports/$DIR.txt


  echo "" >> reports/$DIR.txt
  echo "-- Results" | tee -a reports/$DIR.txt
  echo "" | tee -a reports/$DIR.txt

  bash ./tc $DIR | tee -a reports/$DIR.txt
  
  if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
      STATUS=1
  fi
done


exit $STATUS


