summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md57
-rwxr-xr-xfunctions/icons.zsh9
-rwxr-xr-xfunctions/vcs.zsh45
-rwxr-xr-xpowerlevel9k.zsh-theme70
-rwxr-xr-xtest/segments/dir.spec21
-rwxr-xr-xtest/segments/rust_version.spec22
-rwxr-xr-xtest/segments/vcs.spec80
7 files changed, 256 insertions, 48 deletions
diff --git a/README.md b/README.md
index 8b0fc03c..a5977960 100644
--- a/README.md
+++ b/README.md
@@ -130,10 +130,13 @@ The segments that are currently available are:
* [`chruby`](#chruby) - Ruby environment information using `chruby` (if one is active).
* [`rbenv`](#rbenv) - Ruby environment information using `rbenv` (if one is active).
* [`rspec_stats`](#rspec_stats) - Show a ratio of test classes vs code classes for RSpec.
+ * `rvm` - Ruby environment information using `$GEM_HOME` and `$MY_RUBY_HOME` (if one is active).
* **Rust Segments:**
* `rust_version` - Display the current rust version and [logo](https://www.rust-lang.org/logos/rust-logo-blk.svg).
* **Swift Segments:**
* `swift_version` - Show the version number of the installed Swift.
+* **Java Segments:**
+ * `java_version` - Show the current Java version.
**Cloud Segments:**
* **AWS Segments:**
@@ -213,8 +216,10 @@ You can also change the battery icon automatically depending on the battery
level. This will override the default battery icon. In order to do this, you
need to define the `POWERLEVEL9k_BATTERY_STAGES` variable.
-| Variable | Default Value | Description |
-| `POWERLEVEL9K_BATTERY_STAGES`|Unset|A string or array, which each index indicates a charge level.|
+
+| Variable | Default Value | Description |
+|-------------------------------|---------------|---------------------------------------------------------------|
+| `POWERLEVEL9K_BATTERY_STAGES` | Unset | A string or array, which each index indicates a charge level. |
Powerlevel9k will use each index of the string or array as a stage to indicate battery
charge level, progressing from left to right. You can provide any number of
@@ -254,10 +259,23 @@ As with the battery stages, you can use any number of colors and Powerlevel9k
will automatically use all of them appropriately.
Some example settings:
-|Brightness|Possible Array|
-|Bright Colors|(red1 orangered1 darkorange orange1 gold1 yellow1 yellow2 greenyellow chartreuse1 chartreuse2 green1)|
-|Normal Colors|(red3 darkorange3 darkgoldenrod gold3 yellow3 chartreuse2 mediumspringgreen green3 green3 green4 darkgreen)|
-|Subdued Colors|(darkred orange4 yellow4 yellow4 chartreuse3 green3 green4 darkgreen)|
+
+| Brightness | Possible Array |
+|----------------|---------------------------------------------------------------------------------------------------------------|
+| Bright Colors | `(red1 orangered1 darkorange orange1 gold1 yellow1 yellow2 greenyellow chartreuse1 chartreuse2 green1)` |
+| Normal Colors | `(red3 darkorange3 darkgoldenrod gold3 yellow3 chartreuse2 mediumspringgreen green3 green3 green4 darkgreen)` |
+| Subdued Colors | `(darkred orange4 yellow4 yellow4 chartreuse3 green3 green4 darkgreen)` |
+
+##### chruby
+
+This segment shows the version of Ruby being used when using `chruby` to change your current Ruby stack.
+
+It uses `$RUBY_ENGINE` and `$RUBY_VERSION` as set by `chruby`.
+
+| Variable | Default Value | Description |
+|----------|---------------|-------------|
+|`POWERLEVEL9K_CHRUBY_SHOW_ENGINE`|true|Show the currently selected Ruby engine (e.g. `ruby`, `jruby`, `rbx`, etc)
+|`POWERLEVEL9K_CHRUBY_SHOW_VERSION`|true|Shows the currently selected engine's version (e.g. `2.5.1`)
##### command_execution_time
@@ -538,6 +556,10 @@ Variable | Default Value | Description |
|----------|---------------|-------------|
|`POWERLEVEL9K_RBENV_ALWAYS`|'false'|Always show the `rbenv` segment, even if the local version matches the global.|
+| Variable | Default Value | Description |
+|----------|---------------|-------------|
+|`POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW`|`false`|Set to true if you wish to show the rbenv segment even if the current Ruby version is the same as the global Ruby version|
+
##### rspec_stats
See [Unit Test Ratios](#unit-test-ratios), below.
@@ -637,6 +659,29 @@ from the [Installation](#Installation) section above.
| None | None | ![icon_git](https://cloud.githubusercontent.com/assets/1544760/7976092/b5909f80-0a76-11e5-9950-1438b9d72465.gif) | Repository is a git repository
| None | None | ![icon_mercurial](https://cloud.githubusercontent.com/assets/1544760/7976090/b5908da6-0a76-11e5-8c91-452b6e73f631.gif) | Repository is a Mercurial repository
+You can limit the branch name to a certain length by truncating long names.
+Customizations available are:
+
+| Variable | Default Value | Description |
+|----------|---------------|-------------|
+|`POWERLEVEL9K_VCS_SHORTEN_LENGTH`|None|This field determines how many characters to show.|
+|`POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH`|None|This field determines minimum branch length. Branch name will be truncated if its length greater than this field.|
+|`POWERLEVEL9K_VCS_SHORTEN_STRATEGY`|None|This field determines how branch name should be truncated. See the table below for more information.|
+|`POWERLEVEL9K_SHORTEN_DELIMITER`|`...`|Delimiter to use in truncated strings. This can be any string you choose, including an empty string if you wish to have no delimiter.|
+
+| Strategy Name | Description |
+|---------------|-------------|
+|`truncate_middle`|Truncates the middle part of a branch. E.g. branch name is `1234-super_super_long_branch_name`, then it will truncated to `1234-..._name`, if `POWERLEVEL9K_VCS_SHORTEN_LENGTH=5` is also set (controls the amount of characters to be left).|
+|`truncate_from_right`|Just leaves the beginning of a branch name untouched. E.g. branch name will be truncated like so: `1234-...`. How many characters will be untouched is controlled by `POWERLEVEL9K_VCS_SHORTEN_LENGTH`.|
+
+For example, if you want to truncate `1234-super_super_long_branch_name` to `1234-..` and don't do it with `development`:
+```zsh
+POWERLEVEL9K_VCS_SHORTEN_LENGTH=4
+POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH=11
+POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right"
+POWERLEVEL9K_VCS_SHORTEN_DELIMITER=".."
+```
+
##### vi_mode
This segment shows ZSH's current input mode. Note that this is only useful if
diff --git a/functions/icons.zsh b/functions/icons.zsh
index f758d55c..1a77c864 100755
--- a/functions/icons.zsh
+++ b/functions/icons.zsh
@@ -96,7 +96,7 @@ case $POWERLEVEL9K_MODE in
VCS_GIT_GITLAB_ICON $'\uE20E ' #
VCS_HG_ICON $'\uE1C3 ' # 
VCS_SVN_ICON '(svn) '
- RUST_ICON ''
+ RUST_ICON '(rust)'
PYTHON_ICON $'\ue63c' # 
SWIFT_ICON ''
GO_ICON ''
@@ -109,6 +109,7 @@ case $POWERLEVEL9K_MODE in
DROPBOX_ICON $'\UF16B' # 
DATE_ICON $'\uE184' # 
TIME_ICON $'\uE12E' # 
+ JAVA_ICON $'\U2615' # ☕︎
)
;;
'awesome-fontconfig')
@@ -202,6 +203,7 @@ case $POWERLEVEL9K_MODE in
DROPBOX_ICON $'\UF16B' # 
DATE_ICON $'\uF073 ' # 
TIME_ICON $'\uF017 ' # 
+ JAVA_ICON $'\U2615' # ☕︎
)
;;
'awesome-mapped-fontconfig')
@@ -300,6 +302,7 @@ case $POWERLEVEL9K_MODE in
DROPBOX_ICON '\u'$CODEPOINT_OF_AWESOME_DROPBOX # 
DATE_ICON $'\uF073 ' # 
TIME_ICON $'\uF017 ' # 
+ JAVA_ICON $'\U2615' # ☕︎
)
;;
'nerdfont-complete'|'nerdfont-fontconfig')
@@ -394,6 +397,7 @@ case $POWERLEVEL9K_MODE in
DROPBOX_ICON $'\UF16B' # 
DATE_ICON $'\uF073 ' # 
TIME_ICON $'\uF017 ' # 
+ JAVA_ICON $'\U2615' # ☕︎
)
;;
*)
@@ -474,7 +478,7 @@ case $POWERLEVEL9K_MODE in
VCS_GIT_GITLAB_ICON ''
VCS_HG_ICON ''
VCS_SVN_ICON ''
- RUST_ICON ''
+ RUST_ICON 'Rust'
PYTHON_ICON ''
SWIFT_ICON 'Swift'
GO_ICON 'Go'
@@ -487,6 +491,7 @@ case $POWERLEVEL9K_MODE in
DROPBOX_ICON 'Dropbox'
DATE_ICON ''
TIME_ICON ''
+ JAVA_ICON $'\U2615' # ☕︎
)
;;
esac
diff --git a/functions/vcs.zsh b/functions/vcs.zsh
index e2e9f3a3..b99e7c86 100755
--- a/functions/vcs.zsh
+++ b/functions/vcs.zsh
@@ -16,8 +16,8 @@ function +vi-git-untracked() {
FLAGS+='--ignore-submodules=dirty'
fi
- if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' && \
- -n $(git status ${FLAGS} | \grep -E '^\?\?' 2> /dev/null | tail -n1) ]]; then
+ if [[ $(command git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' && \
+ -n $(command git status ${FLAGS} | \grep -E '^\?\?' 2> /dev/null | tail -n1) ]]; then
hook_com[unstaged]+=" $(print_icon 'VCS_UNTRACKED_ICON')"
VCS_WORKDIR_HALF_DIRTY=true
else
@@ -29,16 +29,16 @@ function +vi-git-aheadbehind() {
local ahead behind branch_name
local -a gitstatus
- branch_name=$(git symbolic-ref --short HEAD 2>/dev/null)
+ branch_name=$(command git symbolic-ref --short HEAD 2>/dev/null)
# for git prior to 1.7
- # ahead=$(git rev-list origin/${branch_name}..HEAD | wc -l)
- ahead=$(git rev-list "${branch_name}"@{upstream}..HEAD 2>/dev/null | wc -l)
+ # ahead=$(command git rev-list origin/${branch_name}..HEAD | wc -l)
+ ahead=$(command git rev-list "${branch_name}"@{upstream}..HEAD 2>/dev/null | wc -l)
(( ahead )) && gitstatus+=( " $(print_icon 'VCS_OUTGOING_CHANGES_ICON')${ahead// /}" )
# for git prior to 1.7
- # behind=$(git rev-list HEAD..origin/${branch_name} | wc -l)
- behind=$(git rev-list HEAD.."${branch_name}"@{upstream} 2>/dev/null | wc -l)
+ # behind=$(command git rev-list HEAD..origin/${branch_name} | wc -l)
+ behind=$(command git rev-list HEAD.."${branch_name}"@{upstream} 2>/dev/null | wc -l)
(( behind )) && gitstatus+=( " $(print_icon 'VCS_INCOMING_CHANGES_ICON')${behind// /}" )
hook_com[misc]+=${(j::)gitstatus}
@@ -48,8 +48,23 @@ function +vi-git-remotebranch() {
local remote branch_name
# Are we on a remote-tracking branch?
- remote=${$(git rev-parse --verify HEAD@{upstream} --symbolic-full-name 2>/dev/null)/refs\/(remotes|heads)\/}
- branch_name=$(git symbolic-ref --short HEAD 2>/dev/null)
+ remote=${$(command git rev-parse --verify HEAD@{upstream} --symbolic-full-name 2>/dev/null)/refs\/(remotes|heads)\/}
+ branch_name=$(command git symbolic-ref --short HEAD 2>/dev/null)
+
+ if [[ -n "$POWERLEVEL9K_VCS_SHORTEN_LENGTH" ]] && [[ -n "$POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH" ]]; then
+ set_default POWERLEVEL9K_VCS_SHORTEN_DELIMITER $'\U2026'
+
+ if [ ${#hook_com[branch]} -gt $POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH ] && [ ${#hook_com[branch]} -gt $POWERLEVEL9K_VCS_SHORTEN_LENGTH ]; then
+ case "$POWERLEVEL9K_VCS_SHORTEN_STRATEGY" in
+ truncate_middle)
+ hook_com[branch]="$(echo "${branch_name:0:$POWERLEVEL9K_VCS_SHORTEN_LENGTH}")$POWERLEVEL9K_VCS_SHORTEN_DELIMITER$(echo "${branch_name: -$POWERLEVEL9K_VCS_SHORTEN_LENGTH}")"
+ ;;
+ truncate_from_right)
+ hook_com[branch]="$(echo "${branch_name:0:$POWERLEVEL9K_VCS_SHORTEN_LENGTH}")$POWERLEVEL9K_VCS_SHORTEN_DELIMITER"
+ ;;
+ esac
+ fi
+ fi
hook_com[branch]="$(print_icon 'VCS_BRANCH_ICON')${hook_com[branch]}"
# Always show the remote
@@ -65,18 +80,18 @@ function +vi-git-tagname() {
if [[ "$POWERLEVEL9K_VCS_HIDE_TAGS" == "false" ]]; then
# If we are on a tag, append the tagname to the current branch string.
local tag
- tag=$(git describe --tags --exact-match HEAD 2>/dev/null)
+ tag=$(command git describe --tags --exact-match HEAD 2>/dev/null)
if [[ -n "${tag}" ]] ; then
# There is a tag that points to our current commit. Need to determine if we
# are also on a branch, or are in a DETACHED_HEAD state.
- if [[ -z $(git symbolic-ref HEAD 2>/dev/null) ]]; then
+ if [[ -z $(command git symbolic-ref HEAD 2>/dev/null) ]]; then
# DETACHED_HEAD state. We want to append the tag name to the commit hash
# and print it. Unfortunately, `vcs_info` blows away the hash when a tag
# exists, so we have to manually retrieve it and clobber the branch
# string.
local revision
- revision=$(git rev-list -n 1 --abbrev-commit --abbrev=${POWERLEVEL9K_VCS_INTERNAL_HASH_LENGTH} HEAD)
+ revision=$(command git rev-list -n 1 --abbrev-commit --abbrev=${POWERLEVEL9K_VCS_INTERNAL_HASH_LENGTH} HEAD)
hook_com[branch]="$(print_icon 'VCS_BRANCH_ICON')${revision} $(print_icon 'VCS_TAG_ICON')${tag}"
else
# We are on both a tag and a branch; print both by appending the tag name.
@@ -91,8 +106,8 @@ function +vi-git-tagname() {
function +vi-git-stash() {
local -a stashes
- if [[ -s $(git rev-parse --git-dir)/refs/stash ]] ; then
- stashes=$(git stash list 2>/dev/null | wc -l)
+ if [[ -s $(command git rev-parse --git-dir)/refs/stash ]] ; then
+ stashes=$(command git stash list 2>/dev/null | wc -l)
hook_com[misc]+=" $(print_icon 'VCS_STASH_ICON')${stashes// /}"
fi
}
@@ -111,7 +126,7 @@ function +vi-hg-bookmarks() {
function +vi-vcs-detect-changes() {
if [[ "${hook_com[vcs]}" == "git" ]]; then
- local remote=$(git ls-remote --get-url 2> /dev/null)
+ local remote=$(command git ls-remote --get-url 2> /dev/null)
if [[ "$remote" =~ "github" ]] then
vcs_visual_identifier='VCS_GIT_GITHUB_ICON'
elif [[ "$remote" =~ "bitbucket" ]] then
diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme
index 8e6bf9ad..c087cfbf 100755
--- a/powerlevel9k.zsh-theme
+++ b/powerlevel9k.zsh-theme
@@ -899,7 +899,9 @@ prompt_dir() {
fi
;;
*)
- current_path="$(print -P "%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:$POWERLEVEL9K_SHORTEN_DELIMITER/:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c")"
+ if [[ $current_path != "~" ]]; then
+ current_path="$(print -P "%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:$POWERLEVEL9K_SHORTEN_DELIMITER/:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c")"
+ fi
;;
esac
fi
@@ -1233,18 +1235,19 @@ prompt_ram() {
"$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "$(printSizeHumanReadable "$ramfree" $base)" 'RAM_ICON'
}
-################################################################
-# Segment to display rbenv information
-set_default POWERLEVEL9K_RBENV_ALWAYS false
+
+set_default POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW false
+# rbenv information
prompt_rbenv() {
- if which rbenv 2>/dev/null >&2; then
+ if command which rbenv 2>/dev/null >&2; then
local rbenv_version_name="$(rbenv version-name)"
local rbenv_global="$(rbenv global)"
+
# Don't show anything if the current Ruby is the same as the global Ruby
- # unless `POWERLEVEL9K_RBENV_ALWAYS` is set.
- if [[ $POWERLEVEL9K_RBENV_ALWAYS == true || $rbenv_version_name != $rbenv_global ]];then
- "$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "$rbenv_version_name" 'RUBY_ICON'
+ # unless `POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW` is set.
+ if [[ $rbenv_version_name == $rbenv_global && "$POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW" = false ]]; then
+ return
fi
fi
}
@@ -1253,11 +1256,24 @@ prompt_rbenv() {
# Segment to display chruby information
# see https://github.com/postmodern/chruby/issues/245 for chruby_auto issue with ZSH
prompt_chruby() {
- local chruby_env
- chrb_env="$(chruby 2> /dev/null | grep \* | tr -d '* ')"
+ # Uses $RUBY_VERSION and $RUBY_ENGINE set by chruby
+ set_default POWERLEVEL9K_CHRUBY_SHOW_VERSION true
+ set_default POWERLEVEL9K_CHRUBY_SHOW_ENGINE true
+ local chruby_label=""
+
+ if [[ "$POWERLEVEL9K_CHRUBY_SHOW_ENGINE" == true ]]; then
+ chruby_label+="$RUBY_ENGINE "
+ fi
+ if [[ "$POWERLEVEL9K_CHRUBY_SHOW_VERSION" == true ]]; then
+ chruby_label+="$RUBY_VERSION"
+ fi
+
+ # Truncate trailing spaces
+ chruby_label="${chruby_label%"${chruby_label##*[![:space:]]}"}"
+
# Don't show anything if the chruby did not change the default ruby
- if [[ "${chrb_env:-system}" != "system" ]]; then
- "$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "${chrb_env}" 'RUBY_ICON'
+ if [[ "$RUBY_ENGINE" != "" ]]; then
+ "$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "${chruby_label}" 'RUBY_ICON'
fi
}
@@ -1272,16 +1288,18 @@ prompt_root_indicator() {
################################################################
# Segment to display Rust version number
prompt_rust_version() {
- local rust_version
- rust_version=$(rustc --version 2>&1 | grep -oe "^rustc\s*[^ ]*" | grep -o '[0-9.a-z\\\-]*$')
+ local rust_version=$(command rustc --version 2>/dev/null)
+ # Remove "rustc " (including the whitespace) from the beginning
+ # of the version string and remove everything after the next
+ # whitespace. This way we'll end up with only the version.
+ rust_version=${${rust_version/rustc /}%% *}
if [[ -n "$rust_version" ]]; then
- "$1_prompt_segment" "$0" "$2" "darkorange" "$DEFAULT_COLOR" "Rust $rust_version" 'RUST_ICON'
+ "$1_prompt_segment" "$0" "$2" "darkorange" "$DEFAULT_COLOR" "$rust_version" 'RUST_ICON'
fi
}
-################################################################
-# Segment to display RSpec test ratio
+# RSpec test ratio
prompt_rspec_stats() {
if [[ (-d app && -d spec) ]]; then
local code_amount tests_amount
@@ -1341,8 +1359,13 @@ prompt_status() {
local ec
if [[ $POWERLEVEL9K_STATUS_SHOW_PIPESTATUS == true ]]; then
- ec_text=$(exit_code_or_status "${RETVALS[1]}")
- ec_sum=${RETVALS[1]}
+ if (( $#RETVALS > 1 )); then
+ ec_text=$(exit_code_or_status "${RETVALS[1]}")
+ ec_sum=${RETVALS[1]}
+ else
+ ec_text=$(exit_code_or_status "${RETVAL}")
+ ec_sum=${RETVAL}
+ fi
for ec in "${(@)RETVALS[2,-1]}"; do
ec_text="${ec_text}|$(exit_code_or_status "$ec")"
@@ -1658,7 +1681,16 @@ prompt_dropbox() {
"$1_prompt_segment" "$0" "$2" "white" "blue" "$dropbox_status" "DROPBOX_ICON"
fi
+}
+# print Java version number
+prompt_java_version() {
+ local java_version
+ java_version=$(java -fullversion 2>&1 | cut -d '"' -f 2)
+
+ if [[ -n "$java_version" ]]; then
+ "$1_prompt_segment" "$0" "$2" "red" "white" "$java_version" "JAVA_ICON"
+ fi
}
################################################################
diff --git a/test/segments/dir.spec b/test/segments/dir.spec
index 66009a86..e8bbaf93 100755
--- a/test/segments/dir.spec
+++ b/test/segments/dir.spec
@@ -46,6 +46,27 @@ function testTruncateFoldersWorks() {
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
+function testTruncateFolderWithHomeDirWorks() {
+ POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
+ CURRENT_DIR=$(pwd)
+
+ cd ~
+ FOLDER="powerlevel9k-test-${RANDOM}"
+ mkdir -p $FOLDER
+ cd $FOLDER
+ # Switch back to home folder as this causes the problem.
+ cd ..
+
+ assertEquals "%K{blue} %F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
+
+ rmdir $FOLDER
+ cd ${CURRENT_DIR}
+
+ unset CURRENT_DIR
+ unset FOLDER
+ unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
+}
+
function testTruncateMiddleWorks() {
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
diff --git a/test/segments/rust_version.spec b/test/segments/rust_version.spec
index a9668671..2a344f64 100755
--- a/test/segments/rust_version.spec
+++ b/test/segments/rust_version.spec
@@ -5,28 +5,39 @@
setopt shwordsplit
SHUNIT_PARENT=$0
+TEST_BASE_FOLDER=/tmp/powerlevel9k-test
+RUST_TEST_FOLDER="${TEST_BASE_FOLDER}/rust-test"
+
function setUp() {
+ OLDPATH="${PATH}"
+ mkdir -p "${RUST_TEST_FOLDER}"
+ PATH="${RUST_TEST_FOLDER}:${PATH}"
+
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
+function tearDown() {
+ PATH="${OLDPATH}"
+ rm -fr "${TEST_BASE_FOLDER}"
+}
+
function mockRust() {
- echo 'rustc 0.4.1a-alpha'
+ echo "#!/bin/sh\n\necho 'rustc 0.4.1a-alpha'" > "${RUST_TEST_FOLDER}/rustc"
+ chmod +x "${RUST_TEST_FOLDER}/rustc"
}
function testRust() {
- alias rustc=mockRust
+ mockRust
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version)
- assertEquals "%K{208} %F{black}Rust 0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)"
+ assertEquals "%K{208} %F{black%}Rust%f %F{black}0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
- unalias rustc
}
function testRustPrintsNothingIfRustIsNotAvailable() {
- alias rustc=noRust
POWERLEVEL9K_CUSTOM_WORLD='echo world'
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world rust_version)
@@ -34,7 +45,6 @@ function testRustPrintsNothingIfRustIsNotAvailable() {
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_CUSTOM_WORLD
- unalias rustc
}
source shunit2/source/2.1/src/shunit2
diff --git a/test/segments/vcs.spec b/test/segments/vcs.spec
index c33b564d..f6474f61 100755
--- a/test/segments/vcs.spec
+++ b/test/segments/vcs.spec
@@ -78,4 +78,84 @@ function testColorOverridingForUntrackedStateWorks() {
unset POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND
}
+function testBranchNameTruncatingShortenLength() {
+ POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+ POWERLEVEL9K_VCS_SHORTEN_LENGTH=6
+ POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH=3
+ POWERLEVEL9K_VCS_SHORTEN_STRATEGY="truncate_from_right"
+
+ FOLDER=/tmp/powerlevel9k-test/vcs-test
+ mkdir -p $FOLDER
+ cd $FOLDER
+ git init 1>/dev/null
+ touch testfile
+
+ assertEquals "%K{green} %F{black} master ? %k%F{green}%f " "$(build_left_prompt)"
+
+ POWERLEVEL9K_VCS_SHORTEN_LENGTH=3
+ assertEquals "%K{green} %F{black} mas… ? %k%F{green}%f " "$(build_left_prompt)"
+
+ cd -
+ rm -fr /tmp/powerlevel9k-test
+
+ unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+ unset POWERLEVEL9K_VCS_SHORTEN_LENGTH
+ unset POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH
+ unset POWERLEVEL9K_VCS_SHORTEN_STRATEGY
+}
+
+function testBranchNameTruncatingMinLength() {
+ POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+ POWERLEVEL9K_VCS_SHORTEN_LENGTH=3
+ POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH=6
+ POWERLEVEL9K_VCS_SHORTEN_STRATEGY="truncate_from_right"
+
+ FOLDER=/tmp/powerlevel9k-test/vcs-test
+ mkdir -p $FOLDER
+ cd $FOLDER
+ git init 1>/dev/null
+ touch testfile
+
+ assertEquals "%K{green} %F{black} master ? %k%F{green}%f " "$(build_left_prompt)"
+
+ POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH=7
+
+ assertEquals "%K{green} %F{black} master ? %k%F{green}%f " "$(build_left_prompt)"
+
+ cd -
+ rm -fr /tmp/powerlevel9k-test
+
+ unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+ unset POWERLEVEL9K_VCS_SHORTEN_LENGTH
+ unset POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH
+ unset POWERLEVEL9K_VCS_SHORTEN_STRATEGY
+}
+
+function testBranchNameTruncatingShortenStrategy() {
+ POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+ POWERLEVEL9K_VCS_SHORTEN_LENGTH=3
+ POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH=3
+ POWERLEVEL9K_VCS_SHORTEN_STRATEGY="truncate_from_right"
+
+ FOLDER=/tmp/powerlevel9k-test/vcs-test
+ mkdir -p $FOLDER
+ cd $FOLDER
+ git init 1>/dev/null
+ touch testfile
+
+ assertEquals "%K{green} %F{black} mas… ? %k%F{green}%f " "$(build_left_prompt)"
+
+ POWERLEVEL9K_VCS_SHORTEN_STRATEGY="truncate_middle"
+
+ assertEquals "%K{green} %F{black} mas…ter ? %k%F{green}%f " "$(build_left_prompt)"
+
+ cd -
+ rm -fr /tmp/powerlevel9k-test
+
+ unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+ unset POWERLEVEL9K_VCS_SHORTEN_LENGTH
+ unset POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH
+ unset POWERLEVEL9K_VCS_SHORTEN_STRATEGY
+}
+
source shunit2/source/2.1/src/shunit2