From f05711dbcf196f98f0e08d783f760d47d98b93a6 Mon Sep 17 00:00:00 2001 From: Michael Allen Date: Tue, 17 Feb 2015 17:09:45 +0000 Subject: untracked files reporting --- git-base.sh | 12 ++++++++++++ test-files.sh | 33 +++++++++++++++++++++++++++++++++ test.sh | 1 + 3 files changed, 46 insertions(+) create mode 100755 test-files.sh 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 -- cgit v1.2.3