fail_stderr_grep
This commit is contained in:
+38
-15
@@ -2,15 +2,19 @@
|
||||
|
||||
# CONSTANTS
|
||||
|
||||
readonly TMP_DIRECTORY="/tmp/$(basename "$0")-$UID"
|
||||
TMP_DIRECTORY="/tmp/$(basename "$0")-$UID"
|
||||
TMP_OUT="$TMP_DIRECTORY/_stdout"
|
||||
TMP_ERR="$TMP_DIRECTORY/_stderr"
|
||||
TMP_MIAOU="$TMP_DIRECTORY/_miaou"
|
||||
readonly TMP_DIRECTORY TMP_OUT TMP_ERR TMP_MIAOU
|
||||
|
||||
# functions
|
||||
|
||||
function assert {
|
||||
((test_count++))
|
||||
cmd="./test/stub/scenario.bash $1"
|
||||
if $cmd >/dev/null 2>/dev/null 3>"$TMP_DIRECTORY"/_miaou; then
|
||||
if [[ -s "$TMP_DIRECTORY"/_miaou ]]; then
|
||||
if $cmd >/dev/null 2>/dev/null 3>"$TMP_MIAOU"; then
|
||||
if [[ -s "$TMP_MIAOU" ]]; then
|
||||
echo -n .
|
||||
return
|
||||
fi
|
||||
@@ -31,8 +35,8 @@ function assert_grep {
|
||||
local script="$1" content="$2" extra_args=()
|
||||
[[ $# -gt 3 ]] && shift 3 && extra_args=("$@")
|
||||
cmd="./test/stub/scenario.bash $script"
|
||||
if $cmd "${extra_args[@]}" >"$TMP_DIRECTORY"/_stdout 2>/dev/null 3>/dev/null; then
|
||||
if grep -q "$content" "$TMP_DIRECTORY"/_stdout; then
|
||||
if $cmd "${extra_args[@]}" >"$TMP_OUT" 2>/dev/null 3>/dev/null; then
|
||||
if grep -q "$content" "$TMP_OUT"; then
|
||||
echo -n .
|
||||
return
|
||||
fi
|
||||
@@ -52,15 +56,15 @@ function fail_type {
|
||||
|
||||
cmd="./test/stub/scenario.bash $1"
|
||||
# mapfile -t stderr <<<"$(miaou-bash ./test/stub/scenario.bash "$1" 2>&1 >/dev/null 3>/dev/null)"
|
||||
$cmd >/dev/null 2>"$TMP_DIRECTORY"/_stderr 3>"$TMP_DIRECTORY"/_miaou
|
||||
mapfile -t stderr <"$TMP_DIRECTORY"/_stderr
|
||||
$cmd >/dev/null 2>"$TMP_ERR" 3>"$TMP_MIAOU"
|
||||
mapfile -t stderr <"$TMP_ERR"
|
||||
|
||||
last_error="${stderr[-1]}"
|
||||
regex="^(.*): line ([0-9]+): miaou_error: $2 ([0-9]+)"
|
||||
[[ "${last_error}" =~ $regex ]] && success=true
|
||||
|
||||
if [[ $success == true && -n "${hint_message}" ]]; then
|
||||
grep -q "${hint_message}" "$TMP_DIRECTORY"/_miaou || success=false
|
||||
grep -q "${hint_message}" "$TMP_MIAOU" || success=false
|
||||
fi
|
||||
|
||||
if [[ $success == true ]]; then
|
||||
@@ -72,14 +76,28 @@ function fail_type {
|
||||
return 1
|
||||
}
|
||||
|
||||
function fail_stderr_grep {
|
||||
((test_count++))
|
||||
cmd="./test/stub/scenario.bash $1"
|
||||
stderr_line="$2"
|
||||
if ! $cmd 2>"$TMP_ERR" 3>/dev/null && grep -q "$stderr_line" "$TMP_ERR"; then
|
||||
echo -n .
|
||||
return
|
||||
fi
|
||||
|
||||
echo -n F
|
||||
failures+=("$cmd 2>&1 3>/dev/null | grep \"$stderr_line\"")
|
||||
return 1
|
||||
}
|
||||
|
||||
function fail_stderr_count {
|
||||
((test_count++))
|
||||
local regex count="$2"
|
||||
|
||||
cmd="./test/stub/scenario.bash $1"
|
||||
# mapfile -t stderr <<<"$(miaou-bash ./test/stub/scenario.bash "$1" 2>&1 >/dev/null 3>/dev/null)"
|
||||
if ! $cmd >/dev/null 2>"$TMP_DIRECTORY"/_stderr 3>/dev/null; then
|
||||
mapfile -t stderr <"$TMP_DIRECTORY"/_stderr
|
||||
if ! $cmd >/dev/null 2>"$TMP_ERR" 3>/dev/null; then
|
||||
mapfile -t stderr <"$TMP_ERR"
|
||||
if [[ "${#stderr[@]}" == "$count" ]]; then
|
||||
echo -n .
|
||||
return
|
||||
@@ -87,7 +105,7 @@ function fail_stderr_count {
|
||||
fi
|
||||
|
||||
echo -n F
|
||||
failures+=("$cmd 2>"$TMP_DIRECTORY"/_stderr")
|
||||
failures+=("$cmd 2>$TMP_ERR")
|
||||
return 1
|
||||
}
|
||||
|
||||
@@ -97,8 +115,8 @@ function fail_miaou_count {
|
||||
|
||||
cmd="./test/stub/scenario.bash $1"
|
||||
# mapfile -t stderr <<<"$(miaou-bash ./test/stub/scenario.bash "$1" 2>&1 >/dev/null 3>/dev/null)"
|
||||
if ! $cmd >/dev/null 2>/dev/null 3>"$TMP_DIRECTORY"/_miaou; then
|
||||
mapfile -t miaou <"$TMP_DIRECTORY"/_miaou
|
||||
if ! $cmd >/dev/null 2>/dev/null 3>"$TMP_MIAOU"; then
|
||||
mapfile -t miaou <"$TMP_MIAOU"
|
||||
if [[ "${#miaou[@]}" == "$count" ]]; then
|
||||
echo -n .
|
||||
return
|
||||
@@ -106,7 +124,7 @@ function fail_miaou_count {
|
||||
fi
|
||||
|
||||
echo -n F
|
||||
failures+=("$cmd 3>$TMP_DIRECTORY/_miaou")
|
||||
failures+=("$cmd 3>$TMP_MIAOU")
|
||||
return 1
|
||||
}
|
||||
# main
|
||||
@@ -123,6 +141,9 @@ time {
|
||||
assert exit_0
|
||||
assert return_conditional
|
||||
assert_grep success_with_args 'count args: 2' -- 'A B' C
|
||||
assert heredoc
|
||||
assert pipe1
|
||||
assert pipe2
|
||||
|
||||
fail_type subshell_term SUBSHELL_ERROR
|
||||
fail_type unbound_variable UNBOUND_VARIABLE
|
||||
@@ -141,7 +162,9 @@ time {
|
||||
fail_stderr_count child_error 4
|
||||
fail_miaou_count command_error_multiline 7
|
||||
|
||||
echo TODO: source EOF + pipe
|
||||
fail_stderr_grep two_options 'ERROR: too many args 2, either single option or SCRIPT + args accepted!'
|
||||
fail_stderr_grep script_not_found "ERROR: script 'doesnt_exist' not found!"
|
||||
fail_stderr_grep no_script 'ERROR: script expected!'
|
||||
|
||||
}
|
||||
failed=${#failures[@]}
|
||||
|
||||
Reference in New Issue
Block a user