From 17b487558733c1b4d6ce7d4bafbb24cd211f1552 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Tue, 18 Jun 2024 13:43:40 +0200 Subject: [PATCH 1/4] fix: assert_line_count on multiline --- src/assert.sh | 8 ++++++-- src/main.sh | 2 +- tests/acceptance/bashunit_direct_fn_call_test.sh | 8 ++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/assert.sh b/src/assert.sh index 8fa00ef7..17e8a5e2 100755 --- a/src/assert.sh +++ b/src/assert.sh @@ -318,8 +318,9 @@ function assert_greater_or_equal_than() { function assert_line_count() { local expected="$1" - local input_str="$2" - local label="${3:-$(helper::normalize_test_function_name "${FUNCNAME[1]}")}" + local input_arr=("${@:2}") + local input_str + input_str=$(printf '%s\n' "${input_arr[@]}") if [ -z "$input_str" ]; then local actual=0 @@ -331,6 +332,9 @@ function assert_line_count() { fi if [[ "$expected" != "$actual" ]]; then + local label + label="$(helper::normalize_test_function_name "${FUNCNAME[0]}")" + state::add_assertions_failed console_results::print_failed_test "${label}" "${input_str}"\ "to contain number of lines equal to" "${expected}"\ diff --git a/src/main.sh b/src/main.sh index be60cc9d..326a22f7 100644 --- a/src/main.sh +++ b/src/main.sh @@ -24,7 +24,7 @@ function main::exec_assert() { fi fi - "$assert_fn" "${args[@]}" "$assert_fn" + "$assert_fn" "${args[@]}" if [[ "$(state::get_tests_failed)" -gt 0 ]] || [[ "$(state::get_assertions_failed)" -gt 0 ]]; then exit 1 diff --git a/tests/acceptance/bashunit_direct_fn_call_test.sh b/tests/acceptance/bashunit_direct_fn_call_test.sh index 744da99e..b8da50ef 100644 --- a/tests/acceptance/bashunit_direct_fn_call_test.sh +++ b/tests/acceptance/bashunit_direct_fn_call_test.sh @@ -20,6 +20,14 @@ function test_bashunit_direct_fn_call_without_assert_prefix_passes() { assert_successful_code } +function test_bashunit_assert_line_count() { + local actual="first line +second line" + + ./bashunit -a line_count 2 "$actual" + assert_successful_code +} + function test_bashunit_direct_fn_call_failure() { local expected="foo" local actual="bar" From 492550140eaa76707fb11f8fc88f9b4de9eaf29a Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Tue, 18 Jun 2024 13:51:38 +0200 Subject: [PATCH 2/4] fix: unit tests assert_line_count --- src/assert.sh | 2 +- ...n_call_test_sh.test_bashunit_direct_fn_call_failure.snapshot | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assert.sh b/src/assert.sh index 17e8a5e2..ba5f5dca 100755 --- a/src/assert.sh +++ b/src/assert.sh @@ -333,7 +333,7 @@ function assert_line_count() { if [[ "$expected" != "$actual" ]]; then local label - label="$(helper::normalize_test_function_name "${FUNCNAME[0]}")" + label="$(helper::normalize_test_function_name "${FUNCNAME[1]}")" state::add_assertions_failed console_results::print_failed_test "${label}" "${input_str}"\ diff --git a/tests/acceptance/snapshots/bashunit_direct_fn_call_test_sh.test_bashunit_direct_fn_call_failure.snapshot b/tests/acceptance/snapshots/bashunit_direct_fn_call_test_sh.test_bashunit_direct_fn_call_failure.snapshot index 31715ffc..bbbd30d6 100644 --- a/tests/acceptance/snapshots/bashunit_direct_fn_call_test_sh.test_bashunit_direct_fn_call_failure.snapshot +++ b/tests/acceptance/snapshots/bashunit_direct_fn_call_test_sh.test_bashunit_direct_fn_call_failure.snapshot @@ -1,3 +1,3 @@ -✗ Failed: assert_equals +✗ Failed: Main::exec assert Expected 'foo' but got 'bar' From 36a1802bd184d44a0dc4d42ff72b8a2f2f5df9a1 Mon Sep 17 00:00:00 2001 From: Fabrizio Fasanando Date: Tue, 18 Jun 2024 14:04:01 +0200 Subject: [PATCH 3/4] refactor: add test case for string with explicit line break --- tests/acceptance/bashunit_direct_fn_call_test.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/acceptance/bashunit_direct_fn_call_test.sh b/tests/acceptance/bashunit_direct_fn_call_test.sh index b8da50ef..93b3f2eb 100644 --- a/tests/acceptance/bashunit_direct_fn_call_test.sh +++ b/tests/acceptance/bashunit_direct_fn_call_test.sh @@ -28,6 +28,15 @@ second line" assert_successful_code } +function test_bashunit_assert_line_count_with_explicit_line_break() { + local actual="first line +second line +\n four line" + + ./bashunit -a line_count 4 "$actual" + assert_successful_code +} + function test_bashunit_direct_fn_call_failure() { local expected="foo" local actual="bar" From 77bd29fa7426e54338916c89e0da2cc4803df233 Mon Sep 17 00:00:00 2001 From: Fabrizio Fasanando Date: Tue, 18 Jun 2024 16:16:15 +0200 Subject: [PATCH 4/4] refactor: Improve `test_bashunit_assert_line_count` test --- tests/acceptance/bashunit_direct_fn_call_test.sh | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/tests/acceptance/bashunit_direct_fn_call_test.sh b/tests/acceptance/bashunit_direct_fn_call_test.sh index 93b3f2eb..6962aa58 100644 --- a/tests/acceptance/bashunit_direct_fn_call_test.sh +++ b/tests/acceptance/bashunit_direct_fn_call_test.sh @@ -22,16 +22,8 @@ function test_bashunit_direct_fn_call_without_assert_prefix_passes() { function test_bashunit_assert_line_count() { local actual="first line -second line" - - ./bashunit -a line_count 2 "$actual" - assert_successful_code -} - -function test_bashunit_assert_line_count_with_explicit_line_break() { - local actual="first line -second line -\n four line" + \n +four line" ./bashunit -a line_count 4 "$actual" assert_successful_code