diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-10-30 09:18:14 -0400 | 
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-10-30 09:18:14 -0400 | 
| commit | 7a77598e0355c8d1df97745f1678363f050fc607 (patch) | |
| tree | 877b1bdb7d39b1ca4599d2d0d3591b859efca3b7 /tests/setup.sh | |
| parent | 9aa6d8c681bcf6d6c0df25b2d0624e6ee6abd3c5 (diff) | |
| download | stasis-7a77598e0355c8d1df97745f1678363f050fc607.tar.gz | |
Implement a runner (run_command) and generate a summary (run_summary) when the script ends
Diffstat (limited to 'tests/setup.sh')
| -rw-r--r-- | tests/setup.sh | 74 | 
1 files changed, 72 insertions, 2 deletions
| diff --git a/tests/setup.sh b/tests/setup.sh index 014f7fc..743fafd 100644 --- a/tests/setup.sh +++ b/tests/setup.sh @@ -94,6 +94,36 @@ install_stasis() {      popd  } + +STASIS_TEST_RESULT_FAIL=0 +STASIS_TEST_RESULT_PASS=0 +STASIS_TEST_RESULT_SKIP=0 +run_command() { +    local logfile="$(mktemp).log" +    local cmd="${@}" +    local lines_on_error=100 +    /bin/echo "Testing: $cmd " +    if ! $cmd &>"$logfile"; then +        echo "... FAIL" +        echo "#" +        echo "# Last $lines_on_error line(s) follow:" +        echo "#" +        tail -n $lines_on_error "$logfile" +        (( STASIS_TEST_RESULT_FAIL++ )) +    else +        echo "... PASS" +        (( STASIS_TEST_RESULT_PASS++ )) +    fi +    rm -f "$logfile" +} + +run_summary() { +    local total=$(( STASIS_TEST_RESULT_PASS + STASIS_TEST_RESULT_FAIL + STASIS_TEST_RESULT_SKIP)) +    echo +    echo "[RT] ${STASIS_TEST_RESULT_PASS} tests passed, ${STASIS_TEST_RESULT_FAIL} failed, ${STASIS_TEST_RESULT_SKIP} skipped out of ${total}" +    echo +} +  run_stasis() {      local logfile="$LOGFILE_STASIS"      $(type -P stasis) --unbuffered -v $@ 2>&1 | tee "$logfile" @@ -119,6 +149,7 @@ check_output_reset() {  }  check_output_stasis_dir() { +    local retcode=0      local startdir="$1"      local logfile="$LOGFILE_STASIS" @@ -149,7 +180,11 @@ check_output_stasis_dir() {          done      done -    return $retcode +    if (( retcode )); then +        return 1 +    else +        return 0 +    fi  }  check_output_indexed_dir() { @@ -177,11 +212,46 @@ check_output_indexed_dir() {          echo "[EOF]"          echo      done -    return $retcode +    if (( retcode )); then +        return 1 +    else +        return 0 +    fi +} + +assert_eq() { +    local a="$1" +    local b="$2" +    local msg="$3" +    if [[ "$a" == "$b" ]]; then +        return 0 +    else +        [[ -n "$msg" ]] && echo "'$a' != '$b' :: $msg" >&2 +        return 1 +    fi +} + +assert_file_contains() { +    local file="$1" +    local str="$2" +    local msg="$3" +    if grep -E "$str" "$file" &>/dev/null; then +        return 0 +    else +        [[ -n "$msg" ]] && echo "'$str' not in file '$file' :: $msg" >&2 +        return 1 +    fi  }  clean_up() {      if [ -z "$RT_KEEP_WORKSPACE" ] && [ -d "$WORKSPACE" ]; then          rm -rf "$WORKSPACE"      fi + +    run_summary +    if (( STASIS_TEST_RESULT_FAIL )); then +        exit 1 +    else +        exit 0 +    fi  }
\ No newline at end of file | 
