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