summaryrefslogtreecommitdiffstats
path: root/test/test-files.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/test-files.sh')
-rwxr-xr-xtest/test-files.sh274
1 files changed, 274 insertions, 0 deletions
diff --git a/test/test-files.sh b/test/test-files.sh
new file mode 100755
index 0000000..fff5144
--- /dev/null
+++ b/test/test-files.sh
@@ -0,0 +1,274 @@
+#!/bin/bash
+scriptDir="$(cd "$(dirname "$0")"; pwd)"
+
+source "$scriptDir/sonar-base.sh"
+
+tmpfile=""
+
+cd_to_tmp() {
+ tmpfile="/tmp/git-prompt-tests-$(time_now)$1"
+ mkdir -p "$tmpfile"
+ cd "$tmpfile"
+}
+
+rm_tmp() {
+ cd $scriptDir
+ rm -rf /tmp/git-prompt-tests*
+}
+
+test_untracked_files() {
+ cd_to_tmp
+ git init --quiet
+
+ assertEquals "" "$(untracked_status)"
+
+ touch foo
+ assertEquals "1?" "$(untracked_status)"
+
+ git add --all
+ assertEquals "" "$(untracked_status)"
+
+ rm_tmp
+}
+
+test_unstaged_modified_files() {
+ cd_to_tmp
+ git init --quiet
+
+ assertEquals "" "$(unstaged_status)"
+
+ touch foo
+ touch bar
+ git add --all
+ git commit -m "foo and bar" >/dev/null
+
+ echo "foo" >> foo
+ assertEquals "1M" "$(unstaged_status)"
+
+ echo "bar" >> bar
+ assertEquals "2M" "$(unstaged_status)"
+
+ rm_tmp
+}
+
+test_unstaged_deleted_files() {
+ cd_to_tmp
+ git init --quiet
+
+ assertEquals "" "$(unstaged_status)"
+
+ touch foo
+ touch bar
+ git add --all
+ git commit -m "foo and bar" >/dev/null
+
+ rm foo
+ assertEquals "1D" "$(unstaged_status)"
+
+ rm bar
+ assertEquals "2D" "$(unstaged_status)"
+
+ rm_tmp
+}
+
+test_staged_added_files() {
+ cd_to_tmp
+ git init --quiet
+
+ assertEquals "" "$(staged_status)"
+
+ touch foo
+ git add --all
+ assertEquals "1A" "$(staged_status)"
+
+ touch bar
+ git add --all
+ assertEquals "2A" "$(staged_status)"
+
+ rm_tmp
+}
+
+test_staged_modified_files() {
+ cd_to_tmp
+ git init --quiet
+
+ assertEquals "" "$(staged_status)"
+
+ touch foo
+ touch bar
+ git add --all
+ git commit -m "foo and bar" >/dev/null
+
+ echo "foo" >> foo
+ git add --all
+ assertEquals "1M" "$(staged_status)"
+
+ echo "bar" >> bar
+ git add --all
+ assertEquals "2M" "$(staged_status)"
+
+ rm_tmp
+}
+
+test_staged_deleted_files() {
+ cd_to_tmp
+ git init --quiet
+
+ assertEquals "" "$(staged_status)"
+
+ touch foo
+ touch bar
+ git add --all
+ git commit -m "foo and bar" >/dev/null
+
+ rm foo
+ git add --all
+ assertEquals "1D" "$(staged_status)"
+
+ rm bar
+ git add --all
+ assertEquals "2D" "$(staged_status)"
+
+ rm_tmp
+}
+
+test_staged_renamed_files() {
+ cd_to_tmp
+ git init --quiet
+
+ assertEquals "" "$(staged_status)"
+
+ touch foo
+ touch bar
+ git add --all
+ git commit -m "foo and bar" >/dev/null
+
+ mv foo foo2
+ git add --all
+ assertEquals "1R" "$(staged_status)"
+
+ mv bar bar2
+ git add --all
+ assertEquals "2R" "$(staged_status)"
+
+ rm_tmp
+}
+
+test_conflicted_both_changes() {
+ cd_to_tmp
+ git init --quiet
+
+ git checkout -b foo --quiet
+ echo "foo" >> foo
+ git add --all
+ git commit -m "foo" --quiet
+
+ git checkout -b foo2 --quiet
+ echo "bar" >> foo
+ git add --all
+ git commit -m "bar" --quiet
+
+ git checkout foo --quiet
+ echo "foo2" >> foo
+ git add --all
+ git commit -m "foo2" --quiet
+
+ assertEquals "" "$(conflicted_status)"
+
+ git merge foo2 >/dev/null
+
+ assertEquals "1B" "$(conflicted_status)"
+
+ rm_tmp
+}
+
+test_conflicted_them_changes() {
+ cd_to_tmp
+ git init --quiet
+
+ git checkout -b foo --quiet
+ echo "foo" >> foo
+ git add --all
+ git commit -m "foo" --quiet
+
+ git checkout -b foo2 --quiet
+ rm foo
+ git add --all
+ git commit -m "delete foo" --quiet
+
+ git checkout foo --quiet
+ echo "foo2" >> foo
+ git add --all
+ git commit -m "foo2" --quiet
+
+ assertEquals "" "$(conflicted_status)"
+
+ git merge foo2 >/dev/null
+
+ assertEquals "1T" "$(conflicted_status)"
+
+ rm_tmp
+}
+
+test_conflicted_us_changes() {
+ cd_to_tmp
+ git init --quiet
+
+ git checkout -b foo --quiet
+ echo "foo" >> foo
+ git add --all
+ git commit -m "foo" --quiet
+
+ git checkout -b foo2 --quiet
+ echo "bar" >> foo
+ git add --all
+ git commit -m "bar" --quiet
+
+ git checkout foo --quiet
+ rm foo
+ git add --all
+ git commit -m "delete foo" --quiet
+
+ assertEquals "" "$(conflicted_status)"
+
+ git merge foo2 >/dev/null
+
+ assertEquals "1U" "$(conflicted_status)"
+
+ rm_tmp
+}
+
+test_is_dirty() {
+ cd_to_tmp
+
+ assertFalse "not in repo" is_dirty
+
+ git init --quiet
+ assertFalse "in repo and clean" is_dirty
+
+ touch foo
+ assertTrue "untracked files" is_dirty
+
+ mkdir sneakSubDir
+ cd sneakSubDir
+ assertTrue "untracked files while in an empty sub dir" is_dirty
+
+ cd ../
+
+ git add --all
+ assertTrue "staged addition files" is_dirty
+
+ git commit -m "inital commit" --quiet
+
+ assertFalse "commited and clean" is_dirty
+
+ echo "foo" >> foo
+ assertTrue "modified file unstaged" is_dirty
+
+ git add --all
+ assertTrue "modified file staged" is_dirty
+
+ rm_tmp
+}
+
+. ./shunit/shunit2