| #!/usr/bin/env bash |
| |
| # Fail a test with the specified message. |
| # |
| # Args: |
| # err_msg: The message to print to stderr. |
| # |
| # Outputs: |
| # stdout: None. |
| # stderr: The error message. |
| fail() { |
| local err_msg="${1:-}" |
| if [[ -z "${err_msg:-}" ]]; then |
| err_msg="Unspecified error occurred." |
| fi |
| echo >&2 "${err_msg}" |
| exit 1 |
| } |
| |
| make_err_msg() { |
| local err_msg="${1}" |
| local prefix="${2:-}" |
| if [[ -n "${prefix:-}" ]]; then |
| err_msg="${prefix} ${err_msg}" |
| fi |
| echo "${err_msg}" |
| } |
| |
| |
| # Asserts that the actual value equals the expected value. |
| # |
| # Args: |
| # expected: The expected value. |
| # actual: The actual value. |
| # err_msg: Optional. The error message to print if the assertion fails. |
| # |
| # Outputs: |
| # stdout: None. |
| # stderr: None. |
| assert_equal() { |
| local expected="${1}" |
| local actual="${2}" |
| local err_msg |
| err_msg="$(\ |
| make_err_msg \ |
| "Expected to be equal. expected: ${expected}, actual: ${actual}" "${3:-}" \ |
| )" |
| if [[ "${expected}" != "${actual}" ]]; then |
| fail "${err_msg}" |
| fi |
| } |
| |
| # Asserts that the actual value contains the specified regex pattern. |
| # |
| # Args: |
| # pattern: The expected pattern. |
| # actual: The actual value. |
| # err_msg: Optional. The error message to print if the assertion fails. |
| # |
| # Outputs: |
| # stdout: None. |
| # stderr: None. |
| assert_match() { |
| local pattern=${1} |
| local actual="${2}" |
| local err_msg |
| err_msg="$(\ |
| make_err_msg \ |
| "Expected to match. pattern: ${pattern}, actual: ${actual}" "${3:-}" \ |
| )" |
| if [[ ! "${actual}" =~ ${pattern} ]]; then |
| fail "${err_msg}" |
| fi |
| } |
| |
| # Asserts that the actual value does not contain the specified regex pattern. |
| # |
| # Args: |
| # pattern: The expected pattern. |
| # actual: The actual value. |
| # err_msg: Optional. The error message to print if the assertion fails. |
| # |
| # Outputs: |
| # stdout: None. |
| # stderr: None. |
| assert_no_match() { |
| local pattern=${1} |
| local actual="${2}" |
| local err_msg |
| err_msg="$(\ |
| make_err_msg \ |
| "Expected not to match. pattern: ${pattern}, actual: ${actual}" "${3:-}" \ |
| )" |
| if [[ "${actual}" =~ ${pattern} ]]; then |
| fail "${err_msg}" |
| fi |
| # Because this is a negative test, we need to end on a positive note if all is well. |
| echo "" |
| } |