From bf6bb0d4db29091e3fba26720127e7b4c8aa6481 Mon Sep 17 00:00:00 2001 From: Koichi Nakashima Date: Sun, 23 Feb 2020 15:45:14 +0900 Subject: [PATCH] Add shellspec_syntax_failure_message helper function --- lib/core/matchers/be/empty.sh | 32 +++++++---------- lib/core/matchers/be/stat.sh | 16 ++++----- lib/core/matchers/be/status.sh | 32 +++++++---------- lib/core/matchers/be/valid.sh | 20 +++-------- lib/core/matchers/be/variable.sh | 62 +++++++++++++------------------- lib/core/matchers/end_with.sh | 11 ++---- lib/core/matchers/equal.sh | 17 ++++----- lib/core/matchers/has/stat.sh | 20 +++-------- lib/core/matchers/include.sh | 11 ++---- lib/core/matchers/match.sh | 20 +++-------- lib/core/matchers/satisfy.sh | 11 ++---- lib/core/matchers/start_with.sh | 11 ++---- lib/core/syntax.sh | 13 +++++++ 13 files changed, 105 insertions(+), 171 deletions(-) diff --git a/lib/core/matchers/be/empty.sh b/lib/core/matchers/be/empty.sh index 2e60f192..24dfe71c 100644 --- a/lib/core/matchers/be/empty.sh +++ b/lib/core/matchers/be/empty.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_be_empty_file' shellspec_syntax 'shellspec_matcher_be_empty_directory' @@ -10,15 +10,12 @@ shellspec_matcher_be_empty_file() { [ -f "${SHELLSPEC_SUBJECT:-}" ] && [ ! -s "${SHELLSPEC_SUBJECT:-}" ] } - shellspec_matcher__failure_message() { - shellspec_putsn "The specified path is not empty file" - shellspec_putsn "path: $SHELLSPEC_SUBJECT" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "The specified path is empty file" - shellspec_putsn "path: $SHELLSPEC_SUBJECT" - } + shellspec_syntax_failure_message + \ + 'The specified path is not empty file' \ + 'path: $SHELLSPEC_SUBJECT' + shellspec_syntax_failure_message - \ + 'The specified path is empty file' \ + 'path: $SHELLSPEC_SUBJECT' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match @@ -49,15 +46,12 @@ shellspec_matcher_be_empty_directory() { ) } - shellspec_matcher__failure_message() { - shellspec_putsn "The specified path is not empty directory" - shellspec_putsn "path: $SHELLSPEC_SUBJECT" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "The specified path is empty directory" - shellspec_putsn "path: $SHELLSPEC_SUBJECT" - } + shellspec_syntax_failure_message + \ + 'The specified path is not empty directory' \ + 'path: $SHELLSPEC_SUBJECT' + shellspec_syntax_failure_message - \ + 'The specified path is empty directory' \ + 'path: $SHELLSPEC_SUBJECT' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match diff --git a/lib/core/matchers/be/stat.sh b/lib/core/matchers/be/stat.sh index 39ca1d88..989d7303 100644 --- a/lib/core/matchers/be/stat.sh +++ b/lib/core/matchers/be/stat.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_be_exist' shellspec_syntax 'shellspec_matcher_be_file' @@ -23,14 +23,12 @@ shellspec_make_file_matcher() { shellspec_matcher__match() { \ [ $2 \"\${SHELLSPEC_SUBJECT:-}\" ]; \ }; \ - shellspec_matcher__failure_message() { \ - shellspec_putsn \"The specified path ${4:-${3%% *} not ${3#* }}\"; \ - shellspec_putsn \"path: \$SHELLSPEC_SUBJECT\"; \ - }; \ - shellspec_matcher__failure_message_when_negated() { \ - shellspec_putsn \"The specified path $3\"; \ - shellspec_putsn \"path: \$SHELLSPEC_SUBJECT\"; \ - }; \ + shellspec_syntax_failure_message + \ + 'The specified path ${4:-${3%% *} not ${3#* }}' \ + 'path: \$SHELLSPEC_SUBJECT'; \ + shellspec_syntax_failure_message - \ + 'The specified path $3' \ + 'path: \$SHELLSPEC_SUBJECT'; \ shellspec_syntax_param count [ \$# -eq 0 ] || return 0; \ shellspec_matcher_do_match; \ } diff --git a/lib/core/matchers/be/status.sh b/lib/core/matchers/be/status.sh index 7218301e..7e2855e4 100644 --- a/lib/core/matchers/be/status.sh +++ b/lib/core/matchers/be/status.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_be_success' shellspec_syntax 'shellspec_matcher_be_failure' @@ -8,15 +8,12 @@ shellspec_matcher_be_success() { [ "${SHELLSPEC_SUBJECT:-}" = 0 ] } - shellspec_matcher__failure_message() { - shellspec_putsn "expected: success (zero)" - shellspec_putsn " got: failure (non-zero) [status: $1]" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected: failure (non-zero)" - shellspec_putsn " got: success (zero) [status: $1]" - } + shellspec_syntax_failure_message + \ + 'expected: success (zero)' \ + ' got: failure (non-zero) [status: $1]' + shellspec_syntax_failure_message - \ + 'expected: failure (non-zero)' \ + ' got: success (zero) [status: $1]' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match @@ -30,15 +27,12 @@ shellspec_matcher_be_failure() { return 0 } - shellspec_matcher__failure_message() { - shellspec_putsn "expected: failure (non-zero)" - shellspec_putsn " got: success (zero) [status: $1]" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected: success (zero)" - shellspec_putsn " got: failure (non-zero) [status: $1]" - } + shellspec_syntax_failure_message + \ + 'expected: failure (non-zero)' \ + ' got: success (zero) [status: $1]' + shellspec_syntax_failure_message - \ + 'expected: success (zero)' \ + ' got: failure (non-zero) [status: $1]' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match diff --git a/lib/core/matchers/be/valid.sh b/lib/core/matchers/be/valid.sh index 305e8978..0ae45c19 100644 --- a/lib/core/matchers/be/valid.sh +++ b/lib/core/matchers/be/valid.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_be_valid_number' shellspec_syntax 'shellspec_matcher_be_valid_funcname' @@ -9,13 +9,8 @@ shellspec_matcher_be_valid_number() { shellspec_is number "${SHELLSPEC_SUBJECT:-}" } - shellspec_matcher__failure_message() { - shellspec_putsn "expected $1 is valid as a number" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected $1 is not valid as a number" - } + shellspec_syntax_failure_message + 'expected $1 is valid as a number' + shellspec_syntax_failure_message - 'expected $1 is not valid as a number' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match @@ -26,13 +21,8 @@ shellspec_matcher_be_valid_funcname() { shellspec_is funcname "${SHELLSPEC_SUBJECT:-}" } - shellspec_matcher__failure_message() { - shellspec_putsn "expected $1 is valid as a funcname" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected $1 is not valid as a funcname" - } + shellspec_syntax_failure_message + 'expected $1 is valid as a funcname' + shellspec_syntax_failure_message - 'expected $1 is not valid as a funcname' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match diff --git a/lib/core/matchers/be/variable.sh b/lib/core/matchers/be/variable.sh index b31dd93e..62b6bd54 100644 --- a/lib/core/matchers/be/variable.sh +++ b/lib/core/matchers/be/variable.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_be_defined' shellspec_syntax 'shellspec_matcher_be_undefined' @@ -10,15 +10,12 @@ shellspec_matcher_be_defined() { [ ${SHELLSPEC_SUBJECT+x} ] } - shellspec_matcher__failure_message() { - shellspec_putsn "expected: defined (set)" - shellspec_putsn " got: $1" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected: undefined (unset)" - shellspec_putsn " got: $1" - } + shellspec_syntax_failure_message + \ + 'expected: defined (set)' \ + ' got: $1' + shellspec_syntax_failure_message - \ + 'expected: undefined (unset)' \ + ' got: $1' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match @@ -29,15 +26,12 @@ shellspec_matcher_be_undefined() { ! [ ${SHELLSPEC_SUBJECT+x} ] } - shellspec_matcher__failure_message() { - shellspec_putsn "expected: undefined (unset)" - shellspec_putsn " got: $1" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected: defined (set)" - shellspec_putsn " got: $1" - } + shellspec_syntax_failure_message + \ + 'expected: undefined (unset)' \ + ' got: $1' + shellspec_syntax_failure_message - \ + 'expected: defined (set)' \ + ' got: $1' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match @@ -48,15 +42,12 @@ shellspec_matcher_be_present() { [ "${SHELLSPEC_SUBJECT:-}" ] } - shellspec_matcher__failure_message() { - shellspec_putsn "expected: present (non-zero length string)" - shellspec_putsn " got: $1" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected: blank (unset or zero length string)" - shellspec_putsn " got: $1" - } + shellspec_syntax_failure_message + \ + 'expected: present (non-zero length string)' \ + ' got: $1' + shellspec_syntax_failure_message - \ + 'expected: blank (unset or zero length string)' \ + ' got: $1' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match @@ -67,15 +58,12 @@ shellspec_matcher_be_blank() { ! [ "${SHELLSPEC_SUBJECT:-}" ] } - shellspec_matcher__failure_message() { - shellspec_putsn "expected: blank (unset or zero length string)" - shellspec_putsn " got: $1" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected: present (non-zero length string)" - shellspec_putsn " got: $1" - } + shellspec_syntax_failure_message + \ + 'expected: blank (unset or zero length string)' \ + ' got: $1' + shellspec_syntax_failure_message - \ + 'expected: present (non-zero length string)' \ + ' got: $1' shellspec_syntax_param count [ $# -eq 0 ] || return 0 shellspec_matcher_do_match diff --git a/lib/core/matchers/end_with.sh b/lib/core/matchers/end_with.sh index d3671966..abe362c6 100644 --- a/lib/core/matchers/end_with.sh +++ b/lib/core/matchers/end_with.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_end_with' shellspec_syntax_compound 'shellspec_matcher_end' @@ -11,13 +11,8 @@ shellspec_matcher_end_with() { return 1 } - shellspec_matcher__failure_message() { - shellspec_putsn "expected $1 to end with $2" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected $1 not to end with $2" - } + shellspec_syntax_failure_message + 'expected $1 to end with $2' + shellspec_syntax_failure_message - 'expected $1 not to end with $2' shellspec_syntax_param count [ $# -eq 1 ] || return 0 shellspec_matcher_do_match "$@" diff --git a/lib/core/matchers/equal.sh b/lib/core/matchers/equal.sh index cb7b009e..8e885fe6 100644 --- a/lib/core/matchers/equal.sh +++ b/lib/core/matchers/equal.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_equal' shellspec_syntax_alias 'shellspec_matcher_eq' 'shellspec_matcher_equal' @@ -11,15 +11,12 @@ shellspec_matcher_equal() { return 0 } - shellspec_matcher__failure_message() { - shellspec_putsn "expected: $2" - shellspec_putsn " got: $1" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected: not equal $2" - shellspec_putsn " got: $1" - } + shellspec_syntax_failure_message + \ + 'expected: $2' \ + ' got: $1' + shellspec_syntax_failure_message - \ + 'expected: not equal $2' \ + ' got: $1' shellspec_syntax_param count [ $# -eq 1 ] || return 0 shellspec_matcher_do_match "$@" diff --git a/lib/core/matchers/has/stat.sh b/lib/core/matchers/has/stat.sh index d9a2b2be..29f137a8 100644 --- a/lib/core/matchers/has/stat.sh +++ b/lib/core/matchers/has/stat.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_has_setgid' shellspec_syntax 'shellspec_matcher_has_setuid' @@ -8,13 +8,8 @@ shellspec_matcher_has_setgid() { [ -g "${SHELLSPEC_SUBJECT:-}" ] } - shellspec_matcher__failure_message() { - shellspec_putsn "The $1 not have setgid flag" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "The $1 has setgid flag" - } + shellspec_syntax_failure_message + 'The $1 not have setgid flag' + shellspec_syntax_failure_message - 'The $1 has setgid flag' [ "${1:-}" = "flag" ] && shift shellspec_syntax_param count [ $# -eq 0 ] || return 0 @@ -26,13 +21,8 @@ shellspec_matcher_has_setuid() { [ -u "${SHELLSPEC_SUBJECT:-}" ] } - shellspec_matcher__failure_message() { - shellspec_putsn "The $1 not have setuid flag" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "The $1 has setuid flag" - } + shellspec_syntax_failure_message + 'The $1 not have setuid flag' + shellspec_syntax_failure_message - 'The $1 has setuid flag' [ "${1:-}" = "flag" ] && shift shellspec_syntax_param count [ $# -eq 0 ] || return 0 diff --git a/lib/core/matchers/include.sh b/lib/core/matchers/include.sh index 112f48d5..5da17557 100644 --- a/lib/core/matchers/include.sh +++ b/lib/core/matchers/include.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_include' @@ -9,13 +9,8 @@ shellspec_matcher_include() { shellspec_includes "$SHELLSPEC_SUBJECT" "$SHELLSPEC_EXPECT" } - shellspec_matcher__failure_message() { - shellspec_putsn "expected $1 to include $2" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected $1 not to include $2" - } + shellspec_syntax_failure_message + 'expected $1 to include $2' + shellspec_syntax_failure_message - 'expected $1 not to include $2' shellspec_syntax_param count [ $# -eq 1 ] || return 0 shellspec_matcher_do_match "$@" diff --git a/lib/core/matchers/match.sh b/lib/core/matchers/match.sh index f199b8a2..08a88063 100644 --- a/lib/core/matchers/match.sh +++ b/lib/core/matchers/match.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_match' @@ -22,13 +22,8 @@ shellspec_matcher_deprecated_match() { shellspec_match "$SHELLSPEC_SUBJECT" "$1" } - shellspec_matcher__failure_message() { - shellspec_putsn "expected $1 to match $2" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected $1 not to match $2" - } + shellspec_syntax_failure_message + 'expected $1 to match $2' + shellspec_syntax_failure_message - 'expected $1 not to match $2' shellspec_syntax_param count [ $# -eq 1 ] || return 0 shellspec_matcher_do_match "$@" @@ -42,13 +37,8 @@ shellspec_matcher_match_pattern() { shellspec_match_pattern "$SHELLSPEC_SUBJECT" "$1" } - shellspec_matcher__failure_message() { - shellspec_putsn "expected $1 to match pattern $2" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected $1 not to match pattern $2" - } + shellspec_syntax_failure_message + 'expected $1 to match pattern $2' + shellspec_syntax_failure_message - 'expected $1 not to match pattern $2' shellspec_syntax_param count [ $# -eq 1 ] || return 0 shellspec_matcher_do_match "$@" diff --git a/lib/core/matchers/satisfy.sh b/lib/core/matchers/satisfy.sh index 1d34918a..96dcd379 100644 --- a/lib/core/matchers/satisfy.sh +++ b/lib/core/matchers/satisfy.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_satisfy' @@ -34,13 +34,8 @@ shellspec_matcher_satisfy() { return "$1" } - shellspec_matcher__failure_message() { - shellspec_putsn "expected $1 satisfies $2" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected $1 does not satisfy $2" - } + shellspec_syntax_failure_message + 'expected $1 satisfies $2' + shellspec_syntax_failure_message - 'expected $1 does not satisfy $2' shellspec_syntax_param count [ $# -gt 0 ] || return 0 shellspec_matcher_do_match "$@" diff --git a/lib/core/matchers/start_with.sh b/lib/core/matchers/start_with.sh index ac285cb2..dd234ee2 100644 --- a/lib/core/matchers/start_with.sh +++ b/lib/core/matchers/start_with.sh @@ -1,4 +1,4 @@ -#shellcheck shell=sh +#shellcheck shell=sh disable=SC2016 shellspec_syntax 'shellspec_matcher_start_with' shellspec_syntax_compound 'shellspec_matcher_start' @@ -11,13 +11,8 @@ shellspec_matcher_start_with() { return 1 } - shellspec_matcher__failure_message() { - shellspec_putsn "expected $1 to start with $2" - } - - shellspec_matcher__failure_message_when_negated() { - shellspec_putsn "expected $1 not to start with $2" - } + shellspec_syntax_failure_message + 'expected $1 to start with $2' + shellspec_syntax_failure_message - 'expected $1 not to start with $2' shellspec_syntax_param count [ $# -eq 1 ] || return 0 shellspec_matcher_do_match "$@" diff --git a/lib/core/syntax.sh b/lib/core/syntax.sh index 2b142f48..27c7416c 100644 --- a/lib/core/syntax.sh +++ b/lib/core/syntax.sh @@ -88,3 +88,16 @@ shellspec_syntax_param_check() { shift "$@" } + +shellspec_syntax_failure_message() { + case $1 in + +) SHELLSPEC_EVAL="shellspec_matcher__failure_message() {" ;; + -) SHELLSPEC_EVAL="shellspec_matcher__failure_message_when_negated() {" ;; + esac + shift + while [ $# -gt 0 ]; do + SHELLSPEC_EVAL="${SHELLSPEC_EVAL}${SHELLSPEC_LF}shellspec_putsn \"$1\"" + shift + done + eval "${SHELLSPEC_EVAL}${SHELLSPEC_LF}}" +}