github.com/criteo/command-launcher@v0.0.0-20230407142452-fb616f546e98/test/integration.sh (about) 1 #!/bin/bash 2 3 SCRIPT_DIR=${SCRIPT_DIR:-$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )} 4 # replace \ to / for windows 5 SCRIPT_DIR=${SCRIPT_DIR//\\//} 6 echo "integration test directory: $SCRIPT_DIR" 7 8 KEEP_OUTPUT=${KEEP_OUTPUT:-"no"} 9 10 EXIT_CODE=0 11 TEST_COUNT=0 12 FAILURE_COUNT=0 13 14 # create output folder 15 OUTPUT_DIR=$SCRIPT_DIR/output 16 rm -rf $OUTPUT_DIR 17 mkdir -p $OUTPUT_DIR 18 19 ## 20 # build the binary 21 ## 22 cd $SCRIPT_DIR 23 go build -o $OUTPUT_DIR/cl -ldflags='-X main.version=integration-test -X main.buildNum=1 -X main.appName=cl -X "main.appLongName=Command Launcher"' $SCRIPT_DIR/../main.go 24 25 # specify the app home 26 export CL_HOME=$OUTPUT_DIR/home 27 28 if [ $# -ne 0 ]; then 29 # in case pass test as arguments, run test from the arguments 30 for test in "$@"; do 31 echo "------------------------------------------------------------" 32 echo "- test/integration/${test}.sh" 33 echo "------------------------------------------------------------" 34 35 # clean up for fresh start 36 rm -rf $CL_HOME/dropins 37 rm -rf $CL_HOME/current 38 rm -f $CL_HOME/config.json 39 mkdir -p $CL_HOME/dropins 40 41 let TEST_COUNT++ 42 43 OUTPUT_DIR=$OUTPUT_DIR \ 44 CL_PATH=$OUTPUT_DIR/cl \ 45 CL_HOME=$CL_HOME \ 46 $SCRIPT_DIR/integration/${test}.sh 47 48 if [ $? -eq 0 ]; then 49 echo "- PASS" 50 else 51 echo "- FAIL" 52 EXIT_CODE=1 53 let FAILURE_COUNT++ 54 fi 55 56 echo "" 57 done 58 else 59 # otherwise run all tests in integration/ folder 60 TESTS=$(ls $SCRIPT_DIR/integration/*.sh) 61 echo "find all tests in integration folder:" 62 echo "$TESTS" 63 for f in $TESTS; do 64 echo "------------------------------------------------------------" 65 echo "- $f" 66 echo "------------------------------------------------------------" 67 68 # cleanup 69 rm -rf $CL_HOME/dropins 70 rm -rf $CL_HOME/current 71 rm -f $CL_HOME/config.json 72 mkdir -p $CL_HOME/dropins 73 74 let TEST_COUNT++ 75 76 OUTPUT_DIR=$OUTPUT_DIR \ 77 CL_PATH=$OUTPUT_DIR/cl \ 78 CL_HOME=$CL_HOME \ 79 $f 80 81 if [ $? -eq 0 ]; then 82 echo "- PASS" 83 else 84 echo "- FAIL" 85 EXIT_CODE=1 86 let FAILURE_COUNT++ 87 fi 88 89 echo "" 90 done 91 fi 92 93 ## 94 # remove the output folder 95 ## 96 if [ $KEEP_OUTPUT == "yes" ]; then 97 echo "KEEP_OUTPUT = yes, skip clean up" 98 else 99 echo "clean up" 100 rm -rf $OUTPUT_DIR 101 fi 102 103 echo "" 104 echo "Total test suits $TEST_COUNT, failure $FAILURE_COUNT" 105 exit $EXIT_CODE