From 7e90a319142d7c8e5c4611a7f938d28d131d5bda Mon Sep 17 00:00:00 2001 From: AnthonyAxenov Date: Tue, 11 Jan 2022 08:45:23 +0800 Subject: [PATCH] tester.sh --- shell/tester.sh | 95 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 shell/tester.sh diff --git a/shell/tester.sh b/shell/tester.sh new file mode 100644 index 0000000..c794ffc --- /dev/null +++ b/shell/tester.sh @@ -0,0 +1,95 @@ +#!/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 \ No newline at end of file