#!/bin/bash . ./generate_tests.sh TEST_RESULTS=$BENCH_ROOT/results # make result folder (inside VOLUME) # mkdir -p $TEST_RESULTS # generate all tests: copy host and daemon level tests and generate container level tests for running containers # generate_all_tests # run bats with all tests or passed tests # bats $TEST_ROOT > #Set Script Name variable SCRIPT="run_tests.sh" #Initialize variables to default values. OPT_FORMAT="t" OPT_OUTPUT=$TEST_RESULTS OPT_RESULTS=1 #Set fonts for Help. if [ -e "/usr/bin/tput" ]; then BOLD=$(tput bold) REV=$(tput smso) NORM=$(tput sgr0) else BOLD="" REV="" NORM="" fi #Help function HELP() { echo -e \\n"Help documentation for ${BOLD}${SCRIPT}${NORM}"\\n echo -e "Basic usage: ${BOLD}$SCRIPT [-c] [-p|-t] [-o path] [ ...]${NORM}"\\n echo -e "Command line switches are optional. The following switches are recognized." echo -e "${REV}-c${NORM} --Displays number of tests. No further functions are performed." echo -e "${REV}-g${NORM} --Generates all CIS Bats tests without execution. No further functions are performed." echo -e "${REV}-p${NORM} --Show results in pretty format." echo -e "${REV}-t${NORM} --Show results in TAP format. This is the default format." echo -e "${REV}-t${NORM} --Create test results files: ${BOLD}tests_.tap${NORM} in test result folder." echo -e "${REV}-o${NORM} --Specify test result folder. Default to ${BOLD}$TEST_RESULTS${NORM}." echo -e "${REV}-h${NORM} --Displays this help message. No further functions are performed."\\n echo -e "Example: ${BOLD}$SCRIPT -t -o $TEST_RESULTS${NORM}"\\n exit 1 } #Check the number of arguments. If none are passed, print help and exit. NUMARGS=$# if [ "$NUMARGS" -eq 0 ]; then HELP fi ### Start getopts code ### #Parse command line flags while getopts o:rptcgh FLAG; do case $FLAG in o) # output test results into specified folder OPT_OUTPUT=$OPTARG ;; p) # output test results in TAP format OPT_FORMAT="p" ;; t) # output test results in pretty format OPT_FORMAT="t" ;; r) # save test results into file OPT_RESULTS=0 ;; c) # count tests if [ -d "$TEST_ROOT" ]; then echo -e "There are ${BOLD}$(bats "${TEST_ROOT}" -c)${NORM} tests in ${BOLD}${TEST_ROOT}${NORM}" else echo -e "No tests found, run ${BOLD}${SCRIPT}${NORM} with ${REV}-g${NORM} option first." fi exit 1 ;; g) # genetate all Bats tests: copy tests and generate tests (per container) from templates generate_all_tests exit 1 ;; h) #show help HELP ;; \?) #unrecognized option - show help echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed." HELP ;; esac done shift $((OPTIND-1)) #This tells getopts to move on to the next argument. ### End getopts code ### ### Run Bats tests ### TESTS="${TEST_ROOT}" if [ ! -d "${TEST_ROOT}" ]; then # generate tests if needed generate_all_tests fi if [ $# -ne 0 ]; then # get tests from command line TESTS=$* fi if [ ${OPT_RESULTS} -eq 0 ]; then # run tests and [create test result file] if [ ! -d "$OPT_OUTPUT" ]; then mkdir -p "$OPT_OUTPUT" fi bats "${TESTS}" -${OPT_FORMAT} > "${OPT_OUTPUT}/tests_$(date +%s).tap" else bats "${TESTS}" -${OPT_FORMAT} fi exit 0