diff options
Diffstat (limited to 'test/test-status.sh')
-rwxr-xr-x | test/test-status.sh | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/test/test-status.sh b/test/test-status.sh new file mode 100755 index 0000000..56a2716 --- /dev/null +++ b/test/test-status.sh @@ -0,0 +1,145 @@ +#!/bin/bash +scriptDir="$(cd "$(dirname "$0")"; pwd)" + +source "$scriptDir/sonar-base.sh" + +test_prefix_and_suffix() { + status=""" + M unstaged-modified + D unstaged-deleted +M staged-modified +A staged-added +D staged-deleted +C staged-copied +R staged-renamed +MM staged-and-unstaged-modified +UD deleted-them-conflicted +AU added-us-conflicted +UU modified-both-conflicted +?? untacked +""" + + prefix="_" + suffix="-" + + assertEquals "line:${LINENO}" "1_D-2_M-"\ + "$(unstaged_status "$status" "$prefix" "$suffix")" + + assertEquals "line:${LINENO}" "1_A-1_D-2_M-1_R-1_C-"\ + "$(staged_status "$status" "$prefix" "$suffix")" + + assertEquals "line:${LINENO}" "1_U-1_T-1_B-"\ + "$(conflicted_status "$status" "$prefix" "$suffix")" + + assertEquals "line:${LINENO}" "1_?-"\ + "$(untracked_status "$status" "$prefix" "$suffix")" +} + +test_basic_unstaged_options() { + status=""" + M modified-and-unstaged + D deleted-and-unstaged + A impossible-added-and-unstaged-(as-added-and-unstaged-is-untracked) + C impossible-copied-and-unstaged-(as-copied-and-unstaged-is-untracked) + R impossible-renamed-and-unstaged-(as-renamed-and-unstaged-is-untracked) + U impossible-updated-but-unmerged + ! impossible-ignored-without-!-in-position-1 + ? impossible-untracked-without-?-in-position-1 + empty-spaces-mean-nothing + """ + assertEquals "line:${LINENO} staged status failed match" "" "$(staged_status "$status")" + assertEquals "line:${LINENO} untracked status failed match" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO} unstaged status failed match"\ + "1D1M" "$(unstaged_status "$status")" + assertEquals "line:${LINENO} conflicted status failed match" "" "$(conflicted_status "$status")" +} + +test_basic_staged_options() { + status=""" +A added-and-staged + """ + assertEquals "line:${LINENO} staged status failed match"\ + "1A" "$(staged_status "$status")" + assertEquals "line:${LINENO} untracked status failed match" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO} unstaged status failed match" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO} conflicted status failed match" "" "$(conflicted_status "$status")" + + status=""" +M modified-and-staged + """ + assertEquals "line:${LINENO} staged status failed match"\ + "1M" "$(staged_status "$status")" + assertEquals "line:${LINENO} untracked status failed match" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO} unstaged status failed match" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO} conflicted status failed match" "" "$(conflicted_status "$status")" + + status=""" +D deleted-and-staged + """ + assertEquals "line:${LINENO} staged status failed match"\ + "1D" "$(staged_status "$status")" + assertEquals "line:${LINENO} untracked status failed match" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO} unstaged status failed match" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO} conflicted status failed match" "" "$(conflicted_status "$status")" + + status=""" +C copied-and-staged + """ + assertEquals "line:${LINENO} staged status failed match"\ + "1C" "$(staged_status "$status")" + assertEquals "line:${LINENO} untracked status failed match" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO} unstaged status failed match" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO} conflicted status failed match" "" "$(conflicted_status "$status")" + + status=""" +R renamed-and-staged + """ + assertEquals "line:${LINENO} staged status failed match"\ + "1R" "$(staged_status "$status")" + assertEquals "line:${LINENO} untracked status failed match" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO} unstaged status failed match" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO} conflicted status failed match" "" "$(conflicted_status "$status")" + + status=""" +U impossible-unmerged-without-a-character-in-position-2 +? impossible-untracked-without-?-in-position-2 +! impossible-ignored-without-!-in-position-2 + empty-spaces-do-nothing + """ + assertEquals "line:${LINENO} staged status failed match" "" "$(staged_status "$status")" + assertEquals "line:${LINENO} untracked status failed match" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO} unstaged status failed match" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO} conflicted status failed match" "" "$(conflicted_status "$status")" +} + +test_conflicts() { + status=""" +UD unmerged-deleted-by-them +UA unmerged-added-by-them + """ + assertEquals "line:${LINENO}" "" "$(staged_status "$status")" + assertEquals "line:${LINENO}" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO}" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO}" "2T" "$(conflicted_status "$status")" + + status=""" +AU unmerged-added-by-us +DU unmerged-deleted-by-us + """ + assertEquals "line:${LINENO}" "" "$(staged_status "$status")" + assertEquals "line:${LINENO}" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO}" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO}" "2U" "$(conflicted_status "$status")" + + status=""" +AA unmerged-both-added +DD unmerged-both-deleted +UU unmerged-both-modified + """ + assertEquals "line:${LINENO}" "" "$(staged_status "$status")" + assertEquals "line:${LINENO}" "" "$(untracked_status "$status")" + assertEquals "line:${LINENO}" "" "$(unstaged_status "$status")" + assertEquals "line:${LINENO}" "3B" "$(conflicted_status "$status")" +} + +. ./shunit/shunit2 |