github.com/imran-kn/cilium-fork@v1.6.9/contrib/shell/test.sh (about) 1 #!/bin/bash 2 # Copyright 2017-2019 Authors of Cilium 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # http://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 16 readonly reset=$(tput sgr0) 17 readonly red=$(tput bold; tput setaf 1) 18 readonly green=$(tput bold; tput setaf 2) 19 readonly yellow=$(tput bold; tput setaf 3) 20 21 # Watch a file or directory for changes and trigger some action at that time. 22 # 23 # $1 = File to watch 24 # $2+ = Command and arguments 25 function watchdo 26 { 27 local FILE=$1 28 shift 29 30 if [ ! -z "$TESTPKGS" ]; then 31 echo -e "${yellow}Using TESTPKGS=\"$TESTPKGS\" for run.${reset}" 32 fi 33 echo -e "${yellow}Running \"$@\" on changes to \"$FILE\" ...${reset}" 34 while inotifywait -q -r -e move $FILE; do 35 eval "$@"; 36 if [ $? == 0 ] ; then 37 echo -e "${yellow}$@${reset}: ${green}✔${reset}" 38 else 39 echo -e "${yellow}$@${reset}: ${red}✘${reset}" 40 fi 41 done 42 } 43 44 function watchtest_ 45 { 46 47 watchdo "." "make --quiet build unit-tests" 48 } 49 50 # Watch a file or directory for changes and trigger tests when it is modified. 51 # 52 # $1 = Filepath to watch under cilium directory 53 function watchtest 54 { 55 if [ $# -gt 1 ]; then 56 echo "usage: $0 <package>" 57 exit 1 58 elif ! which inotifywait >/dev/null; then 59 echo "Cannot find 'inotifywait'. Please install inotify-tools." 60 exit 1 61 elif [ $# -eq 1 ]; then 62 TESTPKGS="$1" watchtest_ 63 else 64 watchtest_ 65 fi 66 }