Add exit return code for unit tests
[functest.git] / run_unit_tests.sh
1 #!/bin/bash
2 set -o errexit
3 set -o pipefail
4
5 # ******************************
6 # prepare the env for the tests
7 # ******************************
8 # clean useless results dir
9 # should be done at the end
10 # but in case of crash during unit test
11 # clean it anyway
12 if [ -d "/home/opnfv/functest/results" ]
13 then
14     sudo rm -rf /home/opnfv/functest
15 fi
16
17 # TODO clean that...
18 # Create log dir if needed
19 # log shall be disabled during unit tests
20 # fix to be done in Logger
21 if [ ! -d "/home/opnfv/functest/results" ]
22 then
23     echo "Create dummy log file...."
24     sudo mkdir -p /home/opnfv/functest/results/odl
25     sudo touch /home/opnfv/functest/results/functest.log
26     sudo touch /home/opnfv/functest/results/odl/stdout.txt
27     sudo chmod -Rf a+rw /home/opnfv
28 fi
29
30 # Either Workspace is set (CI)
31 # then useless log files must belong to jenkins:jenkins
32 # or it is local tests and we do not care
33 if [ -z $WORKSPACE ]
34 then
35     WORKSPACE="."
36 else
37     sudo chown -Rf jenkins:jenkins /home/opnfv
38     # as we import the module from the home repo
39     # and in jenkins the name is different
40     # functest-verify-master != functest
41     # make some ugly adjustments...
42     cd $WORKSPACE
43     export PYTHONPATH="${PYTHONPATH}:$WORKSPACE"
44     cd ..
45
46     if [ ! -d "./functest" ]
47     then
48     ln -s functest-verify-master functest
49     fi
50 fi
51
52
53 # ***************
54 # Run unit tests
55 # ***************
56 echo "Running unit tests..."
57
58 # start vitual env
59 virtualenv $WORKSPACE/functest_venv
60 source $WORKSPACE/functest_venv/bin/activate
61
62 # install python packages
63 easy_install -U setuptools
64 easy_install -U pip
65 pip install -r $WORKSPACE/docker/requirements.pip
66 pip install -e $WORKSPACE
67
68 python $WORKSPACE/setup.py develop
69
70 # unit tests
71 # TODO: remove cover-erase
72 # To be deleted when all functest packages will be listed
73 nosetests --with-xunit \
74          --with-coverage \
75          --cover-erase \
76          --cover-package=functest.core.TestCasesBase \
77          --cover-package=functest.testcases.Controllers.ODL.OpenDaylightTesting \
78          --cover-xml \
79          --cover-html \
80          unit_tests
81 rc=$?
82
83 deactivate
84
85 # *******
86 # clean
87 # *******
88 # First as we had to start the test from ..
89 # Push the results upstream for jenkins
90 if [ $WORKSPACE != "." ]
91 then
92     mv coverage.xml nosetests.xml $WORKSPACE
93 fi
94
95 # Clean useless logs
96 if [ -d "/home/opnfv/functest/results" ]
97 then
98     sudo rm -rf /home/opnfv/functest/results
99 fi
100
101 exit $rc