e442016c4d6157434ce450ea3c833123570e40f7
[cfb.git] / cov.sh
1 #!/bin/bash
2
3 set -o nounset   ## (set -u) error exit on attempts to deref undefined variable
4 set -o errexit   ## (set -e) error exit if subcommand returns nonzero
5
6 CFB_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7 INSTR_DIR="${CFB_ROOT}/../instr"
8
9 . ${CFB_ROOT}/setcp.sh
10
11 #####################
12 echo Compiling...
13 find "${CFB_ROOT}/prod" -name "*.java" | xargs javac -g -Xlint:deprecation
14 find "${CFB_ROOT}/test" -name "*.java" | xargs javac -g -classpath ${CFB_ROOT}/prod:${CLASSPATH} -Xlint:deprecation
15
16 if [ -d "${CFB_ROOT}/bin" ]; then
17     rm -rf "${CFB_ROOT}/bin"
18 fi
19 mkdir -p "${CFB_ROOT}/bin"
20 cd "${CFB_ROOT}/prod"
21 find . -name '*.class' | xargs tar zcf "${CFB_ROOT}/tmp_classes.tar.gz" 
22 cd "${CFB_ROOT}/bin"
23 tar zxf "${CFB_ROOT}/tmp_classes.tar.gz"
24 if [ -e "${CFB_ROOT}/tmp_classes.tar.gz" ]; then
25     rm  "${CFB_ROOT}/tmp_classes.tar.gz"
26 fi
27 cd "${CFB_ROOT}"
28
29 #####################
30 echo Cleaning old coverage files...
31 for x in "${INSTR_DIR}" report
32 do
33     if [ -d "${x}" ]; then
34         rm -rf "${x}"
35     fi
36     mkdir -p "${x}"
37 done
38 for x in result.xml template.xml
39 do
40     if [ -w ${x} ]; then
41         rm ${x}
42     fi
43 done
44
45 #####################
46 echo Instrumenting...
47 java -classpath "${CLASSPATH}" -jar `pwd`/jcov/jcov.jar Instr -t template.xml -o "${INSTR_DIR}" -type all "${CFB_ROOT}/prod"
48
49 #####################
50 echo Running unit tests...
51
52 TESTS=""
53 for x in `cd ${CFB_ROOT}/test; find . -name '*Test.class'`
54 do
55     #echo CANDIDATE $x
56     TEST_CLASS=`echo ${x} | sed s:\^./:: | cut -d . -f 1 | sed s:/:.:g`
57     #echo TEST_CLASS ${TEST_CLASS}
58     TESTS="${TEST_CLASS} ${TESTS}"
59 done
60
61 echo First run:  locale es_ES, timezone Europe/Madrid
62 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}
63
64 echo Second run:  server default locale and timezone
65 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}
66
67 #####################
68 echo Generating HTML Report...
69
70 java -jar "${CFB_ROOT}/jcov/jcov.jar" RepGen -sourcepath "${CFB_ROOT}/prod" -log.level FINE result.xml
71
72 #####################
73 echo Cleaning up
74 find "${CFB_ROOT}/prod" -type f -name '*.class' -exec rm {} \;
75 find "${CFB_ROOT}/test" -type f -name '*.class' -exec rm {} \;