From e16ec10cb11e80affdf591fd3f8c70de79b28789 Mon Sep 17 00:00:00 2001 From: katarn Date: Tue, 5 Sep 2023 19:18:29 +0200 Subject: [PATCH 1/5] Add colors to passed and failed messages --- bashunit | 3 +++ src/assert.sh | 4 ++-- src/colors.sh | 5 +++++ tests/unit/assert_test.sh | 8 ++++---- 4 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 src/colors.sh diff --git a/bashunit b/bashunit index 39222c98..f2813ec6 100755 --- a/bashunit +++ b/bashunit @@ -2,6 +2,9 @@ readonly BASH_UNIT_ROOT_DIR="$(dirname "${BASH_SOURCE[0]}")" +# Load color configuration +source "$BASH_UNIT_ROOT_DIR/src/colors.sh" + # Load all assert functions source "$BASH_UNIT_ROOT_DIR/src/assert.sh" diff --git a/src/assert.sh b/src/assert.sh index 044d63bc..da6bdc4d 100755 --- a/src/assert.sh +++ b/src/assert.sh @@ -30,11 +30,11 @@ assertEquals() { if [[ "$expected" != "$actual" ]]; then FAILED=true - printf "❌ %s failed:\\n Expected '%s'\\n but got '%s'\\n" "$label" "$expected" "$actual" + printf "❌ ${COLOR_FAILED}Failed${COLOR_DEFAULT}: %s\\n Expected '%s'\\n but got '%s'\\n" "$label" "$expected" "$actual" exit 1 else ((TOTAL_TESTS++)) - printf "✔️ Passed: %s\\n" "$label" + printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: %s\\n" "$label" fi } diff --git a/src/colors.sh b/src/colors.sh new file mode 100644 index 00000000..a91ce4df --- /dev/null +++ b/src/colors.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +export COLOR_FAILED="\e[31m" +export COLOR_PASSED="\e[32m" +export COLOR_DEFAULT="\e[0m" \ No newline at end of file diff --git a/tests/unit/assert_test.sh b/tests/unit/assert_test.sh index 3a0852ad..af04fd89 100644 --- a/tests/unit/assert_test.sh +++ b/tests/unit/assert_test.sh @@ -1,15 +1,15 @@ #!/bin/bash function test_successful_assertEquals() { - assertEquals "✔️ Passed: Successful assertEquals" "$(assertEquals "1" "1")" + assertEquals "$(printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: Successful assertEquals")" "$(assertEquals "1" "1")" } function test_unsuccessful_assertEquals() { - assertEquals "❌ Unsuccessful assertEquals failed: + assertEquals "$(printf "❌ ${COLOR_FAILED}Failed${COLOR_DEFAULT}: Unsuccessful assertEquals Expected '1' - but got '2'" "$(assertEquals "1" "2")" + but got '2'")" "$(assertEquals "1" "2")" } function testCamelCase() { - assertEquals "✔️ Passed: CamelCase" "$(assertEquals "1" "1")" + assertEquals "$(printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: CamelCase")" "$(assertEquals "1" "1")" } From 306d7d504481a662be2d6bbf513454a65db368bf Mon Sep 17 00:00:00 2001 From: katarn Date: Tue, 5 Sep 2023 19:27:13 +0200 Subject: [PATCH 2/5] Add test for assertContains --- tests/unit/assert_test.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/unit/assert_test.sh b/tests/unit/assert_test.sh index af04fd89..7ec4e3db 100644 --- a/tests/unit/assert_test.sh +++ b/tests/unit/assert_test.sh @@ -13,3 +13,7 @@ function test_unsuccessful_assertEquals() { function testCamelCase() { assertEquals "$(printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: CamelCase")" "$(assertEquals "1" "1")" } + +function test_assert_contains() { + assertContains "GNU/Linux" "Linux" +} \ No newline at end of file From f794a676e79cc3a1afb387c02caba92c835bc490 Mon Sep 17 00:00:00 2001 From: Emmanuel Valverde Ramos Date: Tue, 5 Sep 2023 19:40:41 +0200 Subject: [PATCH 3/5] wip --- .editorconfig | 10 ++++++++++ README.md | 2 +- src/assert.sh | 17 +++++++++++++++++ tests/unit/assert_test.sh | 4 ++-- 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..d48eca1f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*.sh] +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +charset = utf-8 + +trim_trailing_whitespace = true \ No newline at end of file diff --git a/README.md b/README.md index 239d04a5..cdb52244 100644 --- a/README.md +++ b/README.md @@ -49,5 +49,5 @@ To update a git-submodule is as simple as: ### Run test from the library ```bash -./bashunit ./tests/**/* +./bashunit ./tests/**/*.sh ``` \ No newline at end of file diff --git a/src/assert.sh b/src/assert.sh index da6bdc4d..792521be 100755 --- a/src/assert.sh +++ b/src/assert.sh @@ -4,6 +4,8 @@ export TEST=true export assertEquals +export assertContains + TOTAL_TESTS=0 FAILED=false @@ -37,6 +39,21 @@ assertEquals() { printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: %s\\n" "$label" fi } +assertContains() { + local expected="$1" + local actual="$2" + local label="${3:-$(transformTestFunctionName ${FUNCNAME[1]})}" + + case "$actual" in + *"$expected"*) + ((TOTAL_TESTS++)) + printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: %s\\n" "$label";; + *) + FAILED=true + printf "❌ ${COLOR_FAILED}Failed${COLOR_DEFAULT}: %s\\n Expected to contain '%s'\\n but got '%s'\\n" "$label" "$expected" "$actual" + exit 1;; + esac +} renderResult() { echo "" diff --git a/tests/unit/assert_test.sh b/tests/unit/assert_test.sh index 7ec4e3db..48edc34d 100644 --- a/tests/unit/assert_test.sh +++ b/tests/unit/assert_test.sh @@ -15,5 +15,5 @@ function testCamelCase() { } function test_assert_contains() { - assertContains "GNU/Linux" "Linux" -} \ No newline at end of file + assertContains "Linux" "GNU/Linux" +} From c4ca07a2d9d166732a411c6f27fd3b7dee57e5f9 Mon Sep 17 00:00:00 2001 From: katarn Date: Tue, 5 Sep 2023 19:58:00 +0200 Subject: [PATCH 4/5] Final touches --- src/assert.sh | 9 +++++---- tests/unit/assert_test.sh | 10 ++++++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/assert.sh b/src/assert.sh index 792521be..1c6ac611 100755 --- a/src/assert.sh +++ b/src/assert.sh @@ -3,7 +3,6 @@ export TEST=true export assertEquals - export assertContains TOTAL_TESTS=0 @@ -47,11 +46,13 @@ assertContains() { case "$actual" in *"$expected"*) ((TOTAL_TESTS++)) - printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: %s\\n" "$label";; + printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: %s\\n" "$label" + ;; *) FAILED=true - printf "❌ ${COLOR_FAILED}Failed${COLOR_DEFAULT}: %s\\n Expected to contain '%s'\\n but got '%s'\\n" "$label" "$expected" "$actual" - exit 1;; + printf "❌ ${COLOR_FAILED}Failed${COLOR_DEFAULT}: %s\\n Expected '%s'\\n to contain '%s'\\n" "$label" "$actual" "$expected" + exit 1 + ;; esac } diff --git a/tests/unit/assert_test.sh b/tests/unit/assert_test.sh index 48edc34d..bbee63e8 100644 --- a/tests/unit/assert_test.sh +++ b/tests/unit/assert_test.sh @@ -14,6 +14,12 @@ function testCamelCase() { assertEquals "$(printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: CamelCase")" "$(assertEquals "1" "1")" } -function test_assert_contains() { - assertContains "Linux" "GNU/Linux" +function test_successful_assertContains() { + assertEquals "$(printf "✔️ ${COLOR_PASSED}Passed${COLOR_DEFAULT}: Successful assertContains")" "$(assertContains "Linux" "GNU/Linux")" +} + +function test_unsuccessful_assertContains() { + assertEquals "$(printf "❌ ${COLOR_FAILED}Failed${COLOR_DEFAULT}: Unsuccessful assertContains + Expected 'GNU/Linux' + to contain 'Unix'")" "$(assertContains "Unix" "GNU/Linux")" } From 6b41c977c9f2cce654c4069234eb2745f3bde6b4 Mon Sep 17 00:00:00 2001 From: katarn Date: Tue, 5 Sep 2023 20:02:40 +0200 Subject: [PATCH 5/5] Merge main --- example/tools/bashunit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/tools/bashunit b/example/tools/bashunit index c3b63b7a..bc35c410 160000 --- a/example/tools/bashunit +++ b/example/tools/bashunit @@ -1 +1 @@ -Subproject commit c3b63b7a97347a11318a0cc7fbbe1e2ec53df977 +Subproject commit bc35c4108b60102a7ea427762c6000bec3024467