summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgit-base.sh12
-rwxr-xr-xtest-files.sh33
-rwxr-xr-xtest.sh1
3 files changed, 46 insertions, 0 deletions
diff --git a/git-base.sh b/git-base.sh
index d2262d4..d9dc10a 100755
--- a/git-base.sh
+++ b/git-base.sh
@@ -176,3 +176,15 @@ remote_ahead_of_master() {
echo "0"
fi
}
+
+porcelain_status() {
+ echo "$(git status --porcelain 2>/dev/null)"
+}
+
+untracked_files() {
+ if is_repo; then
+ git_status="$(porcelain_status)"
+ untracked="$(echo "$git_status" | grep -p "?? " | wc -l | grep -oEi '[0-9][0-9]*')"
+ echo "$untracked"
+ fi
+}
diff --git a/test-files.sh b/test-files.sh
new file mode 100755
index 0000000..ee583cc
--- /dev/null
+++ b/test-files.sh
@@ -0,0 +1,33 @@
+scriptDir="$(cd "$(dirname "$0")"; pwd)"
+
+source "$scriptDir/git-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 "0" "$(untracked_files)"
+
+ touch foo
+ assertEquals "1" "$(untracked_files)"
+
+ git add .
+ assertEquals "0" "$(untracked_files)"
+
+ rm_tmp
+}
+
+. ./shunit/shunit2
diff --git a/test.sh b/test.sh
index 8116514..e25666d 100755
--- a/test.sh
+++ b/test.sh
@@ -3,3 +3,4 @@
./test-directories.sh
./test-commits.sh
./test-branches.sh
+./test-files.sh