update prezto

This commit is contained in:
2018-11-18 23:37:19 +04:00
parent a17ecf9f57
commit 2808949f26
352 changed files with 15169 additions and 25328 deletions

View File

@@ -0,0 +1,62 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function testDynamicColoringOfSegmentsWork() {
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(date)
local POWERLEVEL9K_DATE_ICON="date-icon"
local POWERLEVEL9K_DATE_BACKGROUND='red'
assertEquals "%K{001} %F{000}date-icon %f%F{000}%D{%d.%m.%y} %k%F{001}%f " "$(build_left_prompt)"
}
function testDynamicColoringOfVisualIdentifiersWork() {
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(date)
local POWERLEVEL9K_DATE_ICON="date-icon"
local POWERLEVEL9K_DATE_VISUAL_IDENTIFIER_COLOR='green'
assertEquals "%K{007} %F{002}date-icon %f%F{000}%D{%d.%m.%y} %k%F{007}%f " "$(build_left_prompt)"
}
function testColoringOfVisualIdentifiersDoesNotOverwriteColoringOfSegment() {
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(date)
local POWERLEVEL9K_DATE_ICON="date-icon"
local POWERLEVEL9K_DATE_VISUAL_IDENTIFIER_COLOR='green'
local POWERLEVEL9K_DATE_FOREGROUND='red'
local POWERLEVEL9K_DATE_BACKGROUND='yellow'
assertEquals "%K{003} %F{002}date-icon %f%F{001}%D{%d.%m.%y} %k%F{003}%f " "$(build_left_prompt)"
}
function testColorOverridingOfStatefulSegment() {
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(host)
local POWERLEVEL9K_SSH_ICON="ssh-icon"
local POWERLEVEL9K_HOST_REMOTE_BACKGROUND='red'
local POWERLEVEL9K_HOST_REMOTE_FOREGROUND='green'
# Provoke state
local SSH_CLIENT="x"
assertEquals "%K{001} %F{002}ssh-icon %f%F{002}%m %k%F{001}%f " "$(build_left_prompt)"
}
function testColorOverridingOfCustomSegment() {
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local POWERLEVEL9K_CUSTOM_WORLD_ICON='CW'
local POWERLEVEL9K_CUSTOM_WORLD_VISUAL_IDENTIFIER_COLOR='green'
local POWERLEVEL9K_CUSTOM_WORLD_FOREGROUND='red'
local POWERLEVEL9K_CUSTOM_WORLD_BACKGROUND='red'
assertEquals "%K{001} %F{002}CW %f%F{001}world %k%F{001}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -0,0 +1,187 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function testLeftNormalSegmentsShouldNotBeJoined() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3 custom_world4_joined custom_world5 custom_world6)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
local POWERLEVEL9K_CUSTOM_WORLD5="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD6="echo world6"
assertEquals "%K{007} %F{000}world1 %K{007}%F{000} %F{000}world2 %K{007}%F{000} %F{000}world4 %K{007}%F{000} %F{000}world6 %k%F{007}%f " "$(build_left_prompt)"
}
function testLeftJoinedSegments() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
assertEquals "%K{007} %F{000}world1 %K{007}%F{000}%F{000}world2 %k%F{007}%f " "$(build_left_prompt)"
}
function testLeftTransitiveJoinedSegments() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined custom_world3_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
local POWERLEVEL9K_CUSTOM_WORLD3="echo world3"
assertEquals "%K{007} %F{000}world1 %K{007}%F{000}%F{000}world2 %K{007}%F{000}%F{000}world3 %k%F{007}%f " "$(build_left_prompt)"
}
function testLeftTransitiveJoiningWithConditionalJoinedSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined custom_world3_joined custom_world4_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
assertEquals "%K{007} %F{000}world1 %K{007}%F{000}%F{000}world2 %K{007}%F{000}%F{000}world4 %k%F{007}%f " "$(build_left_prompt)"
}
function testLeftPromotingSegmentWithConditionalPredecessor() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD3="echo world3"
assertEquals "%K{007} %F{000}world1 %K{007}%F{000} %F{000}world3 %k%F{007}%f " "$(build_left_prompt)"
}
function testLeftPromotingSegmentWithJoinedConditionalPredecessor() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined custom_world4_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
assertEquals "%K{007} %F{000}world1 %K{007}%F{000} %F{000}world4 %k%F{007}%f " "$(build_left_prompt)"
}
function testLeftPromotingSegmentWithDeepJoinedConditionalPredecessor() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined custom_world4_joined custom_world5_joined custom_world6_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
local POWERLEVEL9K_CUSTOM_WORLD5="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD6="echo world6"
assertEquals "%K{007} %F{000}world1 %K{007}%F{000} %F{000}world4 %K{007}%F{000}%F{000}world6 %k%F{007}%f " "$(build_left_prompt)"
}
function testLeftJoiningBuiltinSegmentWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version php_version_joined)
alias php="echo PHP 1.2.3"
assertEquals "%K{013} %F{255}PHP 1.2.3 %K{013}%F{255}%F{255}PHP 1.2.3 %k%F{013}%f " "$(build_left_prompt)"
unalias php
}
function testRightNormalSegmentsShouldNotBeJoined() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3 custom_world4 custom_world5_joined custom_world6)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
local POWERLEVEL9K_CUSTOM_WORLD5="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD6="echo world6"
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world2 %f%F{000}%f%K{007}%F{000} world4 %f%F{000}%f%K{007}%F{000} world6%E" "$(build_right_prompt)"
}
function testRightJoinedSegments() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%K{007}%F{000}world2%E" "$(build_right_prompt)"
}
function testRightTransitiveJoinedSegments() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined custom_world3_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
local POWERLEVEL9K_CUSTOM_WORLD3="echo world3"
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%K{007}%F{000}world2 %f%K{007}%F{000}world3%E" "$(build_right_prompt)"
}
function testRightTransitiveJoiningWithConditionalJoinedSegment() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined custom_world3_joined custom_world4_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%K{007}%F{000}world2 %f%K{007}%F{000}world4%E" "$(build_right_prompt)"
}
function testRightPromotingSegmentWithConditionalPredecessor() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD3="echo world3"
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world3%E" "$(build_right_prompt)"
}
function testRightPromotingSegmentWithJoinedConditionalPredecessor() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined custom_world4_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world4%E" "$(build_right_prompt)"
}
function testRightPromotingSegmentWithDeepJoinedConditionalPredecessor() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined custom_world4_joined custom_world5_joined custom_world6_joined)
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
local POWERLEVEL9K_CUSTOM_WORLD5="echo " # Print nothing to simulate unmet conditions
local POWERLEVEL9K_CUSTOM_WORLD6="echo world6"
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world4 %f%K{007}%F{000}world6%E" "$(build_right_prompt)"
}
function testRightJoiningBuiltinSegmentWorks() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(php_version php_version_joined)
alias php="echo PHP 1.2.3"
assertEquals "%F{013}%f%K{013}%F{255} PHP 1.2.3 %f%K{013}%F{255}PHP 1.2.3%E" "$(build_right_prompt)"
unalias php
}
source shunit2/shunit2

View File

@@ -0,0 +1,104 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function testSegmentOnRightSide() {
# Reset RPROMPT, so a running P9K does not interfere with the test
local RPROMPT=
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_CUSTOM_WORLD2='echo world2'
powerlevel9k_prepare_prompts
local reset_attributes=$'\e[00m'
assertEquals "%f%b%k%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world2%E%{${reset_attributes}%}" "${(e)RPROMPT}"
}
function testDisablingRightPrompt() {
# Reset RPROMPT, so a running P9K does not interfere with the test
local RPROMPT=
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_CUSTOM_WORLD2='echo world2'
local POWERLEVEL9K_DISABLE_RPROMPT=true
powerlevel9k_prepare_prompts
assertEquals "" "${(e)RPROMPT}"
}
function testLeftMultilinePrompt() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
powerlevel9k_prepare_prompts
local nl=$'\n'
assertEquals "%f%b%k%K{007} %F{000}world1 %k%F{007}%f ${nl} " "${(e)PROMPT}"
}
function testRightPromptOnSameLine() {
# Reset RPROMPT, so a running P9K does not interfere with the test
local RPROMPT=
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
local POWERLEVEL9K_RPROMPT_ON_NEWLINE=false # We want the RPROMPT on the same line as our left prompt
# Skip test, as this cannot be tested properly.
# The "go one line up" instruction does not get
# printed as real characters in RPROMPT.
# On command line the assert statement produces
# a visually identical output as we expect, but
# it fails anyway. :(
startSkipping
powerlevel9k_prepare_prompts
assertEquals "%{\e[1A%}%F{007}%f%K{007}%F{000} world1 %f%{\e[1B%}" "${(e)RPROMPT}"
}
function testPrefixingFirstLineOnLeftPrompt() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
local POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='XXX'
powerlevel9k_prepare_prompts
local nl=$'\n'
assertEquals "XXX%f%b%k%K{007} %F{000}world1 %k%F{007}%f ${nl} " "${(e)PROMPT}"
}
function testPrefixingSecondLineOnLeftPrompt() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
local POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='XXX'
powerlevel9k_prepare_prompts
local nl=$'\n'
assertEquals "%f%b%k%K{007} %F{000}world1 %k%F{007}%f ${nl}XXX" "${(e)PROMPT}"
}
source shunit2/shunit2

View File

@@ -0,0 +1,60 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
source functions/*
}
function testOverwritingIconsWork() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_CUSTOM_WORLD1_ICON='icon-here'
assertEquals "%K{007} %F{000}icon-here %f%F{000}world1 %k%F{007}%f " "$(build_left_prompt)"
}
function testVisualIdentifierAppearsBeforeSegmentContentOnLeftSegments() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_CUSTOM_WORLD1_ICON='icon-here'
assertEquals "%K{007} %F{000}icon-here %f%F{000}world1 %k%F{007}%f " "$(build_left_prompt)"
}
function testVisualIdentifierAppearsAfterSegmentContentOnRightSegments() {
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_CUSTOM_WORLD1_ICON='icon-here'
assertEquals "%F{007}%f%K{007}%F{000} world1%F{000} icon-here%f%E" "$(build_right_prompt)"
}
function testVisualIdentifierPrintsNothingIfNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
assertEquals "%K{007} %F{000}world1 %k%F{007}%f " "$(build_left_prompt)"
}
function testVisualIdentifierIsPrintedInNumericalColorCode() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
local POWERLEVEL9K_CUSTOM_WORLD1_ICON="xxx"
local POWERLEVEL9K_CUSTOM_WORLD1_VISUAL_IDENTIFIER_COLOR="purple3"
assertEquals "%K{007} %F{056}xxx %f%F{000}world1 %k%F{007}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -22,6 +22,10 @@ function testGetColorCodeWithNumericalColor() {
assertEquals '002' "$(getColorCode '002')"
}
function testGetColorCodeWithNoneColor() {
assertEquals 'none' "$(getColorCode 'NONE')"
}
function testIsSameColorComparesAnsiForegroundAndNumericalColorCorrectly() {
assertTrue "isSameColor 'green' '002'"
}
@@ -30,13 +34,34 @@ function testIsSameColorComparesAnsiBackgroundAndNumericalColorCorrectly() {
assertTrue "isSameColor 'bg-green' '002'"
}
function testIsSameColorComparesNumericalBackgroundAndNumericalColorCorrectly() {
assertTrue "isSameColor '010' '2'"
function testIsSameColorComparesShortCodesCorrectly() {
assertTrue "isSameColor '002' '2'"
}
function testIsSameColorDoesNotYieldNotEqualColorsTruthy() {
assertFalse "isSameColor 'green' '003'"
}
function testIsSameColorHandlesNoneCorrectly() {
assertTrue "isSameColor 'none' 'NOnE'"
}
source shunit2/source/2.1/src/shunit2
function testIsSameColorCompareTwoNoneColorsCorrectly() {
assertTrue "isSameColor 'none' 'none'"
}
function testIsSameColorComparesColorWithNoneCorrectly() {
assertFalse "isSameColor 'green' 'none'"
}
function testBrightColorsWork() {
# We had some code in the past that equalized bright colors
# with normal ones. This code is now gone, and this test should
# ensure that all input channels for bright colors are handled
# correctly.
assertTrue "isSameColor 'cyan' '006'"
assertEquals '006' "$(getColorCode 'cyan')"
assertEquals '006' "$(getColor 'cyan')"
}
source shunit2/shunit2

View File

@@ -10,21 +10,15 @@ function setUp() {
_OLD_LC_CTYPE="${LC_CTYPE}"
# Reset actual LC_CTYPE
unset LC_CTYPE
# Store old P9K mode
_OLD_P9K_MODE="${POWERLEVEL9K_MODE}"
}
function tearDown() {
# Restore LC_CTYPE
LC_CTYPE="${_OLD_LC_CTYPE}"
# Restore old P9K mode
POWERLEVEL9K_MODE="${_OLD_P9K_MODE}"
}
function testLcCtypeIsSetCorrectlyInDefaultMode() {
POWERLEVEL9K_MODE="default"
local POWERLEVEL9K_MODE="default"
# Load Powerlevel9k
source functions/icons.zsh
@@ -32,7 +26,7 @@ function testLcCtypeIsSetCorrectlyInDefaultMode() {
}
function testLcCtypeIsSetCorrectlyInAwesomePatchedMode() {
POWERLEVEL9K_MODE="awesome-patched"
local POWERLEVEL9K_MODE="awesome-patched"
# Load Powerlevel9k
source functions/icons.zsh
@@ -40,7 +34,7 @@ function testLcCtypeIsSetCorrectlyInAwesomePatchedMode() {
}
function testLcCtypeIsSetCorrectlyInAwesomeFontconfigMode() {
POWERLEVEL9K_MODE="awesome-fontconfig"
local POWERLEVEL9K_MODE="awesome-fontconfig"
# Load Powerlevel9k
source functions/icons.zsh
@@ -48,7 +42,7 @@ function testLcCtypeIsSetCorrectlyInAwesomeFontconfigMode() {
}
function testLcCtypeIsSetCorrectlyInNerdfontFontconfigMode() {
POWERLEVEL9K_MODE="nerdfont-fontconfig"
local POWERLEVEL9K_MODE="nerdfont-fontconfig"
# Load Powerlevel9k
source functions/icons.zsh
@@ -56,7 +50,7 @@ function testLcCtypeIsSetCorrectlyInNerdfontFontconfigMode() {
}
function testLcCtypeIsSetCorrectlyInFlatMode() {
POWERLEVEL9K_MODE="flat"
local POWERLEVEL9K_MODE="flat"
# Load Powerlevel9k
source functions/icons.zsh
@@ -64,7 +58,7 @@ function testLcCtypeIsSetCorrectlyInFlatMode() {
}
function testLcCtypeIsSetCorrectlyInCompatibleMode() {
POWERLEVEL9K_MODE="compatible"
local POWERLEVEL9K_MODE="compatible"
# Load Powerlevel9k
source functions/icons.zsh
@@ -76,7 +70,7 @@ function testLcCtypeIsSetCorrectlyInCompatibleMode() {
function testAllIconsAreDefinedLikeInDefaultMode() {
# Always compare against this mode
local _P9K_TEST_MODE="default"
POWERLEVEL9K_MODE="${_P9K_TEST_MODE}"
local POWERLEVEL9K_MODE="${_P9K_TEST_MODE}"
source functions/icons.zsh
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
# We later check via (r) "subscript" flag that our key
@@ -121,6 +115,15 @@ function testAllIconsAreDefinedLikeInDefaultMode() {
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "nerdfont-complete" mode
POWERLEVEL9K_MODE="nerdfont-complete"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "flat" mode
POWERLEVEL9K_MODE="flat"
source functions/icons.zsh
@@ -148,7 +151,7 @@ function testAllIconsAreDefinedLikeInDefaultMode() {
function testAllIconsAreDefinedLikeInAwesomePatchedMode() {
# Always compare against this mode
local _P9K_TEST_MODE="awesome-patched"
POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
local POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
source functions/icons.zsh
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
# We later check via (r) "subscript" flag that our key
@@ -193,6 +196,15 @@ function testAllIconsAreDefinedLikeInAwesomePatchedMode() {
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "nerdfont-complete" mode
POWERLEVEL9K_MODE="nerdfont-complete"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "flat" mode
POWERLEVEL9K_MODE="flat"
source functions/icons.zsh
@@ -220,7 +232,7 @@ function testAllIconsAreDefinedLikeInAwesomePatchedMode() {
function testAllIconsAreDefinedLikeInAwesomeFontconfigMode() {
# Always compare against this mode
local _P9K_TEST_MODE="awesome-fontconfig"
POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
local POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
source functions/icons.zsh
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
# We later check via (r) "subscript" flag that our key
@@ -265,6 +277,15 @@ function testAllIconsAreDefinedLikeInAwesomeFontconfigMode() {
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "nerdfont-complete" mode
POWERLEVEL9K_MODE="nerdfont-complete"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "flat" mode
POWERLEVEL9K_MODE="flat"
source functions/icons.zsh
@@ -292,7 +313,7 @@ function testAllIconsAreDefinedLikeInAwesomeFontconfigMode() {
function testAllIconsAreDefinedLikeInNerdfontFontconfigMode() {
# Always compare against this mode
local _P9K_TEST_MODE="nerdfont-fontconfig"
POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
local POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
source functions/icons.zsh
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
# We later check via (r) "subscript" flag that our key
@@ -337,6 +358,15 @@ function testAllIconsAreDefinedLikeInNerdfontFontconfigMode() {
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "nerdfont-complete" mode
POWERLEVEL9K_MODE="nerdfont-complete"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "flat" mode
POWERLEVEL9K_MODE="flat"
source functions/icons.zsh
@@ -359,4 +389,85 @@ function testAllIconsAreDefinedLikeInNerdfontFontconfigMode() {
unset _ICONS_UNDER_TEST
}
source shunit2/source/2.1/src/shunit2
# Go through all icons defined in nerdfont-complete mode, and
# check if all of them are defined in the other modes.
function testAllIconsAreDefinedLikeInNerdfontCompleteMode() {
# Always compare against this mode
local _P9K_TEST_MODE="nerdfont-complete"
local POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
source functions/icons.zsh
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
# We later check via (r) "subscript" flag that our key
# is in the values of our flat array.
typeset -ah _ICONS_UNDER_TEST
_ICONS_UNDER_TEST=(${(k)icons[@]})
# Switch to "default" mode
POWERLEVEL9K_MODE="default"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
# Iterate over all keys found in the _ICONS_UNDER_TEST
# array and compare it with the icons array of the
# current POWERLEVEL9K_MODE.
# Use parameter expansion, to directly check if the
# key exists in the flat current array of keys. That
# is quite complicated, but there seems no easy way
# to check the mere existance of a key in an array.
# The usual way would always return the value, so that
# would do the wrong thing as we have some (on purpose)
# empty values.
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "awesome-patched" mode
POWERLEVEL9K_MODE="awesome-patched"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "awesome-fontconfig" mode
POWERLEVEL9K_MODE="awesome-fontconfig"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "nerdfont-fontconfig" mode
POWERLEVEL9K_MODE="nerdfont-fontconfig"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "flat" mode
POWERLEVEL9K_MODE="flat"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
# Switch to "compatible" mode
POWERLEVEL9K_MODE="compatible"
source functions/icons.zsh
typeset -ah current_icons
current_icons=(${(k)icons[@]})
for key in ${_ICONS_UNDER_TEST}; do
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
done
unset current_icons
unset _ICONS_UNDER_TEST
}
source shunit2/shunit2

View File

@@ -106,4 +106,4 @@ function testSegmentShouldNotBeJoinedIfPredecessingSegmentIsNotJoinedButConditio
unset segments
}
source shunit2/source/2.1/src/shunit2
source shunit2/shunit2

View File

@@ -17,68 +17,66 @@ function setUp() {
}
function testJoinedSegments() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_joined)
cd /tmp
assertEquals "%K{blue} %F{black}/tmp %K{blue}%F{black}%F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp %K{004}%F{000}%F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
cd -
}
function testTransitiveJoinedSegments() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir root_indicator_joined dir_joined)
cd /tmp
assertEquals "%K{blue} %F{black}/tmp %K{blue}%F{black}%F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp %K{004}%F{000}%F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
cd -
}
function testJoiningWithConditionalSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir background_jobs dir_joined)
cd /tmp
assertEquals "%K{blue} %F{black}/tmp %K{blue}%F{black} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp %K{004}%F{000} %F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
cd -
}
function testDynamicColoringOfSegmentsWork() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='red'
local POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='red'
cd /tmp
assertEquals "%K{red} %F{black}/tmp %k%F{red}%f " "$(build_left_prompt)"
assertEquals "%K{001} %F{000}/tmp %k%F{001}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_DIR_DEFAULT_BACKGROUND
cd -
}
function testDynamicColoringOfVisualIdentifiersWork() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR='green'
POWERLEVEL9K_FOLDER_ICON="icon-here"
local POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR='green'
local POWERLEVEL9K_FOLDER_ICON="icon-here"
cd /tmp
assertEquals "%K{blue} %F{green%}icon-here %f%F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{002}icon-here %f%F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR
unset POWERLEVEL9K_FOLDER_ICON
cd -
}
function testColoringOfVisualIdentifiersDoesNotOverwriteColoringOfSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR='green'
POWERLEVEL9K_DIR_DEFAULT_FOREGROUND='red'
POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='yellow'
POWERLEVEL9K_FOLDER_ICON="icon-here"
local POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR='green'
local POWERLEVEL9K_DIR_DEFAULT_FOREGROUND='red'
local POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='yellow'
local POWERLEVEL9K_FOLDER_ICON="icon-here"
# Re-Source the icons, as the POWERLEVEL9K_MODE is directly
# evaluated there.
@@ -86,19 +84,15 @@ function testColoringOfVisualIdentifiersDoesNotOverwriteColoringOfSegment() {
cd /tmp
assertEquals "%K{yellow} %F{green%}icon-here %f%F{red}/tmp %k%F{yellow}%f " "$(build_left_prompt)"
assertEquals "%K{003} %F{002}icon-here %f%F{001}/tmp %k%F{003}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR
unset POWERLEVEL9K_DIR_DEFAULT_FOREGROUND
unset POWERLEVEL9K_DIR_DEFAULT_BACKGROUND
unset POWERLEVEL9K_FOLDER_ICON
cd -
}
function testOverwritingIconsWork() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_FOLDER_ICON='icon-here'
local POWERLEVEL9K_FOLDER_ICON='icon-here'
#local testFolder=$(mktemp -d -p p9k)
# Move testFolder under home folder
#mv testFolder ~
@@ -106,31 +100,24 @@ function testOverwritingIconsWork() {
#cd ~/$testFolder
cd /tmp
assertEquals "%K{blue} %F{black%}icon-here %f%F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}icon-here %f%F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_DIR_FOLDER_ICON
cd -
# rm -fr ~/$testFolder
}
function testNewlineOnRpromptCanBeDisabled() {
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_RPROMPT_ON_NEWLINE=false
POWERLEVEL9K_CUSTOM_WORLD='echo world'
POWERLEVEL9K_CUSTOM_RWORLD='echo rworld'
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
local POWERLEVEL9K_RPROMPT_ON_NEWLINE=false
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local POWERLEVEL9K_CUSTOM_RWORLD='echo rworld'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_rworld)
powerlevel9k_prepare_prompts
assertEquals '$(print_icon MULTILINE_FIRST_PROMPT_PREFIX) world  $(print_icon MULTILINE_LAST_PROMPT_PREFIX) rworld' "$(print -P ${PROMPT}${RPROMPT})"
unset POWERLEVEL9K_PROMPT_ON_NEWLINE
unset POWERLEVEL9K_RPROMPT_ON_NEWLINE
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
unset POWERLEVEL9K_CUSTOM_WORLD
unset POWERLEVEL9K_CUSTOM_RWORLD
}
source shunit2/source/2.1/src/shunit2
source shunit2/shunit2

View File

@@ -0,0 +1,69 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testAnacondaSegmentPrintsNothingIfNoAnacondaPathIsSet() {
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda custom_world)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
# Unset anacona variables
unset CONDA_ENV_PATH
unset CONDA_PREFIX
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testAnacondaSegmentWorksIfOnlyAnacondaPathIsSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
local POWERLEVEL9K_PYTHON_ICON="icon-here"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
CONDA_ENV_PATH=/tmp
unset CONDA_PREFIX
assertEquals "%K{004} %F{000}icon-here %f%F{000}(tmp) %k%F{004}%f " "$(build_left_prompt)"
}
function testAnacondaSegmentWorksIfOnlyAnacondaPrefixIsSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
local POWERLEVEL9K_PYTHON_ICON="icon-here"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset CONDA_ENV_PATH
local CONDA_PREFIX="test"
assertEquals "%K{004} %F{000}icon-here %f%F{000}(test) %k%F{004}%f " "$(build_left_prompt)"
}
function testAnacondaSegmentWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
local POWERLEVEL9K_PYTHON_ICON="icon-here"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local CONDA_ENV_PATH=/tmp
local CONDA_PREFIX="test"
assertEquals "%K{004} %F{000}icon-here %f%F{000}(tmptest) %k%F{004}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -0,0 +1,61 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testAwsEbEnvSegmentPrintsNothingIfNoElasticBeanstalkEnvironmentIsSet() {
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env custom_world)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test/.elasticbeanstalk
echo "test:\n environment: test" > /tmp/powerlevel9k-test/.elasticbeanstalk/config.yml
cd /tmp/powerlevel9k-test
assertEquals "%K{000} %F{002}🌱 %f%F{002}test %k%F{000}%f " "$(build_left_prompt)"
rm -fr /tmp/powerlevel9k-test
cd -
}
function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSetInParentDirectory() {
# Skip test, because currently we cannot detect
# if the configuration is in a parent directory
startSkipping # Skip test
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test/.elasticbeanstalk
mkdir -p /tmp/powerlevel9k-test/1/12/123/1234/12345
echo "test:\n environment: test" > /tmp/powerlevel9k-test/.elasticbeanstalk/config.yml
cd /tmp/powerlevel9k-test/1/12/123/1234/12345
assertEquals "%K{000} %F{002}🌱 %f%F{002}test %k%F{000}%f " "$(build_left_prompt)"
rm -fr /tmp/powerlevel9k-test
cd -
}
source shunit2/shunit2

View File

@@ -0,0 +1,78 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testBackgroundJobsSegmentPrintsNothingWithoutBackgroundJobs() {
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs custom_world)
alias jobs="nojobs 2>/dev/null"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias jobs
}
function testBackgroundJobsSegmentWorksWithOneBackgroundJob() {
unset POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
jobs() {
echo '[1] + 30444 suspended nvim xx'
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{006}%f %k%F{000}%f " "$(build_left_prompt)"
unfunction jobs
}
function testBackgroundJobsSegmentWorksWithMultipleBackgroundJobs() {
local POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
jobs() {
echo "[1] 31190 suspended nvim xx"
echo "[2] - 31194 suspended nvim xx2"
echo "[3] + 31206 suspended nvim xx3"
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{006}%f %k%F{000}%f " "$(build_left_prompt)"
unfunction jobs
}
function testBackgroundJobsSegmentWithVerboseMode() {
local POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=true
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
jobs() {
echo "[1] 31190 suspended nvim xx"
echo "[2] - 31194 suspended nvim xx2"
echo "[3] + 31206 suspended nvim xx3"
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{006} %f%F{006}3 %k%F{000}%f " "$(build_left_prompt)"
unfunction jobs
}
source shunit2/shunit2

View File

@@ -0,0 +1,177 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
P9K_HOME=$(pwd)
### Test specific
# Create default folder
FOLDER=/tmp/powerlevel9k-test
mkdir -p "${FOLDER}"
cd $FOLDER
# Prepare folder for pmset (OSX)
PMSET_PATH=$FOLDER/usr/bin
mkdir -p $PMSET_PATH
# Prepare folder for $BATTERY (Linux)
BATTERY_PATH=$FOLDER/sys/class/power_supply
mkdir -p $BATTERY_PATH
mkdir -p $BATTERY_PATH/BAT0
mkdir -p $BATTERY_PATH/BAT1
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}" &>/dev/null
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test &>/dev/null
unset PMSET_PATH
unset BATTERY_PATH
unset FOLDER
unset P9K_HOME
}
# Mock Battery
# For mocking pmset on OSX this function takes one argument (the
# content that pmset should echo).
# For mocking the battery on Linux this function takes two
# arguments: $1 is the capacity; $2 the battery status.
function makeBatterySay() {
if [[ -z "${FOLDER}" ]]; then
echo "Fake root path is not correctly set!"
exit 1
fi
# OSX
echo "#!/bin/sh" > $PMSET_PATH/pmset
echo "echo \"$1\"" >> $PMSET_PATH/pmset
chmod +x $PMSET_PATH/pmset
# Linux
local capacity="$1"
echo "$capacity" > $BATTERY_PATH/BAT0/capacity
echo "$capacity" > $BATTERY_PATH/BAT1/capacity
local battery_status="$2"
echo "$battery_status" > $BATTERY_PATH/BAT0/status
echo "$battery_status" > $BATTERY_PATH/BAT1/status
}
function testBatterySegmentIfBatteryIsLowWhileDischargingOnOSX() {
local OS='OSX' # Fake OSX
makeBatterySay "Now drawing from 'Battery Power'
-InternalBattery-0 (id=1234567) 4%; discharging; 0:05 remaining present: true"
assertEquals "%K{000} %F{001}🔋 %f%F{001}4%% (0:05) " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsLowWhileChargingOnOSX() {
local OS='OSX' # Fake OSX
makeBatterySay "Now drawing from 'Battery Power'
-InternalBattery-0 (id=1234567) 4%; charging; 0:05 remaining present: true"
assertEquals "%K{000} %F{003}🔋 %f%F{003}4%% (0:05) " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsAlmostFullWhileDischargingOnOSX() {
local OS='OSX' # Fake OSX
makeBatterySay "Now drawing from 'Battery Power'
-InternalBattery-0 (id=1234567) 98%; discharging; 3:57 remaining present: true"
assertEquals "%K{000} %F{007}🔋 %f%F{007}98%% (3:57) " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsAlmostFullWhileChargingOnOSX() {
local OS='OSX' # Fake OSX
makeBatterySay "Now drawing from 'Battery Power'
-InternalBattery-0 (id=1234567) 98%; charging; 3:57 remaining present: true"
assertEquals "%K{000} %F{003}🔋 %f%F{003}98%% (3:57) " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsFullOnOSX() {
local OS='OSX' # Fake OSX
makeBatterySay "Now drawing from 'AC Power'
-InternalBattery-0 (id=1234567) 99%; charged; 0:00 remaining present: true"
assertEquals "%K{000} %F{002}🔋 %f%F{002}99%% " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsCalculatingOnOSX() {
local OS='OSX' # Fake OSX
makeBatterySay "Now drawing from 'Battery Power'
-InternalBattery-0 (id=1234567) 99%; discharging; (no estimate) present: true"
assertEquals "%K{000} %F{007}🔋 %f%F{007}99%% (...) " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsLowWhileDischargingOnLinux() {
local OS='Linux' # Fake Linux
makeBatterySay "4" "Discharging"
assertEquals "%K{000} %F{001}🔋 %f%F{001}4%% " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsLowWhileChargingOnLinux() {
local OS='Linux' # Fake Linux
makeBatterySay "4" "Charging"
assertEquals "%K{000} %F{003}🔋 %f%F{003}4%% " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsNormalWhileDischargingOnLinux() {
local OS='Linux' # Fake Linux
makeBatterySay "10" "Discharging"
assertEquals "%K{000} %F{007}🔋 %f%F{007}10%% " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsNormalWhileChargingOnLinux() {
local OS='Linux' # Fake Linux
makeBatterySay "10" "Charging"
assertEquals "%K{000} %F{003}🔋 %f%F{003}10%% " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsFullOnLinux() {
local OS='Linux' # Fake Linux
makeBatterySay "100" "Full"
assertEquals "%K{000} %F{002}🔋 %f%F{002}100%% " "$(prompt_battery left 1 false ${FOLDER})"
}
function testBatterySegmentIfBatteryIsNormalWithAcpiEnabledOnLinux() {
local OS='Linux' # Fake Linux
makeBatterySay "50" "Discharging"
echo "echo 'Batter 0: Discharging, 50%, 01:38:54 remaining'" > ${FOLDER}/usr/bin/acpi
chmod +x ${FOLDER}/usr/bin/acpi
# For running on Mac, we need to mock date :(
[[ -f /usr/local/bin/gdate ]] && alias date=gdate
assertEquals "%K{000} %F{007}🔋 %f%F{007}50%% (1:38) " "$(prompt_battery left 1 false ${FOLDER})"
unalias date &>/dev/null
# unaliasing date fails where it was never aliased (e.g. on Linux).
# This causes the whole test to fail, because the return code is
# non-zero.
return 0
}
function testBatterySegmentIfBatteryIsCalculatingWithAcpiEnabledOnLinux() {
local OS='Linux' # Fake Linux
makeBatterySay "50" "Discharging"
# Todo: Include real acpi output!
echo "echo 'Batter 0: Discharging, 50%, rate remaining'" > ${FOLDER}/usr/bin/acpi
chmod +x ${FOLDER}/usr/bin/acpi
assertEquals "%K{000} %F{007}🔋 %f%F{007}50%% (...) " "$(prompt_battery left 1 false ${FOLDER})"
}
source shunit2/shunit2

View File

@@ -7,90 +7,98 @@ SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function testCommandExecutionTimeIsNotShownIfTimeIsBelowThreshold() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world command_execution_time)
POWERLEVEL9K_CUSTOM_WORLD='echo world'
_P9K_COMMAND_DURATION=2
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_CUSTOM_WORLD
unset _P9K_COMMAND_DURATION
# Override payload
local _P9K_COMMAND_DURATION=2
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testCommandExecutionTimeThresholdCouldBeChanged() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1
_P9K_COMMAND_DURATION=2.03
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1
assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}2.03 %k%F{red}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset _P9K_COMMAND_DURATION
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD
# Override payload
local _P9K_COMMAND_DURATION=2.03
assertEquals "%K{001} %F{226}Dur %f%F{226}2.03 %k%F{001}%f " "$(build_left_prompt)"
}
function testCommandExecutionTimeThresholdCouldBeSetToZero() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
_P9K_COMMAND_DURATION=0.03
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
local _P9K_COMMAND_DURATION=0.03
assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}0.03 %k%F{red}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset _P9K_COMMAND_DURATION
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD
assertEquals "%K{001} %F{226}Dur %f%F{226}0.03 %k%F{001}%f " "$(build_left_prompt)"
}
function testCommandExecutionTimePrecisionCouldBeChanged() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4
_P9K_COMMAND_DURATION=0.0001
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4
assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}0.0001 %k%F{red}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset _P9K_COMMAND_DURATION
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD
# Override payload
local _P9K_COMMAND_DURATION=0.0001
assertEquals "%K{001} %F{226}Dur %f%F{226}0.0001 %k%F{001}%f " "$(build_left_prompt)"
}
function testCommandExecutionTimePrecisionCouldBeSetToZero() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
_P9K_COMMAND_DURATION=23.5001
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}23 %k%F{red}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset _P9K_COMMAND_DURATION
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION
# Override payload
local _P9K_COMMAND_DURATION=23.5001
assertEquals "%K{001} %F{226}Dur %f%F{226}23 %k%F{001}%f " "$(build_left_prompt)"
}
function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
_P9K_COMMAND_DURATION=180
assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}03:00 %k%F{red}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset _P9K_COMMAND_DURATION
# Override payload
local _P9K_COMMAND_DURATION=180
assertEquals "%K{001} %F{226}Dur %f%F{226}03:00 %k%F{001}%f " "$(build_left_prompt)"
}
function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
_P9K_COMMAND_DURATION=7200
assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}02:00:00 %k%F{red}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset _P9K_COMMAND_DURATION
# Override payload
local _P9K_COMMAND_DURATION=7200
assertEquals "%K{001} %F{226}Dur %f%F{226}02:00:00 %k%F{001}%f " "$(build_left_prompt)"
}
source shunit2/source/2.1/src/shunit2
source shunit2/shunit2

View File

@@ -0,0 +1,113 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Test specific settings
OLD_DEFAULT_USER=$DEFAULT_USER
unset DEFAULT_USER
}
function tearDown() {
# Restore old variables
[[ -n "$OLD_DEFAULT_USER" ]] && DEFAULT_USER=$OLD_DEFAULT_USER
return 0
}
function testContextSegmentDoesNotGetRenderedWithDefaultUser() {
local DEFAULT_USER=$(whoami)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context custom_world)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
function sudo() {
return 0
}
local SSH_CLIENT="putty"
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
unfunction sudo
}
function testContextSegmentWithForeignUser() {
function sudo() {
return 0
}
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
unfunction sudo
}
# TODO: How to test root?
function testContextSegmentWithRootUser() {
startSkipping # Skip test
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
}
function testOverridingContextTemplate() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
local POWERLEVEL9K_CONTEXT_TEMPLATE=xx
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}xx %k%F{000}%f " "$(build_left_prompt)"
}
function testContextSegmentIsShownIfDefaultUserIsSetWhenForced() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
local POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
local DEFAULT_USER=$(whoami)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
}
function testContextSegmentIsShownIfForced() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
local POWERLEVEL9K_ALWAYS_SHOW_USER=true
local DEFAULT_USER=$(whoami)
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}$(whoami) %k%F{000}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -0,0 +1,86 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testCustomDirectOutputSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testCustomClosureSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
function p9k_hello_world() {
echo "world"
}
local POWERLEVEL9K_CUSTOM_WORLD='p9k_hello_world'
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testSettingBackgroundForCustomSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
local POWERLEVEL9K_CUSTOM_WORLD_BACKGROUND="yellow"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{003} %F{000}world %k%F{003}%f " "$(build_left_prompt)"
}
function testSettingForegroundForCustomSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
local POWERLEVEL9K_CUSTOM_WORLD_FOREGROUND="red"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{001}world %k%F{007}%f " "$(build_left_prompt)"
}
function testSettingVisualIdentifierForCustomSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
local POWERLEVEL9K_CUSTOM_WORLD_ICON="hw"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}hw %f%F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testSettingVisualIdentifierForegroundColorForCustomSegment() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
local POWERLEVEL9K_CUSTOM_WORLD_ICON="hw"
local POWERLEVEL9K_CUSTOM_WORLD_VISUAL_IDENTIFIER_COLOR="red"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{001}hw %f%F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -0,0 +1,83 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function testDetectVirtSegmentPrintsNothingIfSystemdIsNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias systemd-detect-virt="novirt"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias systemd-detect-virt
}
function testDetectVirtSegmentIfSystemdReturnsPlainName() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
alias systemd-detect-virt="echo 'xxx'"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}xxx %k%F{000}%f " "$(build_left_prompt)"
unalias systemd-detect-virt
}
function testDetectVirtSegmentIfRootFsIsOnExpectedInode() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
# Well. This is a weak test, as it fixates the implementation,
# but it is necessary, as the implementation relys on the root
# directory having the inode number "2"..
alias systemd-detect-virt="echo 'none'"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
# The original command in the implementation is "ls -di / | grep -o 2",
# which translates to: Show the inode number of "/" and test if it is "2".
alias ls="echo '2'"
assertEquals "%K{000} %F{003}none %k%F{000}%f " "$(build_left_prompt)"
unalias ls
unalias systemd-detect-virt
}
function testDetectVirtSegmentIfRootFsIsNotOnExpectedInode() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
# Well. This is a weak test, as it fixates the implementation,
# but it is necessary, as the implementation relys on the root
# directory having the inode number "2"..
alias systemd-detect-virt="echo 'none'"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
# The original command in the implementation is "ls -di / | grep -o 2",
# which translates to: Show the inode number of "/" and test if it is "2".
alias ls="echo '3'"
assertEquals "%K{000} %F{003}chroot %k%F{000}%f " "$(build_left_prompt)"
unalias ls
unalias systemd-detect-virt
}
source shunit2/shunit2

View File

@@ -7,179 +7,199 @@ SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
# Every test should at least use the dir segment
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
P9K_HOME="${PWD}"
}
function tearDown() {
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset P9K_HOME
}
function testDirPathAbsoluteWorks() {
POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd ~
assertEquals "%K{blue} %F{black}/home/travis %k%F{blue}%f " "$(build_left_prompt)"
# Unfortunately, we cannot fake Linux or OSX here, because
# of /home or /Users path.. That is why we change the test
# according to the OS of the host.
if [[ "${OS}" == 'Linux' ]]; then
assertEquals "%K{004} %F{000}/home/${USER} %k%F{004}%f " "$(build_left_prompt)"
elif [[ "${OS}" == 'OSX' ]]; then
assertEquals "%K{004} %F{000}/Users/${USER} %k%F{004}%f " "$(build_left_prompt)"
fi
cd -
unset POWERLEVEL9K_DIR_PATH_ABSOLUTE
}
function testTruncateFoldersWorks() {
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
mkdir -p $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black}/12345678/123456789 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/12345678/123456789 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testTruncateFolderWithHomeDirWorks() {
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
CURRENT_DIR=$(pwd)
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
local CURRENT_DIR=$(pwd)
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd ~
FOLDER="powerlevel9k-test-${RANDOM}"
local 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)"
assertEquals "%K{004} %F{000}~ %k%F{004}%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'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
mkdir -p $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black}/tmp/post/1/12/123/1234/1245/1256/1267/1278/123456789 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp/post/1/12/123/1234/1245/1256/1267/1278/123456789 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testTruncationFromRightWorks() {
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
mkdir -p $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black}/tmp/po/1/12/123/12/12/12/12/12/123456789 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp/po/1/12/123/12/12/12/12/12/123456789 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testTruncateToLastWorks() {
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_last"
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_last"
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
mkdir -p $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black}123456789 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}123456789 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testTruncateToFirstAndLastWorks() {
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_first_and_last"
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_first_and_last"
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
mkdir -p $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black}/tmp/powerlevel9k-test////////12345678/123456789 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp/powerlevel9k-test////////12345678/123456789 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testTruncateAbsoluteWorks() {
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
mkdir -p $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black}89 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}89 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testTruncationFromRightWithEmptyDelimiter() {
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_DELIMITER=""
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_DELIMITER=""
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
mkdir -p $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black}/tmp/po/1/12/123/12/12/12/12/12/123456789 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp/po/1/12/123/12/12/12/12/12/123456789 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_DELIMITER
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testTruncateWithFolderMarkerWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_with_folder_marker"
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_with_folder_marker"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local BASEFOLDER=/tmp/powerlevel9k-test
local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567
@@ -187,20 +207,20 @@ function testTruncateWithFolderMarkerWorks() {
# Setup folder marker
touch $BASEFOLDER/1/12/.shorten_folder_marker
cd $FOLDER
assertEquals "%K{blue} %F{black}//12/123/1234/12345/123456/1234567 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}//12/123/1234/12345/123456/1234567 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr $BASEFOLDER
unset BASEFOLDER
unset FOLDER
unset POWERLEVEL9K_SHORTEN_STRATEGY
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
}
function testTruncateWithFolderMarkerWithChangedFolderMarker() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_with_folder_marker"
POWERLEVEL9K_SHORTEN_FOLDER_MARKER='.xxx'
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_with_folder_marker"
local POWERLEVEL9K_SHORTEN_FOLDER_MARKER='.xxx'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local BASEFOLDER=/tmp/powerlevel9k-test
local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567
@@ -208,15 +228,10 @@ function testTruncateWithFolderMarkerWithChangedFolderMarker() {
# Setup folder marker
touch $BASEFOLDER/1/12/.xxx
cd $FOLDER
assertEquals "%K{blue} %F{black}//12/123/1234/12345/123456/1234567 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}//12/123/1234/12345/123456/1234567 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr $BASEFOLDER
unset BASEFOLDER
unset FOLDER
unset POWERLEVEL9K_SHORTEN_FOLDER_MARKER
unset POWERLEVEL9K_SHORTEN_STRATEGY
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
}
function testTruncateWithPackageNameWorks() {
@@ -237,18 +252,19 @@ function testTruncateWithPackageNameWorks() {
# Go back to deeper folder
cd "${FOLDER}"
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
assertEquals "%K{blue} %F{black}My_Package/1/12/123/12/12/12/12/12/123456789 %k%F{blue}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{004} %F{000}My_Package/1/12/123/12/12/12/12/12/123456789 %k%F{004}%f " "$(build_left_prompt)"
# Go back
cd $p9kFolder
rm -fr $BASEFOLDER
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_SHORTEN_STRATEGY
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
}
function testTruncateWithPackageNameIfRepoIsSymlinkedInsideDeepFolder() {
@@ -276,18 +292,19 @@ function testTruncateWithPackageNameIfRepoIsSymlinkedInsideDeepFolder() {
# Go to deep folder inside linked repo
cd linked-repo/asdfasdf/qwerqwer
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
assertEquals "%K{blue} %F{black}My_Package/as/qwerqwer %k%F{blue}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{004} %F{000}My_Package/as/qwerqwer %k%F{004}%f " "$(build_left_prompt)"
# Go back
cd $p9kFolder
rm -fr $BASEFOLDER
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_SHORTEN_STRATEGY
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
}
function testTruncateWithPackageNameIfRepoIsSymlinkedInsideGitDir() {
@@ -311,123 +328,162 @@ function testTruncateWithPackageNameIfRepoIsSymlinkedInsideGitDir() {
cd linked-repo/.git/refs/heads
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
assertEquals "%K{blue} %F{black}My_Package/.g/re/heads %k%F{blue}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{004} %F{000}My_Package/.g/re/heads %k%F{004}%f " "$(build_left_prompt)"
# Go back
cd $p9kFolder
rm -fr $BASEFOLDER
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_SHORTEN_STRATEGY
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
}
function testHomeFolderDetectionWorks() {
POWERLEVEL9K_HOME_ICON='home-icon'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_HOME_ICON='home-icon'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd ~
assertEquals "%K{blue} %F{black%}home-icon %f%F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}home-icon %f%F{000}~ %k%F{004}%f " "$(build_left_prompt)"
cd -
unset POWERLEVEL9K_HOME_ICON
}
function testHomeSubfolderDetectionWorks() {
POWERLEVEL9K_HOME_SUB_ICON='sub-icon'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_HOME_SUB_ICON='sub-icon'
FOLDER=~/powerlevel9k-test
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=~/powerlevel9k-test
mkdir $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black%}sub-icon %f%F{black}~/powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}sub-icon %f%F{000}~/powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr $FOLDER
unset FOLDER
unset POWERLEVEL9K_HOME_SUB_ICON
}
function testOtherFolderDetectionWorks() {
POWERLEVEL9K_FOLDER_ICON='folder-icon'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_FOLDER_ICON='folder-icon'
FOLDER=/tmp/powerlevel9k-test
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER=/tmp/powerlevel9k-test
mkdir $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black%}folder-icon %f%F{black}/tmp/powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}folder-icon %f%F{000}/tmp/powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr $FOLDER
unset FOLDER
unset POWERLEVEL9K_FOLDER_ICON
}
function testChangingDirPathSeparator() {
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local FOLDER="/tmp/powerlevel9k-test/1/2"
mkdir -p $FOLDER
cd $FOLDER
assertEquals "%K{blue} %F{black}xXxtmpxXxpowerlevel9k-testxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}xXxtmpxXxpowerlevel9k-testxXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
cd -
unset FOLDER
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
}
function testHomeFolderAbbreviation() {
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local dir=$PWD
cd ~/
# default
POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
assertEquals "%K{blue} %F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{004} %F{000}~ %k%F{004}%f " "$(build_left_prompt)"
# substituted
POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
assertEquals "%K{blue} %F{black}qQq %k%F{blue}%f " "$(build_left_prompt)"
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{004} %F{000}qQq %k%F{004}%f " "$(build_left_prompt)"
cd /tmp
# default
POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
assertEquals "%K{blue} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{004} %F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
# substituted
POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
assertEquals "%K{blue} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{004} %F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
cd "$dir"
}
function testOmittingFirstCharacterWorks() {
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
POWERLEVEL9K_FOLDER_ICON='folder-icon'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
local POWERLEVEL9K_FOLDER_ICON='folder-icon'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd /tmp
assertEquals "%K{blue} %F{black%}folder-icon %f%F{black}tmp %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}folder-icon %f%F{000}tmp %k%F{004}%f " "$(build_left_prompt)"
cd -
unset POWERLEVEL9K_FOLDER_ICON
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
}
function testOmittingFirstCharacterWorksWithChangingPathSeparator() {
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
POWERLEVEL9K_FOLDER_ICON='folder-icon'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
local POWERLEVEL9K_FOLDER_ICON='folder-icon'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test/1/2
cd /tmp/powerlevel9k-test/1/2
assertEquals "%K{blue} %F{black%}folder-icon %f%F{black}tmpxXxpowerlevel9k-testxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}folder-icon %f%F{000}tmpxXxpowerlevel9k-testxXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_FOLDER_ICON
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
}
# This test makes it obvious that combining a truncation strategy
@@ -438,210 +494,278 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparator() {
# But it does more sense in combination with other truncation
# strategies.
function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndDefaultTruncation() {
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test/1/2
cd /tmp/powerlevel9k-test/1/2
assertEquals "%K{blue} %F{black}xXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}xXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndMiddleTruncation() {
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test/1/2
cd /tmp/powerlevel9k-test/1/2
assertEquals "%K{blue} %F{black}tmpxXxpostxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}tmpxXxpostxXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndRightTruncation() {
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test/1/2
cd /tmp/powerlevel9k-test/1/2
assertEquals "%K{blue} %F{black}tmpxXxpoxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}tmpxXxpoxXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testTruncateToUniqueWorks() {
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_to_unique'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_to_unique'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test/adam/devl
mkdir -p /tmp/powerlevel9k-test/alice/devl
mkdir -p /tmp/powerlevel9k-test/alice/docs
mkdir -p /tmp/powerlevel9k-test/bob/docs
cd /tmp/powerlevel9k-test/alice/devl
assertEquals "%K{blue} %F{black}txXxpxXxalxXxde %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}txXxpxXxalxXxde %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
unset POWERLEVEL9K_SHORTEN_STRATEGY
}
function testBoldHomeDirWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd ~
assertEquals "%K{blue} %F{black}%B~%b %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}%B~%b %k%F{004}%f " "$(build_left_prompt)"
cd -
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
}
function testBoldHomeSubdirWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p ~/powerlevel9k-test
cd ~/powerlevel9k-test
assertEquals "%K{blue} %F{black}~/%Bpowerlevel9k-test%b %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}~/%Bpowerlevel9k-test%b %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr ~/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
}
function testBoldRootDirWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd /
assertEquals "%K{blue} %F{black}%B/%b %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}%B/%b %k%F{004}%f " "$(build_left_prompt)"
cd -
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
}
function testBoldRootSubdirWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd /tmp
assertEquals "%K{blue} %F{black}/%Btmp%b %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/%Btmp%b %k%F{004}%f " "$(build_left_prompt)"
cd -
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
}
function testBoldRootSubSubdirWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test
cd /tmp/powerlevel9k-test
assertEquals "%K{blue} %F{black}/tmp/%Bpowerlevel9k-test%b %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp/%Bpowerlevel9k-test%b %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
}
function testHighlightHomeWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd ~
assertEquals "%K{blue} %F{black}%F{red}~ %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}%F{red}~ %k%F{004}%f " "$(build_left_prompt)"
cd -
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
}
function testHighlightHomeSubdirWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p ~/powerlevel9k-test
cd ~/powerlevel9k-test
assertEquals "%K{blue} %F{black}~/%F{red}powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}~/%F{red}powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr ~/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
}
function testHighlightRootWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd /
assertEquals "%K{blue} %F{black}%F{red}/ %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}%F{red}/ %k%F{004}%f " "$(build_left_prompt)"
cd -
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
}
function testHighlightRootSubdirWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
cd /tmp
assertEquals "%K{blue} %F{black}/%F{red}tmp %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/%F{red}tmp %k%F{004}%f " "$(build_left_prompt)"
cd -
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
}
function testHighlightRootSubSubdirWorks() {
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir /tmp/powerlevel9k-test
cd /tmp/powerlevel9k-test
assertEquals "%K{blue} %F{black}/tmp/%F{red}powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}/tmp/%F{red}powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
}
function testDirSeparatorColorHomeSubdirWorks() {
POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND='red'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND='red'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p ~/powerlevel9k-test
cd ~/powerlevel9k-test
assertEquals "%K{blue} %F{black}~%F{red}/%F{black}powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}~%F{red}/%F{black}powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr ~/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND
}
function testDirSeparatorColorRootSubSubdirWorks() {
POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND='red'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
local POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND='red'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
mkdir -p /tmp/powerlevel9k-test
cd /tmp/powerlevel9k-test
assertEquals "%K{blue} %F{black}%F{red}/%F{black}tmp%F{red}/%F{black}powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
assertEquals "%K{004} %F{000}%F{red}/%F{black}tmp%F{red}/%F{black}powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND
}
source shunit2/source/2.1/src/shunit2
source shunit2/shunit2

View File

@@ -0,0 +1,131 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Test specific
P9K_HOME=$(pwd)
FOLDER=/tmp/powerlevel9k-test
mkdir -p $FOLDER
cd $FOLDER
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset P9K_HOME
# Remove IP cache file
rm -f ${POWERLEVEL9K_PUBLIC_IP_FILE}
}
function testDiskUsageSegmentWhenDiskIsAlmostFull() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
df() {
echo "Filesystem 1K-blocks Used Available Use% Mounted on
/dev/disk1 487219288 471466944 15496344 97% /"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{001} %F{007}hdd %f%F{007}97%% %k%F{001}%f " "$(build_left_prompt)"
unfunction df
}
function testDiskUsageSegmentWhenDiskIsVeryFull() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
df() {
echo "Filesystem 1K-blocks Used Available Use% Mounted on
/dev/disk1 487219288 471466944 15496344 94% /"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{000}hdd %f%F{000}94%% %k%F{003}%f " "$(build_left_prompt)"
unfunction df
}
function testDiskUsageSegmentWhenDiskIsQuiteEmpty() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
df() {
echo "Filesystem 1K-blocks Used Available Use% Mounted on
/dev/disk1 487219288 471466944 15496344 4% /"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}hdd %f%F{003}4%% %k%F{000}%f " "$(build_left_prompt)"
unfunction df
}
function testDiskUsageSegmentPrintsNothingIfDiskIsQuiteEmptyAndOnlyWarningsShouldBeDisplayed() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage custom_world)
df() {
echo "Filesystem 1K-blocks Used Available Use% Mounted on
/dev/disk1 487219288 471466944 15496344 4% /"
}
local POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=true
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unfunction df
}
function testDiskUsageSegmentWarningLevelCouldBeAdjusted() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=10
df() {
echo "Filesystem 1K-blocks Used Available Use% Mounted on
/dev/disk1 487219288 471466944 15496344 11% /"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{000}hdd %f%F{000}11%% %k%F{003}%f " "$(build_left_prompt)"
unfunction df
}
function testDiskUsageSegmentCriticalLevelCouldBeAdjusted() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=5
local POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=10
df() {
echo "Filesystem 1K-blocks Used Available Use% Mounted on
/dev/disk1 487219288 471466944 15496344 11% /"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{001} %F{007}hdd %f%F{007}11%% %k%F{001}%f " "$(build_left_prompt)"
unfunction df
}
source shunit2/shunit2

View File

@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function mockGo() {
@@ -35,52 +33,56 @@ function mockGoEmptyGopath() {
function testGo() {
alias go=mockGo
POWERLEVEL9K_GO_ICON=""
local POWERLEVEL9K_GO_ICON=""
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(go_version)
PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{green} %F{grey93%} %f%F{grey93}go1.5.3 %k%F{green}%f " "$(build_left_prompt)"
local PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
assertEquals "%K{002} %F{255} %f%F{255}go1.5.3 %k%F{002}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_GO_ICON
unset PWD
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unalias go
}
function testGoSegmentPrintsNothingIfEmptyGopath() {
alias go=mockGoEmptyGopath
POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias go=mockGoEmptyGopath
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_CUSTOM_WORLD
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testGoSegmentPrintsNothingIfNotInGopath() {
alias go=mockGo
POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias go=mockGo
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_CUSTOM_WORLD
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testGoSegmentPrintsNothingIfGoIsNotAvailable() {
alias go=noGo
POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias go=noGo
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_CUSTOM_WORLD
unalias go
}
source shunit2/source/2.1/src/shunit2
source shunit2/shunit2

View File

@@ -0,0 +1,231 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testIpSegmentPrintsNothingOnOsxIfNotConnected() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
alias networksetup='echo "not connected"'
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local OS="OSX" # Fake OSX
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias networksetup
}
function testIpSegmentPrintsNothingOnLinuxIfNotConnected() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
alias ip='echo "not connected"'
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local OS="Linux" # Fake Linux
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias ip
}
function testIpSegmentWorksOnOsxWithNoInterfaceSpecified() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
alias networksetup="echo 'An asterisk (*) denotes that a network service is disabled.
(1) Ethernet
(Hardware Port: Ethernet, Device: en0)
(2) FireWire
(Hardware Port: FireWire, Device: fw0)
(3) Wi-Fi
(Hardware Port: Wi-Fi, Device: en1)
(4) Bluetooth PAN
(Hardware Port: Bluetooth PAN, Device: en3)
(5) Thunderbolt Bridge
(Hardware Port: Thunderbolt Bridge, Device: bridge0)
(6) Apple USB Ethernet Adapter
(Hardware Port: Apple USB Ethernet Adapter, Device: en4)
'"
alias ipconfig="_(){ echo '1.2.3.4'; };_"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local OS='OSX' # Fake OSX
assertEquals "%K{006} %F{000}IP %f%F{000}1.2.3.4 %k%F{006}%f " "$(build_left_prompt)"
unalias ipconfig
unalias networksetup
}
# There could be more than one confiured network interfaces.
# `networksetup -listnetworkserviceorder` lists the interfaces
# in hierarchical order, but from outside this is not obvious
# (implementation detail). So we need a test for this case.
function testIpSegmentWorksOnOsxWithMultipleInterfacesSpecified() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
alias networksetup="echo 'An asterisk (*) denotes that a network service is disabled.
(1) Ethernet
(Hardware Port: Ethernet, Device: en0)
(2) FireWire
(Hardware Port: FireWire, Device: fw0)
(3) Wi-Fi
(Hardware Port: Wi-Fi, Device: en1)
(4) Bluetooth PAN
(Hardware Port: Bluetooth PAN, Device: en3)
(5) Thunderbolt Bridge
(Hardware Port: Thunderbolt Bridge, Device: bridge0)
(6) Apple USB Ethernet Adapter
(Hardware Port: Apple USB Ethernet Adapter, Device: en4)
'"
# Return a unique IP address for every interface
ipconfig() {
case "${2}" {
en0)
echo 1.2.3.4
;;
fw0)
echo 2.3.4.5
;;
en1)
echo 3.4.5.6
;;
en3)
echo 4.5.6.7
;;
}
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local OS='OSX' # Fake OSX
assertEquals "%K{006} %F{000}IP %f%F{000}1.2.3.4 %k%F{006}%f " "$(build_left_prompt)"
unfunction ipconfig
unalias networksetup
}
function testIpSegmentWorksOnOsxWithInterfaceSpecified() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
local POWERLEVEL9K_IP_INTERFACE='xxx'
alias ipconfig="_(){ echo '1.2.3.4'; };_"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local OS='OSX' # Fake OSX
assertEquals "%K{006} %F{000}IP %f%F{000}1.2.3.4 %k%F{006}%f " "$(build_left_prompt)"
unalias ipconfig
}
function testIpSegmentWorksOnLinuxWithNoInterfaceSpecified() {
setopt aliases
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
# That command is harder to test, as it is used at first
# to get all relevant network interfaces and then for
# getting the configuration of that segment..
ip(){
if [[ "$*" == 'link ls up' ]]; then
echo "1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:7e:84:45 brd ff:ff:ff:ff:ff:ff";
fi
if [[ "$*" == '-4 a show eth0' ]]; then
echo '2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever';
fi
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local OS='Linux' # Fake Linux
assertEquals "%K{006} %F{000}IP %f%F{000}10.0.2.15 %k%F{006}%f " "$(build_left_prompt)"
unfunction ip
}
function testIpSegmentWorksOnLinuxWithMultipleInterfacesSpecified() {
setopt aliases
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
# That command is harder to test, as it is used at first
# to get all relevant network interfaces and then for
# getting the configuration of that segment..
ip(){
if [[ "$*" == 'link ls up' ]]; then
echo "1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:7e:84:45 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:7e:84:45 brd ff:ff:ff:ff:ff:ff
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:7e:84:45 brd ff:ff:ff:ff:ff:ff";
fi
if [[ "$*" == '-4 a show eth1' ]]; then
echo '3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever';
fi
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local OS='Linux' # Fake Linux
assertEquals "%K{006} %F{000}IP %f%F{000}10.0.2.15 %k%F{006}%f " "$(build_left_prompt)"
unfunction ip
}
function testIpSegmentWorksOnLinuxWithInterfaceSpecified() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
local POWERLEVEL9K_IP_INTERFACE='xxx'
ip(){
echo '2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever';
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local OS='Linux' # Fake Linux
assertEquals "%K{006} %F{000}IP %f%F{000}10.0.2.15 %k%F{006}%f " "$(build_left_prompt)"
unfunction ip
}
source shunit2/shunit2

View File

@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function mockKubectl() {
@@ -66,33 +64,41 @@ function mockKubectlOtherNamespace() {
}
function testKubeContext() {
alias kubectl=mockKubectl
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
alias kubectl=mockKubectl
assertEquals "%K{magenta} %F{white%} %f%F{white}minikube/default %k%F{magenta}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{005} %F{007} %f%F{007}minikube/default %k%F{005}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unalias kubectl
}
function testKubeContextOtherNamespace() {
alias kubectl=mockKubectlOtherNamespace
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
alias kubectl=mockKubectlOtherNamespace
assertEquals "%K{magenta} %F{white%} %f%F{white}minikube/kube-system %k%F{magenta}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{005} %F{007} %f%F{007}minikube/kube-system %k%F{005}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unalias kubectl
}
function testKubeContextPrintsNothingIfKubectlNotAvailable() {
alias kubectl=noKubectl
POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world kubecontext)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias kubectl=noKubectl
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_CUSTOM_WORLD
unalias kubectl
}
source shunit2/source/2.1/src/shunit2
source shunit2/shunit2

View File

@@ -7,63 +7,66 @@ SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function mockLaravelVersion() {
case "$1" in
"artisan")
echo "Laravel Framework version 5.4.23"
# artisan --version follows the format Laravel Framework <version>
echo "Laravel Framework 5.4.23"
;;
default)
esac
}
function mockNoLaravelVersion() {
# This should output some error
>&2 echo "Artisan not available"
return 1
# When php can't find a file it will output a message
echo "Could not open input file: artisan"
return 0
}
function testLaravelVersionSegment() {
alias php=mockLaravelVersion
POWERLEVEL9K_LARAVEL_ICON='x'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(laravel_version)
local POWERLEVEL9K_LARAVEL_ICON='x'
alias php=mockLaravelVersion
assertEquals "%K{001} %F{white%}x %f%F{white}5.4.23 %k%F{maroon}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{009} %F{007}x %f%F{007}5.4.23 %k%F{009}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_LARAVEL_ICON
unalias php
}
function testLaravelVersionSegmentIfArtisanIsNotAvailable() {
alias php=mockNoLaravelVersion
POWERLEVEL9K_CUSTOM_WORLD='echo world'
POWERLEVEL9K_LARAVEL_ICON='x'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world laravel_version)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local POWERLEVEL9K_LARAVEL_ICON='x'
alias php=mockNoLaravelVersion
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_LARAVEL_ICON
unset POWERLEVEL9K_CUSTOM_WORLD
unalias php
}
function testLaravelVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
alias php=noPhp
POWERLEVEL9K_CUSTOM_WORLD='echo world'
POWERLEVEL9K_LARAVEL_ICON='x'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world laravel_version)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local POWERLEVEL9K_LARAVEL_ICON='x'
alias php=noPhp
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_LARAVEL_ICON
unset POWERLEVEL9K_CUSTOM_WORLD
unalias php
}
source shunit2/source/2.1/src/shunit2
source shunit2/shunit2

View File

@@ -0,0 +1,149 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and git init it.
FOLDER=/tmp/powerlevel9k-test/load-test
mkdir -p "${FOLDER}"
cd $FOLDER
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
}
function testLoadSegmentWorksOnOsx() {
sysctl() {
if [[ "$*" == 'vm.loadavg' ]]; then
echo "vm.loadavg: { 1,38 1,45 2,16 }";
fi
if [[ "$*" == '-n hw.logicalcpu' ]]; then
echo "4";
fi
}
local POWERLEVEL9K_LOAD_WHICH=1
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="OSX" # Fake OSX
assertEquals "%K{002} %F{000}L %f%F{000}1.38 " "$(prompt_load left 1 false ${FOLDER})"
unfunction sysctl
}
function testLoadSegmentWorksOnBsd() {
sysctl() {
if [[ "$*" == 'vm.loadavg' ]]; then
echo "vm.loadavg: { 1,38 1,45 2,16 }";
fi
if [[ "$*" == '-n hw.ncpu' ]]; then
echo "4";
fi
}
local POWERLEVEL9K_LOAD_WHICH=1
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="BSD" # Fake BSD
assertEquals "%K{002} %F{000}L %f%F{000}1.38 " "$(prompt_load left 1 false ${FOLDER})"
unfunction sysctl
}
function testLoadSegmentWorksOnLinux() {
# Prepare loadavg
mkdir proc
echo "1.38 0.01 0.05 1/87 8641" > proc/loadavg
alias nproc="echo 4"
local POWERLEVEL9K_LOAD_WHICH=1
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="Linux" # Fake Linux
assertEquals "%K{002} %F{000}L %f%F{000}1.38 " "$(prompt_load left 1 false ${FOLDER})"
unalias nproc
}
# Test normal state. This test is not OS specific.
# We test it as the Linux version, but that
# does not matter here.
function testLoadSegmentNormalState() {
# Prepare loadavg
mkdir proc
echo "1.00 0.01 0.05 1/87 8641" > proc/loadavg
alias nproc="echo 4"
local POWERLEVEL9K_LOAD_WHICH=1
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="Linux" # Fake Linux
assertEquals "%K{002} %F{000}L %f%F{000}1.00 " "$(prompt_load left 1 false ${FOLDER})"
unalias nproc
}
# Test warning state. This test is not OS specific.
# We test it as the Linux version, but that
# does not matter here.
function testLoadSegmentWarningState() {
# Prepare loadavg
mkdir proc
echo "2.01 0.01 0.05 1/87 8641" > proc/loadavg
alias nproc="echo 4"
local POWERLEVEL9K_LOAD_WHICH=1
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="Linux" # Fake Linux
assertEquals "%K{003} %F{000}L %f%F{000}2.01 " "$(prompt_load left 1 false ${FOLDER})"
unalias nproc
}
# Test critical state. This test is not OS specific.
# We test it as the Linux version, but that
# does not matter here.
function testLoadSegmentCriticalState() {
# Prepare loadavg
mkdir proc
echo "2.81 0.01 0.05 1/87 8641" > proc/loadavg
alias nproc="echo 4"
local POWERLEVEL9K_LOAD_WHICH=1
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="Linux" # Fake Linux
assertEquals "%K{001} %F{000}L %f%F{000}2.81 " "$(prompt_load left 1 false ${FOLDER})"
unalias nproc
}
source shunit2/shunit2

View File

@@ -0,0 +1,41 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testNodeVersionSegmentPrintsNothingWithoutNode() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias node="nonode 2>/dev/null"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias node
}
function testNodeVersionSegmentWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version)
node() {
echo "v1.2.3"
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{002} %F{007} %f%F{007}1.2.3 %k%F{002}%f " "$(build_left_prompt)"
unfunction node
}
source shunit2/shunit2

View File

@@ -0,0 +1,99 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Test specfic
# unset all possible user specified variables
unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
unset NODE_VIRTUAL_ENV
}
function testNodeenvSegmentPrintsNothingWithoutNode() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias node="nonode 2>/dev/null"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias node
}
function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvIsNotSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
node() {
echo "v1.2.3"
}
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unfunction node
}
function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvDisablePromptIsSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
node() {
echo "v1.2.3"
}
NODE_VIRTUAL_ENV="node-env"
NODE_VIRTUAL_ENV_DISABLE_PROMPT=true
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
unset NODE_VIRTUAL_ENV
unfunction node
}
function testNodeenvSegmentPrintsAtLeastNodeEnvWithoutNode() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
alias node="nonode 2>/dev/null"
NODE_VIRTUAL_ENV="node-env"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{002} %f%F{002}[node-env] %k%F{000}%f " "$(build_left_prompt)"
unset NODE_VIRTUAL_ENV
unalias node
}
function testNodeenvSegmentWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
node() {
echo "v1.2.3"
}
NODE_VIRTUAL_ENV="node-env"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{002} %f%F{002}v1.2.3[node-env] %k%F{000}%f " "$(build_left_prompt)"
unfunction node
unset NODE_VIRTUAL_ENV
}
source shunit2/shunit2

View File

@@ -0,0 +1,72 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and git init it.
FOLDER=/tmp/powerlevel9k-test/nvm-test
mkdir -p "${FOLDER}/bin"
OLD_PATH=$PATH
PATH=${FOLDER}/bin:$PATH
cd $FOLDER
}
function tearDown() {
# Restore old path
PATH="${OLD_PATH}"
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
}
function testNvmSegmentPrintsNothingIfNvmIsNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testNvmSegmentWorksWithoutHavingADefaultAlias() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm)
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
function nvm_version() {
[[ ${1} == 'current' ]] && echo 'v4.6.0' || echo 'v1.4.0'
}
assertEquals "%K{005} %F{000} %f%F{000}4.6.0 %k%F{005}%f " "$(build_left_prompt)"
}
function testNvmSegmentPrintsNothingWhenOnDefaultVersion() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
function nvm_version() {
[[ ${1} == 'current' ]] && echo 'v4.6.0' || echo 'v4.6.0'
}
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -0,0 +1,42 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testPhpVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias php="nophp"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias php
}
function testPhpVersionSegmentWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version)
alias php="echo 'PHP 5.6.27 (cli) (built: Oct 23 2016 11:47:58)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
'"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{013} %F{255}PHP 5.6.27 %k%F{013}%f " "$(build_left_prompt)"
unalias php
}
source shunit2/shunit2

View File

@@ -0,0 +1,222 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Test specific
P9K_HOME=$(pwd)
FOLDER=/tmp/powerlevel9k-test
mkdir -p $FOLDER
cd $FOLDER
# Change cache file, so that the users environment don't
# interfere with the tests.
POWERLEVEL9K_PUBLIC_IP_FILE=$FOLDER/public_ip_file
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
unset FOLDER
unset P9K_HOME
# Unset cache file
unset POWERLEVEL9K_PUBLIC_IP_FILE
}
function testPublicIpSegmentPrintsNothingByDefaultIfHostIsNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip custom_world)
local POWERLEVEL9K_PUBLIC_IP_HOST='http://unknown.xyz'
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
# We need to overwrite dig, as this is a fallback method that
# uses an alternative host.
alias dig='nodig'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias dig
}
function testPublicIpSegmentPrintsNoticeIfNotConnected() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
local POWERLEVEL9K_PUBLIC_IP_HOST='http://unknown.xyz'
local POWERLEVEL9K_PUBLIC_IP_NONE="disconnected"
# We need to overwrite dig, as this is a fallback method that
# uses an alternative host.
alias dig='nodig'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}disconnected %k%F{000}%f " "$(build_left_prompt)"
unalias dig
}
function testPublicIpSegmentWorksWithWget() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
alias dig='nodig'
alias curl='nocurl'
wget() {
echo "wget 1.2.3.4"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}wget 1.2.3.4 %k%F{000}%f " "$(build_left_prompt)"
unfunction wget
unalias dig
unalias curl
}
function testPublicIpSegmentUsesCurlAsFallbackMethodIfWgetIsNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
alias dig='nodig'
alias wget='nowget'
curl() {
echo "curl 1.2.3.4"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}curl 1.2.3.4 %k%F{000}%f " "$(build_left_prompt)"
unfunction curl
unalias dig
unalias wget
}
function testPublicIpSegmentUsesDigAsFallbackMethodIfWgetAndCurlAreNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
alias curl='nocurl'
alias wget='nowget'
dig() {
echo "dig 1.2.3.4"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}dig 1.2.3.4 %k%F{000}%f " "$(build_left_prompt)"
unfunction dig
unalias curl
unalias wget
}
function testPublicIpSegmentCachesFile() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
dig() {
echo "first"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}first %k%F{000}%f " "$(build_left_prompt)"
dig() {
echo "second"
}
# Segment should not have changed!
assertEquals "%K{000} %F{007}first %k%F{000}%f " "$(build_left_prompt)"
unfunction dig
}
function testPublicIpSegmentRefreshesCachesFileAfterTimeout() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
local POWERLEVEL9K_PUBLIC_IP_TIMEOUT=2
dig() {
echo "first"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}first %k%F{000}%f " "$(build_left_prompt)"
sleep 3
dig() {
echo "second"
}
# Segment should not have changed!
assertEquals "%K{000} %F{007}second %k%F{000}%f " "$(build_left_prompt)"
unfunction dig
}
function testPublicIpSegmentRefreshesCachesFileIfEmpty() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
dig() {
echo "first"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}first %k%F{000}%f " "$(build_left_prompt)"
# Truncate cache file
echo "" >! $POWERLEVEL9K_PUBLIC_IP_FILE
dig() {
echo "second"
}
# Segment should not have changed!
assertEquals "%K{000} %F{007}second %k%F{000}%f " "$(build_left_prompt)"
unfunction dig
}
function testPublicIpSegmentWhenGoingOnline() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
local POWERLEVEL9K_PUBLIC_IP_METHODS="dig"
local POWERLEVEL9K_PUBLIC_IP_NONE="disconnected"
alias dig="nodig"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}disconnected %k%F{000}%f " "$(build_left_prompt)"
unalias dig
dig() {
echo "second"
}
# Segment should not have changed!
assertEquals "%K{000} %F{007}second %k%F{000}%f " "$(build_left_prompt)"
unfunction dig
}
source shunit2/shunit2

View File

@@ -0,0 +1,66 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and git init it.
FOLDER=/tmp/powerlevel9k-test/ram-test
mkdir -p "${FOLDER}"
cd $FOLDER
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
}
function testRamSegmentWorksOnOsx() {
alias vm_stat="echo 'Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free: 299687.
Pages active: 1623792.
Pages inactive: 1313411.
'"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="OSX" # Fake OSX
assertEquals "%K{003} %F{000}RAM %f%F{000}6.15G " "$(prompt_ram left 1 false ${FOLDER})"
unalias vm_stat
}
function testRamSegmentWorksOnBsd() {
mkdir -p var/run
echo "avail memory 5678B 299687 4444G 299" > var/run/dmesg.boot
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="BSD" # Fake BSD
assertEquals "%K{003} %F{000}RAM %f%F{000}0.29M " "$(prompt_ram left 1 false ${FOLDER})"
}
function testRamSegmentWorksOnLinux() {
mkdir proc
echo "MemAvailable: 299687" > proc/meminfo
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="Linux" # Fake Linux
assertEquals "%K{003} %F{000}RAM %f%F{000}0.29G " "$(prompt_ram left 1 false ${FOLDER})"
}
source shunit2/shunit2

View File

@@ -14,8 +14,6 @@ function setUp() {
PATH="${RUST_TEST_FOLDER}:${PATH}"
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function tearDown() {
@@ -29,22 +27,25 @@ function mockRust() {
}
function testRust() {
mockRust
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version)
mockRust
assertEquals "%K{208} %F{black%}Rust %f%F{black}0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
assertEquals "%K{208} %F{000}Rust %f%F{000}0.4.1a-alpha %k%F{208}%f " "$(build_left_prompt)"
}
function testRustPrintsNothingIfRustIsNotAvailable() {
POWERLEVEL9K_CUSTOM_WORLD='echo world'
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world rust_version)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_CUSTOM_WORLD
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
source shunit2/source/2.1/src/shunit2
source shunit2/shunit2

View File

@@ -0,0 +1,80 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testSshSegmentPrintsNothingIfNoSshConnection() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo "world"'
local POWERLEVEL9K_SSH_ICON="ssh-icon"
# Weak test: Emulate No SSH connection by unsetting
# $SSH_CLIENT and $SSH_TTY
unset SSH_CLIENT
unset SSH_TTY
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testSshSegmentWorksIfOnlySshClientIsSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
local POWERLEVEL9K_SSH_ICON="ssh-icon"
# Weak test: Emulate No SSH connection by unsetting
# $SSH_CLIENT and $SSH_TTY
SSH_CLIENT='ssh-client'
unset SSH_TTY
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}ssh-icon%f %k%F{000}%f " "$(build_left_prompt)"
unset SSH_CLIENT
}
function testSshSegmentWorksIfOnlySshTtyIsSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
local POWERLEVEL9K_SSH_ICON="ssh-icon"
# Weak test: Emulate No SSH connection by unsetting
# $SSH_CLIENT and $SSH_TTY
SSH_TTY='ssh-tty'
unset SSH_CLIENT
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}ssh-icon%f %k%F{000}%f " "$(build_left_prompt)"
unset SSH_TTY
}
function testSshSegmentWorksIfAllNecessaryVariablesAreSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
local POWERLEVEL9K_SSH_ICON="ssh-icon"
# Weak test: Emulate No SSH connection by unsetting
# $SSH_CLIENT and $SSH_TTY
SSH_CLIENT='ssh-client'
SSH_TTY='ssh-tty'
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{003}ssh-icon%f %k%F{000}%f " "$(build_left_prompt)"
unset SSH_TTY
unset SSH_CLIENT
}
source shunit2/shunit2

View File

@@ -0,0 +1,113 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
### Test specific
# Resets if someone has set these in his/hers env
unset POWERLEVEL9K_STATUS_VERBOSE
unset POWERLEVEL9K_STATUS_OK_IN_NON_VERBOSE
}
function testStatusPrintsNothingIfReturnCodeIsZeroAndVerboseIsUnset() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
local POWERLEVEL9K_STATUS_VERBOSE=false
local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testStatusWorksAsExpectedIfReturnCodeIsZeroAndVerboseIsSet() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
local POWERLEVEL9K_STATUS_VERBOSE=true
local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
local POWERLEVEL9K_STATUS_HIDE_SIGNAME=true
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{002}%f %k%F{000}%f " "$(build_left_prompt)"
}
function testStatusInGeneralErrorCase() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
local POWERLEVEL9K_STATUS_VERBOSE=true
local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local RETVAL=1
assertEquals "%K{001} %F{226} %f%F{226}1 %k%F{001}%f " "$(build_left_prompt)"
}
function testPipestatusInErrorCase() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
local POWERLEVEL9K_STATUS_VERBOSE=true
local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=true
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local -a RETVALS
RETVALS=(0 0 1 0)
assertEquals "%K{001} %F{226} %f%F{226}0|0|1|0 %k%F{001}%f " "$(build_left_prompt)"
}
function testStatusCrossWinsOverVerbose() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
local POWERLEVEL9K_STATUS_VERBOSE=true
local POWERLEVEL9K_STATUS_CROSS=true
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local RETVAL=1
assertEquals "%K{000} %F{001}%f %k%F{000}%f " "$(build_left_prompt)"
}
function testStatusShowsSignalNameInErrorCase() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
local POWERLEVEL9K_STATUS_VERBOSE=true
local POWERLEVEL9K_STATUS_HIDE_SIGNAME=false
# Load Powerlevel9k
source powerlevel9k.zsh-theme
local RETVAL=132
assertEquals "%K{001} %F{226} %f%F{226}SIGILL(4) %k%F{001}%f " "$(build_left_prompt)"
}
function testStatusSegmentIntegrated() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
local POWERLEVEL9K_STATUS_CROSS=true
# Load Powerlevel9k
source powerlevel9k.zsh-theme
false; powerlevel9k_prepare_prompts
assertEquals "%f%b%k%K{000} %F{001}%f %k%F{000}%f " "${(e)PROMPT}"
}
source shunit2/shunit2

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and git init it.
FOLDER=/tmp/powerlevel9k-test/swap-test
mkdir -p "${FOLDER}"
cd $FOLDER
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
}
function testSwapSegmentWorksOnOsx() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
sysctl() {
echo "vm.swapusage: total = 3072,00M used = 1620,50M free = 1451,50M (encrypted)"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="OSX" # Fake OSX
assertEquals "%K{003} %F{000}SWP %f%F{000}1.58G " "$(prompt_swap left 1 false ${FOLDER})"
unfunction sysctl
}
function testSwapSegmentWorksOnLinux() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
mkdir proc
echo "SwapTotal: 1000000" > proc/meminfo
echo "SwapFree: 1000" >> proc/meminfo
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
local OS="Linux" # Fake Linux
assertEquals "%K{003} %F{000}SWP %f%F{000}0.95G " "$(prompt_swap left 1 false ${FOLDER})"
}
source shunit2/shunit2

View File

@@ -0,0 +1,57 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and git init it.
FOLDER=/tmp/powerlevel9k-test
mkdir -p "${FOLDER}"
cd $FOLDER
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
}
function testSwiftSegmentPrintsNothingIfSwiftIsNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swift_version custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias swift="noswift"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias swift
}
function testSwiftSegmentWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swift_version)
function swift() {
echo "Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1)\nTarget: x86_64-apple-macosx10.9"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{005} %F{007}Swift %f%F{007}3.0.1 %k%F{005}%f " "$(build_left_prompt)"
unfunction swift
}
source shunit2/shunit2

View File

@@ -0,0 +1,117 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and git init it.
FOLDER=/tmp/powerlevel9k-test
mkdir -p "${FOLDER}"
cd $FOLDER
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
}
function testSymfonyVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
alias php="nophp"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unalias php
}
function testSymfonyVersionSegmentPrintsNothingIfSymfonyIsNotAvailable() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
# "Symfony" is not a command, but rather a framework.
# To sucessfully execute this test, we just need to
# navigate into a folder that does not contain symfony.
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testSymfonyVersionPrintsNothingIfPhpThrowsAnError() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
mkdir app
touch app/AppKernel.php
function php() {
echo "Warning: Unsupported declare strict_types in /Users/dr/Privat/vendor/ocramius/proxy-manager/src/ProxyManager/Configuration.php on line 19
Parse error: parse error, expecting `;´ or `{´ in /Users/dr/Privat/vendor/ocramius/proxy-manager/src/ProxyManager/Configuration.php on line 97"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
unfunction php
}
function testSymfonyVersionSegmentWorks() {
startSkipping # Skip test
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
mkdir app
touch app/AppKernel.php
function php() {
echo "Symfony version 3.1.4 - app/dev/debug"
}
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{240} %F{000}SF %f%F{000}3.1.4 %k%F{240}%f " "$(build_left_prompt)"
unfunction php
}
function testSymfonyVersionSegmentWorksInNestedFolder() {
startSkipping # Skip test
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
mkdir app
touch app/AppKernel.php
function php() {
echo "Symfony version 3.1.4 - app/dev/debug"
}
mkdir -p src/P9K/AppBundle
cd src/P9K/AppBundle
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{240} %F{000}SF %f%F{000}3.1.4 %k%F{240}%f " "$(build_left_prompt)"
unfunction php
}
source shunit2/shunit2

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and git init it.
FOLDER=/tmp/powerlevel9k-test
mkdir -p "${FOLDER}"
mkdir ${FOLDER}/bin
OLD_PATH=$PATH
PATH=${FOLDER}/bin:$PATH
cd $FOLDER
}
function tearDown() {
# Reset PATH
PATH=$OLD_PATH
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
}
function testTodoSegmentPrintsNothingIfTodoShIsNotInstalled() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo custom_world)
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
}
function testTodoSegmentWorksAsExpected() {
# TODO: Skript in den PATH legen!
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo)
echo '#!/bin/sh' > ${FOLDER}/bin/todo.sh
echo 'echo "TODO: 34 of 100 tasks shown";' >> ${FOLDER}/bin/todo.sh
chmod +x ${FOLDER}/bin/todo.sh
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{244} %F{000} %f%F{000}100 %k%F{244}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -0,0 +1,378 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and git init it.
FOLDER=/tmp/powerlevel9k-test/vcs-test
mkdir -p "${FOLDER}"
cd $FOLDER
# Set username and email
OLD_GIT_AUTHOR_NAME=$GIT_AUTHOR_NAME
GIT_AUTHOR_NAME="Testing Tester"
OLD_GIT_AUTHOR_EMAIL=$GIT_AUTHOR_EMAIL
GIT_AUTHOR_EMAIL="test@powerlevel9k.theme"
# Set default username if not already set!
if [[ -z $(git config user.name) ]]; then
GIT_AUTHOR_NAME_SET_BY_TEST=true
git config --global user.name "${GIT_AUTHOR_NAME}"
fi
# Set default email if not already set!
if [[ -z $(git config user.email) ]]; then
GIT_AUTHOR_EMAIL_SET_BY_TEST=true
git config --global user.email "${GIT_AUTHOR_EMAIL}"
fi
# Initialize FOLDER as git repository
git init 1>/dev/null
}
function tearDown() {
if [[ -n "${OLD_GIT_AUTHOR_NAME}" ]]; then
GIT_AUTHOR_NAME=$OLD_GIT_AUTHOR
unset OLD_GIT_AUTHOR_NAME
else
unset GIT_AUTHOR_NAME
fi
if [[ -n "${OLD_GIT_AUTHOR_EMAIL}" ]]; then
GIT_AUTHOR_EMAIL=$OLD_GIT_AUTHOR_EMAIL
unset OLD_GIT_AUTHOR_EMAIL
else
unset GIT_AUTHOR_EMAIL
fi
if [[ "${GIT_AUTHOR_NAME_SET_BY_TEST}" == "true" ]]; then
git config --global --unset user.name
fi
if [[ "${GIT_AUTHOR_EMAIL_SET_BY_TEST}" == "true" ]]; then
git config --global --unset user.email
fi
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}"
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test
unset FOLDER
}
function testColorOverridingForCleanStateWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{006} master %k%F{007}%f " "$(build_left_prompt)"
}
function testColorOverridingForModifiedStateWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red'
local POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='yellow'
touch testfile
git add testfile
git commit -m "test" 1>/dev/null
echo "test" > testfile
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{001} master %k%F{003}%f " "$(build_left_prompt)"
}
function testColorOverridingForUntrackedStateWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='cyan'
local POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='yellow'
touch testfile
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{006} master ? %k%F{003}%f " "$(build_left_prompt)"
}
function testGitIconWorks() {
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_GIT_ICON='Git-Icon'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000}Git-Icon %f%F{000} master %k%F{002}%f " "$(build_left_prompt)"
}
function testGitlabIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_GIT_GITLAB_ICON='GL-Icon'
# Add a GitLab project as remote origin. This is
# sufficient to show the GitLab-specific icon.
git remote add origin https://gitlab.com/dritter/gitlab-test-project.git
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000}GL-Icon %f%F{000} master %k%F{002}%f " "$(build_left_prompt)"
}
function testBitbucketIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_GIT_BITBUCKET_ICON='BB-Icon'
# Add a BitBucket project as remote origin. This is
# sufficient to show the BitBucket-specific icon.
git remote add origin https://dritter@bitbucket.org/dritter/dr-test.git
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000}BB-Icon %f%F{000} master %k%F{002}%f " "$(build_left_prompt)"
}
function testGitHubIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_GIT_GITHUB_ICON='GH-Icon'
# Add a GitHub project as remote origin. This is
# sufficient to show the GitHub-specific icon.
git remote add origin https://github.com/dritter/test.git
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000}GH-Icon %f%F{000} master %k%F{002}%f " "$(build_left_prompt)"
}
function testUntrackedFilesIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
# Create untracked file
touch "i-am-untracked.txt"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)"
}
function testStagedFilesIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_STAGED_ICON='+'
# Create staged file
touch "i-am-added.txt"
git add i-am-added.txt &>/dev/null
git commit -m "initial commit" &>/dev/null
echo "xx" >> i-am-added.txt
git add i-am-added.txt &>/dev/null
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{000} master + %k%F{003}%f " "$(build_left_prompt)"
}
function testUnstagedFilesIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_UNSTAGED_ICON='M'
# Create unstaged (modified, but not added to index) file
touch "i-am-modified.txt"
git add i-am-modified.txt
git commit -m "Add File" 1>/dev/null
echo "xx" > i-am-modified.txt
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{000} master M %k%F{003}%f " "$(build_left_prompt)"
}
function testStashIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_STASH_ICON='S'
# Create modified file
touch "i-am-modified.txt"
git add i-am-modified.txt
git commit -m "Add File" 1>/dev/null
echo "xx" > i-am-modified.txt
git stash 1>/dev/null
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} master S1 %k%F{002}%f " "$(build_left_prompt)"
}
function testTagIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_TAG_ICON='T'
touch "file.txt"
git add file.txt
git commit -m "Add File" 1>/dev/null
git tag "v0.0.1"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} master Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)"
}
function testTagIconInDetachedHeadState() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_TAG_ICON='T'
touch "file.txt"
git add file.txt
git commit -m "Add File" &>/dev/null
git tag "v0.0.1"
touch "file2.txt"
git add file2.txt
git commit -m "Add File2" &>/dev/null
git checkout v0.0.1 &>/dev/null
local hash=$(git rev-list -n 1 --abbrev-commit --abbrev=8 HEAD)
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} ${hash} Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)"
}
function testActionHintWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
touch "i-am-modified.txt"
git add i-am-modified.txt
git commit -m "Add File" &>/dev/null
git clone . ../vcs-test2 &>/dev/null
echo "xx" >> i-am-modified.txt
git commit -a -m "Modified file" &>/dev/null
cd ../vcs-test2
echo "yy" >> i-am-modified.txt
git commit -a -m "Provoke conflict" &>/dev/null
git pull &>/dev/null
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{000} master %F{red}| merge%f %k%F{003}%f " "$(build_left_prompt)"
}
function testIncomingHintWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON='I'
touch "i-am-modified.txt"
git add i-am-modified.txt
git commit -m "Add File" &>/dev/null
git clone . ../vcs-test2 &>/dev/null
echo "xx" >> i-am-modified.txt
git commit -a -m "Modified file" &>/dev/null
cd ../vcs-test2
git fetch &>/dev/null
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} master I1 %k%F{002}%f " "$(build_left_prompt)"
}
function testOutgoingHintWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON='o'
touch "i-am-modified.txt"
git add i-am-modified.txt
git commit -m "Add File" &>/dev/null
git clone . ../vcs-test2 &>/dev/null
cd ../vcs-test2
echo "xx" >> i-am-modified.txt
git commit -a -m "Modified file" &>/dev/null
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} master o1 %k%F{002}%f " "$(build_left_prompt)"
}
function testShorteningCommitHashWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_SHOW_CHANGESET=true
local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
touch "file.txt"
git add file.txt
git commit -m "Add File" 1>/dev/null
local hash=$(git rev-list -n 1 --abbrev-commit --abbrev=3 HEAD)
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
# This test needs to call powerlevel9k_vcs_init, where
# the changeset is truncated.
powerlevel9k_vcs_init
assertEquals "%K{002} %F{000}${hash} master %k%F{002}%f " "$(build_left_prompt)"
}
function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_SHOW_CHANGESET=false
local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
touch "file.txt"
git add file.txt
git commit -m "Add File" 1>/dev/null
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
# This test needs to call powerlevel9k_vcs_init, where
# the changeset is truncated.
powerlevel9k_vcs_init
assertEquals "%K{002} %F{000} master %k%F{002}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -0,0 +1,207 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
P9K_HOME=$(pwd)
### Test specific
# Create default folder and hg init it.
FOLDER=/tmp/powerlevel9k-test/vcs-test
mkdir -p "${FOLDER}"
cd $FOLDER
export HGUSER="Test bot <bot@example.com>"
hg init 1>/dev/null
}
function tearDown() {
# Go back to powerlevel9k folder
cd "${P9K_HOME}"
# Remove eventually created test-specific folder
rm -fr "${FOLDER}" &>/dev/null
# At least remove test folder completely
rm -fr /tmp/powerlevel9k-test &>/dev/null
unset FOLDER
unset HGUSER
}
function testColorOverridingForCleanStateWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{007} %F{006} default %k%F{007}%f " "$(build_left_prompt)"
}
function testColorOverridingForModifiedStateWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red'
local POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='yellow'
touch testfile
hg add testfile
hg commit -m "test" 1>/dev/null
echo "test" > testfile
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{001} default %k%F{003}%f " "$(build_left_prompt)"
}
# There is no staging area in mercurial, therefore there are no "untracked"
# files.. In case there are added files, we show the VCS segment with a
# yellow background.
# This may be improved in future versions, to be a bit more consistent with
# the git part.
function testAddedFilesIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
touch "myfile.txt"
hg add myfile.txt
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{000} default %k%F{003}%f " "$(build_left_prompt)"
}
# We don't support tagging in mercurial right now..
function testTagIconWorks() {
startSkipping # Skip test
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_TAG_ICON='T'
touch "file.txt"
hg add file.txt
hg commit -m "Add File" 1>/dev/null
hg tag "v0.0.1"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} default Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)"
}
function testTagIconInDetachedHeadState() {
startSkipping # Skip test
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_TAG_ICON='T'
touch "file.txt"
hg add file.txt
hg commit -m "Add File" &>/dev/null
hg tag "v0.0.1"
touch "file2.txt"
hg add file2.txt
hg commit -m "Add File2" &>/dev/null
hg checkout v0.0.1 &>/dev/null
local hash=$(hg id)
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} ${hash} Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)"
}
function testActionHintWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
touch "i-am-modified.txt"
hg add i-am-modified.txt
hg commit -m "Add File" &>/dev/null
hg clone . ../vcs-test2 &>/dev/null
echo "xx" >> i-am-modified.txt
hg commit -m "Modified file" &>/dev/null
cd ../vcs-test2
echo "yy" >> i-am-modified.txt
hg commit -m "Provoke conflict" 2>/dev/null
hg pull 1>/dev/null
hg merge --tool internal:merge >/dev/null 2>&1
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{003} %F{000} default %F{red}| merging%f %k%F{003}%f " "$(build_left_prompt)"
}
function testShorteningCommitHashWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_SHOW_CHANGESET=true
local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
touch "file.txt"
hg add file.txt
hg commit -m "Add File" 1>/dev/null
local hash=$(hg id | head -c ${POWERLEVEL9K_CHANGESET_HASH_LENGTH})
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
# This test needs to call powerlevel9k_vcs_init, where
# the changeset is truncated.
powerlevel9k_vcs_init
assertEquals "%K{002} %F{000}${hash} default %k%F{002}%f " "$(build_left_prompt)"
}
function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_SHOW_CHANGESET=false
local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
touch "file.txt"
hg add file.txt
hg commit -m "Add File" 1>/dev/null
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
# This test needs to call powerlevel9k_vcs_init, where
# the changeset is truncated.
powerlevel9k_vcs_init
assertEquals "%K{002} %F{000} default %k%F{002}%f " "$(build_left_prompt)"
}
function testMercurialIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_HG_ICON='HG-Icon'
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000}HG-Icon %f%F{000} default %k%F{002}%f " "$(build_left_prompt)"
}
function testBookmarkIconWorks() {
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
local POWERLEVEL9K_VCS_BOOKMARK_ICON='B'
hg bookmark "initial"
# Load Powerlevel9k
source ${P9K_HOME}/powerlevel9k.zsh-theme
assertEquals "%K{002} %F{000} default Binitial %k%F{002}%f " "$(build_left_prompt)"
}
source shunit2/shunit2

View File

@@ -1,161 +0,0 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
# Load Powerlevel9k
source powerlevel9k.zsh-theme
}
function testColorOverridingForCleanStateWorks() {
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
FOLDER=/tmp/powerlevel9k-test/vcs-test
mkdir -p $FOLDER
cd $FOLDER
git init 1>/dev/null
assertEquals "%K{white} %F{cyan} master %k%F{white}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_VCS_CLEAN_FOREGROUND
unset POWERLEVEL9K_VCS_CLEAN_BACKGROUND
}
function testColorOverridingForModifiedStateWorks() {
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red'
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='yellow'
FOLDER=/tmp/powerlevel9k-test/vcs-test
mkdir -p $FOLDER
cd $FOLDER
git init 1>/dev/null
git config user.email "test@powerlevel9k.theme"
git config user.name "Testing Tester"
touch testfile
git add testfile
git commit -m "test" 1>/dev/null
echo "test" > testfile
assertEquals "%K{yellow} %F{red} master %k%F{yellow}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_VCS_MODIFIED_FOREGROUND
unset POWERLEVEL9K_VCS_MODIFIED_BACKGROUND
}
function testColorOverridingForUntrackedStateWorks() {
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='cyan'
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='yellow'
FOLDER=/tmp/powerlevel9k-test/vcs-test
mkdir -p $FOLDER
cd $FOLDER
git init 1>/dev/null
touch testfile
assertEquals "%K{yellow} %F{cyan} master ? %k%F{yellow}%f " "$(build_left_prompt)"
cd -
rm -fr /tmp/powerlevel9k-test
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
unset POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND
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} 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
}
source shunit2/source/2.1/src/shunit2

View File

@@ -0,0 +1,48 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
function setUp() {
export TERM="xterm-256color"
}
function testViInsertModeWorks() {
local KEYMAP='viins'
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{004}INSERT " "$(prompt_vi_mode left 1 false)"
}
function testViInsertModeWorksWhenLabeledAsMain() {
local KEYMAP='main'
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{004}INSERT " "$(prompt_vi_mode left 1 false)"
}
function testViCommandModeWorks() {
local KEYMAP='vicmd'
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{007}NORMAL " "$(prompt_vi_mode left 1 false)"
}
function testViInsertModeStringIsCustomizable() {
local KEYMAP='viins'
# Load Powerlevel9k
source powerlevel9k.zsh-theme
assertEquals "%K{000} %F{004}INSERT " "$(prompt_vi_mode left 1 false)"
}
source shunit2/shunit2

View File

@@ -0,0 +1,17 @@
#!/usr/bin/env zsh
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
local failed=false
for test in **/*.spec; do
echo
echo "Now executing ${test}"
if [[ "${test}" == "test/suite.spec" ]]; then
continue;
fi
./${test} || failed=true
done
if [[ "${failed}" == "true" ]]; then
exit 1
fi