Add support for pegging the JVM version when checking code coverage.
[cfb.git] / cov.sh
diff --git a/cov.sh b/cov.sh
index 0948141a745b5e199d18e6cac98cba85d4b25c39..3162f0165693b8262eeced743521a85e5a7cc67f 100755 (executable)
--- a/cov.sh
+++ b/cov.sh
@@ -1,11 +1,32 @@
 #!/bin/bash
+
+set -o nounset   ## (set -u) error exit on attempts to deref undefined variable
+set -o errexit   ## (set -e) error exit if subcommand returns nonzero
+
 CFB_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 INSTR_DIR="${CFB_ROOT}/../instr"
+JAVA=${JAVA_HOME}/bin/java
+JAVAC=${JAVA_HOME}/bin/javac
+
+. ${CFB_ROOT}/setcp.sh
 
 #####################
 echo Compiling...
-find "${CFB_ROOT}/prod" -name "*.java" | xargs javac -g -Xlint:deprecation
-find "${CFB_ROOT}/test" -name "*.java" | xargs javac -g -classpath ${CFB_ROOT}/prod:${CLASSPATH} -Xlint:deprecation
+find "${CFB_ROOT}/prod" -name "*.java" | xargs ${JAVAC} -g -Xlint:deprecation
+find "${CFB_ROOT}/test" -name "*.java" | xargs ${JAVAC} -g -classpath ${CFB_ROOT}/prod:${CLASSPATH} -Xlint:deprecation
+
+if [ -d "${CFB_ROOT}/bin" ]; then
+    rm -rf "${CFB_ROOT}/bin"
+fi
+mkdir -p "${CFB_ROOT}/bin"
+cd "${CFB_ROOT}/prod"
+find . -name '*.class' | xargs tar zcf "${CFB_ROOT}/tmp_classes.tar.gz" 
+cd "${CFB_ROOT}/bin"
+tar zxf "${CFB_ROOT}/tmp_classes.tar.gz"
+if [ -e "${CFB_ROOT}/tmp_classes.tar.gz" ]; then
+    rm  "${CFB_ROOT}/tmp_classes.tar.gz"
+fi
+cd "${CFB_ROOT}"
 
 #####################
 echo Cleaning old coverage files...
@@ -25,7 +46,7 @@ done
 
 #####################
 echo Instrumenting...
-java -classpath "${CLASSPATH}" -jar `pwd`/jcov/jcov.jar Instr -t template.xml -o "${INSTR_DIR}" -type all "${CFB_ROOT}/prod"
+${JAVA} -classpath "${CLASSPATH}" -jar `pwd`/jcov/jcov.jar Instr -t template.xml -o "${INSTR_DIR}" -type all "${CFB_ROOT}/prod"
 
 #####################
 echo Running unit tests...
@@ -40,12 +61,17 @@ do
 done
 
 echo First run:  locale es_ES, timezone Europe/Madrid
-java -Duser.language=es -Duser.country=ES -Duser.timezone=Europe/Madrid -Djcov.template=${CFB_ROOT}/template.xml -Djcov.file=${CFB_ROOT}/result.xml -classpath "${INSTR_DIR}:${CFB_ROOT}/test:${CLASSPATH}:/usr/share/java/junit.jar:${CFB_ROOT}/jcov/jcov_file_saver.jar" org.junit.runner.JUnitCore ${TESTS}
+${JAVA} -Duser.language=es -Duser.country=ES -Duser.timezone=Europe/Madrid -Djcov.template=${CFB_ROOT}/template.xml -Djcov.file=${CFB_ROOT}/result.xml -classpath "${INSTR_DIR}:${CFB_ROOT}/test:${CLASSPATH}:/usr/share/java/junit.jar:${CFB_ROOT}/jcov/jcov_file_saver.jar" org.junit.runner.JUnitCore ${TESTS}
 
 echo Second run:  server default locale and timezone
-java -Djcov.template=${CFB_ROOT}/template.xml -Djcov.file=${CFB_ROOT}/result.xml -classpath "${INSTR_DIR}:${CFB_ROOT}/test:${CLASSPATH}:/usr/share/java/junit.jar:${CFB_ROOT}/jcov/jcov_file_saver.jar" org.junit.runner.JUnitCore ${TESTS}
+${JAVA} -Djcov.template=${CFB_ROOT}/template.xml -Djcov.file=${CFB_ROOT}/result.xml -classpath "${INSTR_DIR}:${CFB_ROOT}/test:${CLASSPATH}:/usr/share/java/junit.jar:${CFB_ROOT}/jcov/jcov_file_saver.jar" org.junit.runner.JUnitCore ${TESTS}
 
 #####################
 echo Generating HTML Report...
 
-java -jar "${CFB_ROOT}/jcov/jcov.jar" RepGen -sourcepath "${CFB_ROOT}/prod" -log.level FINE result.xml
+${JAVA} -jar "${CFB_ROOT}/jcov/jcov.jar" RepGen -sourcepath "${CFB_ROOT}/prod" -log.level FINE result.xml
+
+#####################
+echo Cleaning up
+find "${CFB_ROOT}/prod" -type f -name '*.class' -exec rm {} \;
+find "${CFB_ROOT}/test" -type f -name '*.class' -exec rm {} \;