diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 45881876..7c7e2cfa 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -754,9 +754,11 @@ prompt_docker_machine() { # GO prompt prompt_go_version() { local go_version + local go_path go_version=$(go version 2>/dev/null | sed -E "s/.*(go[0-9.]*).*/\1/") + go_path=$(go env GOPATH 2>/dev/null) - if [[ -n "$go_version" ]]; then + if [[ -n "$go_version" && "${PWD##$go_path}" != "$PWD" ]]; then "$1_prompt_segment" "$0" "$2" "green" "255" "$go_version" fi } diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec index aa9f625d..907dceb3 100755 --- a/test/segments/go_version.spec +++ b/test/segments/go_version.spec @@ -12,19 +12,63 @@ function setUp() { } function mockGo() { - echo 'go version go1.5.3 darwin/amd64' + case "$1" in + 'version') + echo 'go version go1.5.3 darwin/amd64' + ;; + 'env') + echo "$HOME/go" + ;; + esac +} + +function mockGoEmptyGopath() { + case "$1" in + 'version') + echo 'go version go1.5.3 darwin/amd64' + ;; + 'env') + echo "" + ;; + esac } function testGo() { alias go=mockGo POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(go_version) + PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k" + assertEquals "%K{green} %F{255}go1.5.3 %k%F{green}%f " "$(build_left_prompt)" + unset PWD unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS unalias go } +function testGoSegmentPrintsNothingIfEmptyGopath() { + alias go=mockGoEmptyGopath + POWERLEVEL9K_CUSTOM_WORLD='echo world' + POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version) + + assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)" + + unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS + unset POWERLEVEL9K_CUSTOM_WORLD + +} + +function testGoSegmentPrintsNothingIfNotInGopath() { + alias go=mockGo + POWERLEVEL9K_CUSTOM_WORLD='echo world' + POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version) + + assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)" + + unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS + unset POWERLEVEL9K_CUSTOM_WORLD +} + function testGoSegmentPrintsNothingIfGoIsNotAvailable() { alias go=noGo POWERLEVEL9K_CUSTOM_WORLD='echo world'