"Eduardo R. D'Avila" <erdav...@gmail.com> writes:

> git-prompt.sh lacks tests for PROMPT_COMMAND mode.
>
> Add tests for:
> * pcmode prompt without colors
> * pcmode prompt with colors for bash
> * pcmode prompt with colors for zsh
>
> Having these tests enables an upcoming refactor in
> a safe way.
>
> Signed-off-by: Eduardo R. D'Avila <erdav...@gmail.com>
> ---
> 250   0       t/t9903-bash-prompt.sh
>  t/t9903-bash-prompt.sh | 250 
> +++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 250 insertions(+)
>
> diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
> index 15521cc..ebca9de 100755
> --- a/t/t9903-bash-prompt.sh
> +++ b/t/t9903-bash-prompt.sh
> @@ -535,4 +535,254 @@ test_expect_success 'prompt - format string starting 
> with dash' '
>       test_cmp expected "$actual"
>  '
>  
> +test_expect_success 'prompt - pc mode' '
> +     printf "BEFORE: (master):AFTER" > expected &&

Style; redirected filename immediately follows the redirection
operator, i.e.

        command >expected

> +     printf "" > expected_output &&
> +     (
> +             __git_ps1 "BEFORE:" ":AFTER" > "$actual" &&
> +             test_cmp expected_output "$actual" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - branch name' '
> +     printf "BEFORE: 
> (\\\[\\\e[32m\\\]master\\\[\\\e[0m\\\]\\\[\\\e[0m\\\]):AFTER" > expected &&

With these escape codes that are hardcoded everywhere, the tests
look pretty much unreadable.  Could they be improved to something
like this (two ${reset} and some other characters may want to be
there):

        printf "BEFORE: (${C_green}master${C_reset}):AFTER"

by adding variable definitions early in this test file?

[the rest of the original left unsnipped for reference; my comments
end here]

> +     (
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" > "$actual"
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - detached head' '
> +     printf "BEFORE: 
> (\\\[\\\e[31m\\\](%s...)\\\[\\\e[0m\\\]\\\[\\\e[0m\\\]):AFTER" $(git log -1 
> --format="%h" b1^) > expected &&
> +     git checkout b1^ &&
> +     test_when_finished "git checkout master" &&
> +     (
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - dirty status indicator - 
> dirty worktree' '
> +     printf "BEFORE: (\\\[\\\e[32m\\\]master\\\[\\\e[0m\\\] 
> \\\[\\\e[31m\\\]*\\\[\\\e[0m\\\]):AFTER" > expected &&
> +     echo "dirty" > file &&
> +     test_when_finished "git reset --hard" &&
> +     (
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - dirty status indicator - 
> dirty index' '
> +     printf "BEFORE: (\\\[\\\e[32m\\\]master\\\[\\\e[0m\\\] 
> \\\[\\\e[32m\\\]+\\\[\\\e[0m\\\]):AFTER" > expected &&
> +     echo "dirty" > file &&
> +     test_when_finished "git reset --hard" &&
> +     git add -u &&
> +     (
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - dirty status indicator - 
> dirty index and worktree' '
> +     printf "BEFORE: (\\\[\\\e[32m\\\]master\\\[\\\e[0m\\\] 
> \\\[\\\e[31m\\\]*\\\[\\\e[32m\\\]+\\\[\\\e[0m\\\]):AFTER" > expected &&
> +     echo "dirty index" > file &&
> +     test_when_finished "git reset --hard" &&
> +     git add -u &&
> +     echo "dirty worktree" > file &&
> +     (
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - dirty status indicator - 
> before root commit' '
> +     printf "BEFORE: (\\\[\\\e[32m\\\]master\\\[\\\e[0m\\\] 
> \\\[\\\e[32m\\\]#\\\[\\\e[0m\\\]):AFTER" > expected &&
> +     (
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             cd otherrepo &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - inside .git directory' '
> +     printf "BEFORE: 
> (\\\[\\\e[32m\\\]GIT_DIR!\\\[\\\e[0m\\\]\\\[\\\e[0m\\\]):AFTER" > expected &&
> +     echo "dirty" > file &&
> +     test_when_finished "git reset --hard" &&
> +     (
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             cd .git &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - stash status indicator' '
> +     printf "BEFORE: (\\\[\\\e[32m\\\]master\\\[\\\e[0m\\\] 
> \\\[\\\e[1;34m\\\]$\\\[\\\e[0m\\\]):AFTER" > expected &&
> +     echo 2 >file &&
> +     git stash &&
> +     test_when_finished "git stash drop" &&
> +     (
> +             GIT_PS1_SHOWSTASHSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - bash color pc mode - untracked files status 
> indicator' '
> +     printf "BEFORE: (\\\[\\\e[32m\\\]master\\\[\\\e[0m\\\] 
> \\\[\\\e[31m\\\]%%\\\[\\\e[0m\\\]):AFTER" > expected &&
> +     (
> +             GIT_PS1_SHOWUNTRACKEDFILES=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - branch name' '
> +     printf "BEFORE: (%%F{green}master%%f%%f):AFTER" > expected &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" > "$actual"
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - detached head' '
> +     printf "BEFORE: (%%F{red}(%s...)%%f%%f):AFTER" $(git log -1 
> --format="%h" b1^) > expected &&
> +     git checkout b1^ &&
> +     test_when_finished "git checkout master" &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - dirty status indicator - 
> dirty worktree' '
> +     printf "BEFORE: (%%F{green}master%%f %%F{red}*%%f):AFTER" > expected &&
> +     echo "dirty" > file &&
> +     test_when_finished "git reset --hard" &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - dirty status indicator - 
> dirty index' '
> +     printf "BEFORE: (%%F{green}master%%f %%F{green}+%%f):AFTER" > expected 
> &&
> +     echo "dirty" > file &&
> +     test_when_finished "git reset --hard" &&
> +     git add -u &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - dirty status indicator - 
> dirty index and worktree' '
> +     printf "BEFORE: (%%F{green}master%%f %%F{red}*%%F{green}+%%f):AFTER" > 
> expected &&
> +     echo "dirty index" > file &&
> +     test_when_finished "git reset --hard" &&
> +     git add -u &&
> +     echo "dirty worktree" > file &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - dirty status indicator - 
> before root commit' '
> +     printf "BEFORE: (%%F{green}master%%f %%F{green}#%%f):AFTER" > expected 
> &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             cd otherrepo &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - inside .git directory' '
> +     printf "BEFORE: (%%F{green}GIT_DIR!%%f%%f):AFTER" > expected &&
> +     echo "dirty" > file &&
> +     test_when_finished "git reset --hard" &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWDIRTYSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             cd .git &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - stash status indicator' '
> +     printf "BEFORE: (%%F{green}master%%f %%F{blue}$%%f):AFTER" > expected &&
> +     echo 2 >file &&
> +     git stash &&
> +     test_when_finished "git stash drop" &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWSTASHSTATE=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - zsh color pc mode - untracked files status 
> indicator' '
> +     printf "BEFORE: (%%F{green}master%%f %%F{red}%%%%%%f):AFTER" > expected 
> &&
> +     (
> +             ZSH_VERSION=5.0.0 &&
> +             GIT_PS1_SHOWUNTRACKEDFILES=y &&
> +             GIT_PS1_SHOWCOLORHINTS=y &&
> +             __git_ps1 "BEFORE:" ":AFTER" &&
> +             printf "%s" "$PS1" > "$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
>  test_done
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to