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