Home | History | Annotate | Download | only in atest
      1 #!/bin/bash
      2 
      3 # Copyright (C) 2017 The Android Open Source Project
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License");
      6 # you may not use this file except in compliance with the License.
      7 # You may obtain a copy of the License at
      8 #
      9 #      http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS IS" BASIS,
     13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 # See the License for the specific language governing permissions and
     15 # limitations under the License.
     16 
     17 # A simple helper script that runs all of the atest unit tests.
     18 # We have 2 situations we take care of:
     19 #   1. User wants to invoke this script by itself.
     20 #   2. PREUPLOAD hook invokes this script.
     21 
     22 ATEST_DIR=`dirname $0`/
     23 PREUPLOAD_FILES=$@
     24 RED='\033[0;31m'
     25 GREEN='\033[0;32m'
     26 NC='\033[0m' # No Color
     27 
     28 function set_pythonpath() {
     29   local path_to_check=`realpath $ATEST_DIR`
     30   if ! echo $PYTHONPATH | grep -q $path_to_check; then
     31     PYTHONPATH=$path_to_check:$PYTHONPATH
     32   fi
     33 }
     34 
     35 function run_atest_unittests() {
     36   set_pythonpath
     37   local rc=0
     38   for test_file in $(find $ATEST_DIR -name "*_unittest.py");
     39   do
     40     if ! $test_file; then
     41       rc=1
     42     fi
     43   done
     44 
     45   echo
     46   if [[ $rc -eq 0 ]]; then
     47     echo -e "${GREEN}All unittests pass${NC}!"
     48   else
     49     echo -e "${RED}There was a unittest failure${NC}"
     50   fi
     51   return $rc
     52 }
     53 
     54 # Let's check if anything is passed in, if not we assume the user is invoking
     55 # script, but if we get a list of files, assume it's the PREUPLOAD hook.
     56 if [[ -z $PREUPLOAD_FILES ]]; then
     57   run_atest_unittests
     58   exit $?
     59 else
     60   for f in $PREUPLOAD_FILES;
     61   do
     62     # We only want to run this unittest if atest files have been touched.
     63     if [[ $f == atest/* ]]; then
     64       run_atest_unittests
     65       exit $?
     66     fi
     67   done
     68 fi
     69