#!/bin/sh

# Java-klassi jaoks JUnit-testide jooksutamine.
# Ette n2htud kasutamiseks ainult ITK sisev6rgus.
# @author Jaanus Poial

# Oletame, et testitava klassi nimi on Klass (see v6ib olla mis iganes) 
# ning selle skripti nimi on Test.
# Testimiseks eeldame, et jooksvas kataloogis on 4 faili: 
#   1) Klass.java (testitava klassi l2htetekst),
#   2) KlassTest.class (JUnit-test selle klassi jaoks, 
#      nime l6pus "Test" on kohustuslik) v6i vastav KlassTest.java,
#   3) raamistik junit-4.x.jar (jar-failid, vt. www.junit.org) ning 
#   4) Test (see skript siin, k2ivitamis6igusega).
# K2ivitamiseks:
#   ./Test Klass [KlassTest [ raamistik ] ]

VFILE=test.log
LFILE=hea.log
JUNIT=junit-4.11.jar
HAMCREST=hamcrest-core-1.3.jar

# ------------ siit allapoole j22vat osa pole vaja muuta --------------
if (test $# -ge 4)
   then echo usage: $0 Klass [Test [raamistik]];exit 1
fi
if (test $# -eq 0)
   then KLASS="Answer"
   else KLASS=$1
fi
if (test $# -ge 2)
   then JTEST=$2
   else JTEST=$KLASS"Test"
fi
if (test -s $KLASS.java)
   then echo "Testime faili $KLASS.java";javac $KLASS.java|| exit 1
   elif (test -s $KLASS.class)
      then echo "Testime faili $KLASS.class" 
   else echo "Puudub fail $KLASS.java";exit 1
fi
if (test $# -ge 3)
   then JUNIT=$3
fi
if (test -s $JUNIT)
   then echo "Raamistik on $JUNIT"
   else echo "Puudub fail $JUNIT";exit 1
fi
if (test -s $HAMCREST)
   then echo "Abiks on $HAMCREST"
   else echo "Puudub fail $HAMCREST";exit 1
fi
if (test -s $JTEST.class)
   then echo "JUnit test on failis $JTEST.class"
   elif (test -s $JTEST.java)
      then echo "JUnit test on failis $JTEST.java"; javac -cp .:$JUNIT:$HAMCREST $JTEST.java||exit 1
      else echo "Puudub JUnit test $JTEST";exit 1
fi
LOG=/tmp/\.$LFILE
touch $LFILE
touch $VFILE
touch $LOG
if (test -w $LFILE)
   then echo "Tulemusi andnud seansid  logitakse faili $LFILE"
   else echo "Faili $LFILE ei saa kirjutada";exit 1
fi
if (test -w $VFILE)
   then echo "Jooksva testi tulemus kirjutatakse faili $VFILE"
   else echo "Faili $VFILE ei saa kirjutada";exit 1
fi
if (test -w $LOG)
   then echo "Alustame...."
   else echo "Faili $LOG ei saa kirjutada";exit 1
fi
(java -cp .:$JUNIT:$HAMCREST org.junit.runner.JUnitCore $JTEST > $VFILE || (cat $VFILE | grep $JTEST ;echo "Testid ei jookse, vaata faili $VFILE";exit 1)) && (echo "Testitud `pwd`/$KLASS.java"; echo "$USER $KLASS testitud $JTEST abil (`pwd`/$KLASS.java) `uname -n` `date`"|tee -a $LOG >> $LFILE)
echo LQPP

