blob: 73aac533052de08c103aae89ef4e96e3b76c63dc (
plain) (
tree)
|
|
scriptDir="$(cd "$(dirname "$0")"; pwd)"
source "$scriptDir/radar-base.sh"
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*
}
mock_zsh_colors() {
fg_bold[green]=1
fg_bold[red]=2
fg_bold[yellow]=3
fg_bold[white]=4
reset_color=0
}
test_no_rcfile_zsh() {
mock_zsh_colors
prepare_zsh_colors
assertEquals "$COLOR_REMOTE_AHEAD" "%{$fg_bold[green]%}"
assertEquals "$COLOR_REMOTE_BEHIND" "%{$fg_bold[red]%}"
assertEquals "$COLOR_REMOTE_DIVERGED" "%{$fg_bold[yellow]%}"
assertEquals "$COLOR_REMOTE_NOT_UPSTREAM" "%{$fg_bold[red]%}"
assertEquals "$COLOR_LOCAL_AHEAD" "%{$fg_bold[green]%}"
assertEquals "$COLOR_LOCAL_BEHIND" "%{$fg_bold[red]%}"
assertEquals "$COLOR_LOCAL_DIVERGED" "%{$fg_bold[yellow]%}"
assertEquals "$COLOR_CHANGES_STAGED" "%{$fg_bold[green]%}"
assertEquals "$COLOR_CHANGES_UNSTAGED" "%{$fg_bold[red]%}"
assertEquals "$COLOR_CHANGES_CONFLICTED" "%{$fg_bold[yellow]%}"
assertEquals "$COLOR_CHANGES_UNTRACKED" "%{$fg_bold[white]%}"
assertEquals "$RESET_COLOR_LOCAL" "%{$reset_color%}"
assertEquals "$RESET_COLOR_REMOTE" "%{$reset_color%}"
assertEquals "$RESET_COLOR_CHANGES" "%{$reset_color%}"
}
set_zsh_env_vars() {
export GIT_RADAR_COLOR_REMOTE_AHEAD="remote-ahead"
export GIT_RADAR_COLOR_REMOTE_BEHIND="remote-behind"
export GIT_RADAR_COLOR_REMOTE_DIVERGED="remote-diverged"
export GIT_RADAR_COLOR_REMOTE_NOT_UPSTREAM="not-upstream"
export GIT_RADAR_COLOR_LOCAL_AHEAD="local-ahead"
export GIT_RADAR_COLOR_LOCAL_BEHIND="local-behind"
export GIT_RADAR_COLOR_LOCAL_DIVERGED="local-diverged"
export GIT_RADAR_COLOR_CHANGES_STAGED="changes-staged"
export GIT_RADAR_COLOR_CHANGES_UNSTAGED="changes-unstaged"
export GIT_RADAR_COLOR_CHANGES_CONFLICTED="changes-conflicted"
export GIT_RADAR_COLOR_CHANGES_UNTRACKED="changes-untracked"
export GIT_RADAR_COLOR_LOCAL_RESET="local-reset"
export GIT_RADAR_COLOR_REMOTE_RESET="remote-reset"
export GIT_RADAR_COLOR_CHANGES_RESET="change-reset"
}
test_with_env_vars_zsh() {
set_zsh_env_vars
mock_zsh_colors
prepare_zsh_colors
assertEquals "$COLOR_REMOTE_AHEAD" "%{remote-ahead%}"
assertEquals "$COLOR_REMOTE_BEHIND" "%{remote-behind%}"
assertEquals "$COLOR_REMOTE_DIVERGED" "%{remote-diverged%}"
assertEquals "$COLOR_REMOTE_NOT_UPSTREAM" "%{not-upstream%}"
assertEquals "$COLOR_LOCAL_AHEAD" "%{local-ahead%}"
assertEquals "$COLOR_LOCAL_BEHIND" "%{local-behind%}"
assertEquals "$COLOR_LOCAL_DIVERGED" "%{local-diverged%}"
assertEquals "$COLOR_CHANGES_STAGED" "%{changes-staged%}"
assertEquals "$COLOR_CHANGES_UNSTAGED" "%{changes-unstaged%}"
assertEquals "$COLOR_CHANGES_CONFLICTED" "%{changes-conflicted%}"
assertEquals "$COLOR_CHANGES_UNTRACKED" "%{changes-untracked%}"
assertEquals "$RESET_COLOR_LOCAL" "%{local-reset%}"
assertEquals "$RESET_COLOR_REMOTE" "%{remote-reset%}"
assertEquals "$RESET_COLOR_CHANGES" "%{change-reset%}"
}
test_zsh_colors_local() {
set_zsh_env_vars
prepare_zsh_colors
cd_to_tmp "remote"
git init --bare --quiet
remoteLocation="$(pwd)"
cd_to_tmp "repo"
git init --quiet
git remote add origin $remoteLocation
git fetch origin --quiet
git checkout -b master --quiet
touch README
git add README
git commit -m "initial commit" --quiet
git push --quiet -u origin master >/dev/null
repoLocation="$(pwd)"
echo "foo" > foo
git add .
git commit -m "test commit" --quiet
assertEquals " 1%{local-ahead%}↑%{local-reset%}" "$(zsh_color_local_commits)"
git push --quiet >/dev/null
git reset --hard head^ --quiet >/dev/null
assertEquals " 1%{local-behind%}↓%{local-reset%}" "$(zsh_color_local_commits)"
echo "foo" > foo
git add .
git commit -m "new commit" --quiet
assertEquals " 1%{local-diverged%}⇵%{local-reset%}1" "$(zsh_color_local_commits)"
rm_tmp
}
test_zsh_colors_remote() {
set_zsh_env_vars
prepare_zsh_colors
cd_to_tmp "remote"
git init --bare --quiet
remoteLocation="$(pwd)"
cd_to_tmp "repo"
git init --quiet
git remote add origin $remoteLocation
git fetch origin --quiet
git checkout -b master --quiet
touch README
git add README
git commit -m "initial commit" --quiet
echo "foo" > foo
git add .
git commit -m "test commit" --quiet
git push --quiet -u origin master >/dev/null
repoLocation="$(pwd)"
git reset --hard head^ --quiet >/dev/null
git checkout -b mybranch --quiet
git push --quiet -u origin mybranch >/dev/null
printf -v m '\xF0\x9D\x98\xAE'
assertEquals "$m 1 %{remote-behind%}→%{remote-reset%} " "$(zsh_color_remote_commits)"
echo "bar" > bar
git add .
git commit -m "new commit" --quiet
git push --quiet >/dev/null
assertEquals "$m 1 %{remote-diverged%}⇄%{remote-reset%} 1 " "$(zsh_color_remote_commits)"
git pull origin master --quiet >/dev/null
git push --quiet >/dev/null
assertEquals "$m %{remote-ahead%}←%{remote-reset%} 2 " "$(zsh_color_remote_commits)"
rm_tmp
}
test_zsh_colors_changes() {
set_zsh_env_vars
prepare_zsh_colors
cd_to_tmp
git init --quiet
touch foo
touch bar
git add bar
echo "bar" > bar
untracked="1%{changes-untracked%}A%{change-reset%}"
unstaged="1%{changes-unstaged%}M%{change-reset%}"
staged="1%{changes-staged%}A%{change-reset%}"
assertEquals " $staged $unstaged $untracked" "$(zsh_color_changes_status)"
}
. ./shunit/shunit2
|