bugfix: tc055 fail due to options with no value
[yardstick.git] / run_tests.sh
index 6770e64..b3cbfb1 100755 (executable)
@@ -9,32 +9,88 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-# Run yardstick's test suite(s)
+# Run yardstick's flake8, unit, coverage, functional test
+
+getopts ":f" FILE_OPTION
+
+# don't write .pyc files this can cause odd unittest results
+export PYTHONDONTWRITEBYTECODE=1
+
+PY_VER="py$( python --version | sed 's/[^[:digit:]]//g' | cut -c-2 )"
+export PY_VER
+
+COVER_DIR_NAME="./tests/ci/"
+export COVER_DIR_NAME
 
 run_flake8() {
-    echo -n "Running flake8 ... "
-    logfile=pep8.log
-    flake8 yardstick > $logfile
+    echo "Running flake8 ... "
+    logfile=test_results.log
+    if [ $FILE_OPTION == "f" ]; then
+        flake8 yardstick > $logfile
+    else
+        flake8 yardstick
+    fi
+
     if [ $? -ne 0 ]; then
-        echo "FAILED, result in $logfile"
+        echo "FAILED"
+        if [ $FILE_OPTION == "f" ]; then
+            echo "Results in $logfile"
+        fi
         exit 1
     else
-        echo "OK, result in $logfile"
+        echo "OK"
     fi
 }
 
+
 run_tests() {
-    echo -n "Running unittest ... "
-    logfile=test.log
-    python -m unittest discover -s yardstick/tests &> $logfile
+    echo "Get external libs needed for unit test"
+
+    echo "Running unittest ... "
+    if [ $FILE_OPTION == "f" ]; then
+        python -m unittest discover -v -s tests/unit > $logfile 2>&1
+    else
+        python -m unittest discover -v -s tests/unit
+    fi
+
     if [ $? -ne 0 ]; then
-        echo "FAILED, result in $logfile"
+        if [ $FILE_OPTION == "f" ]; then
+            echo "FAILED, results in $logfile"
+        fi
         exit 1
     else
-        echo "OK, result in $logfile"
+        if [ $FILE_OPTION == "f" ]; then
+            echo "OK, results in $logfile"
+        fi
     fi
 }
 
+run_coverage() {
+    # don't re-run coverage on both py27 py3, it takes too long
+    if [[ -z $SKIP_COVERAGE ]] ; then
+        source $COVER_DIR_NAME/cover.sh
+        run_coverage_test
+    fi
+}
+
+run_functional_test() {
+
+    mkdir -p .testrepository
+    python -m subunit.run discover tests/functional > .testrepository/subunit.log
+
+    subunit2pyunit < .testrepository/subunit.log
+    EXIT_CODE=$?
+    subunit-stats < .testrepository/subunit.log
+
+    if [ $EXIT_CODE -ne 0 ]; then
+        exit 1
+    else
+        echo "OK"
+    fi
+}
+
+
 run_flake8
 run_tests
-
+run_coverage
+run_functional_test