summaryrefslogtreecommitdiffstats
path: root/test/test-status.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/test-status.sh')
-rwxr-xr-xtest/test-status.sh145
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