#!/bin/bash # https://gist.github.com/anthonyaxenov/b17c6fbd7895c6049e1ceddc7c54bb5b . ./io.sh ######################################################## # Тестировочные функции # Позволяют проверять результаты выполнения команд ######################################################## # тестирует выполнение команды с указанными параметрами # $1 - команда для тестирования (обяз) expect_exec() { [ "$1" ] || exit 1 local prefix="`dt`${BOLD}${FWHITE}[TEST EXEC]" if $($1 1>/dev/null 2>&1); then local text="${BGREEN} PASSED" else local text="${BLRED} FAILED" fi print "${prefix} ${text} ${BRESET} ($?):${RESET} $1" } # использование: # func1() { # return 0 # } # func2() { # return 1 # } # expect_exec "func1" # PASSED # expect_exec "func2" # FAILED # expect_exec "whoami" # PASSED # тестирует выполнение команды с указанными параметрами и проверяет вывод # $1 - команда для тестирования (обяз) # $2 - ожидаемый вывод expect_output() { [ "$1" ] || exit 1 [ "$2" ] && local expected="$2" || local expected='' local prefix="`dt`${BOLD}${FWHITE}[TEST OUTP]" local output=$($1 2>&1) local code=$? if [[ "$output" == *"$expected"* ]]; then local text="${BGREEN} PASSED" else local text="${BLRED} FAILED" fi print "${prefix} ${text} ${BRESET} (${code}|${expected}):${RESET} $1" # print "\tOutput > $output" } # использование: # func1() { # echo "some string" # } # func2() { # echo "another string" # } # expect_output "func1" "string" # PASSED # expect_output "func2" "some" # FAILED # expect_output "func2" "string" # PASSED # тестирует выполнение команды с указанными параметрами и проверяет код выхода # $1 - команда для тестирования (обяз) # $2 - ожидаемый код выхода expect_code() { [ "$1" ] || exit 1 [ "$2" ] && local expected=$2 || local expected=0 local prefix="`dt`${BOLD}${FWHITE}[TEST CODE]" $($1 1>/dev/null 2>&1) local code=$? if [[ $code -eq $expected ]]; then local text="${BGREEN} PASSED" else local text="${BLRED} FAILED" fi print "${prefix} ${text} ${BRESET} (${code}|${expected}):${RESET} $1" } # использование: # func1() { # # exit 0 # return 0 # } # func2() { # # exit 1 # return 1 # } # expect_code "func1" 0 # PASSED # expect_code "func1" 1 # FAILED # expect_code "func2" 0 # FAILED # expect_code "func2" 1 # PASSED