From 0e4e9e4256b286213843f4e83a46c7ecb68a8bc1 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Mon, 16 Jul 2018 20:46:00 +0200
Subject: Add tests for anaconda segment

---
 test/segments/anaconda.spec | 52 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100755 test/segments/anaconda.spec

(limited to 'test/segments')

diff --git a/test/segments/anaconda.spec b/test/segments/anaconda.spec
new file mode 100755
index 00000000..11add849
--- /dev/null
+++ b/test/segments/anaconda.spec
@@ -0,0 +1,52 @@
+#!/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 testAnacondaSegmentPrintsNothingIfNoAnacondaPathIsSet() {
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda custom_world)
+    # Unset anacona variables
+    unset CONDA_ENV_PATH
+    unset CONDA_PREFIX
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testAnacondaSegmentWorksIfOnlyAnacondaPathIsSet() {
+    CONDA_ENV_PATH=/tmp
+    unset CONDA_PREFIX
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
+    local POWERLEVEL9K_PYTHON_ICON="icon-here"
+
+    assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(tmp) %k%F{blue}%f " "$(build_left_prompt)"
+}
+
+function testAnacondaSegmentWorksIfOnlyAnacondaPrefixIsSet() {
+    unset CONDA_ENV_PATH
+    local CONDA_PREFIX="test"
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
+    local POWERLEVEL9K_PYTHON_ICON="icon-here"
+
+    assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(test) %k%F{blue}%f " "$(build_left_prompt)"
+}
+
+function testAnacondaSegmentWorks() {
+    local CONDA_ENV_PATH=/tmp
+    local CONDA_PREFIX="test"
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
+    local POWERLEVEL9K_PYTHON_ICON="icon-here"
+
+    assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(tmptest) %k%F{blue}%f " "$(build_left_prompt)"
+
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 8c44fa68a25c12748fd4f031c691c54b76d0e290 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Mon, 16 Jul 2018 20:46:23 +0200
Subject: Add tests for aws_eb_env segment

---
 test/segments/aws_eb_env.spec | 51 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)
 create mode 100755 test/segments/aws_eb_env.spec

(limited to 'test/segments')

diff --git a/test/segments/aws_eb_env.spec b/test/segments/aws_eb_env.spec
new file mode 100755
index 00000000..530da6a1
--- /dev/null
+++ b/test/segments/aws_eb_env.spec
@@ -0,0 +1,51 @@
+#!/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 testAwsEbEnvSegmentPrintsNothingIfNoElasticBeanstalkEnvironmentIsSet() {
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env custom_world)
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSet() {
+    mkdir -p /tmp/powerlevel9k-test/.elasticbeanstalk
+    echo "test:\n    environment: test" > /tmp/powerlevel9k-test/.elasticbeanstalk/config.yml
+    cd /tmp/powerlevel9k-test
+
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
+
+    assertEquals "%K{black} %F{green%}🌱  %f%F{green}test %k%F{black}%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
+    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
+
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
+
+    assertEquals "%K{black} %F{green%}🌱  %f%F{green}test %k%F{black}%f " "$(build_left_prompt)"
+
+    rm -fr /tmp/powerlevel9k-test
+    cd -
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 74a3d2d6e2b88e9d4c89995373e0d176b47450d7 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Mon, 16 Jul 2018 20:47:15 +0200
Subject: Add tests for background_jobs segment

---
 test/segments/background_jobs.spec | 64 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100755 test/segments/background_jobs.spec

(limited to 'test/segments')

diff --git a/test/segments/background_jobs.spec b/test/segments/background_jobs.spec
new file mode 100755
index 00000000..9f866ff0
--- /dev/null
+++ b/test/segments/background_jobs.spec
@@ -0,0 +1,64 @@
+#!/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 testBackgroundJobsSegmentPrintsNothingWithoutBackgroundJobs() {
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs custom_world)
+    alias jobs="nojobs 2>/dev/null"
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unalias jobs
+}
+
+function testBackgroundJobsSegmentWorksWithOneBackgroundJob() {
+    unset POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
+    jobs() {
+        echo '[1]  + 30444 suspended  nvim xx'
+    }
+
+    assertEquals "%K{black} %F{cyan%}⚙%f %k%F{black}%f " "$(build_left_prompt)"
+
+    unfunction jobs
+}
+
+function testBackgroundJobsSegmentWorksWithMultipleBackgroundJobs() {
+    unset POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE
+    local 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"
+    }
+
+    assertEquals "%K{black} %F{cyan%}⚙%f %k%F{black}%f " "$(build_left_prompt)"
+
+    unfunction jobs
+}
+
+function testBackgroundJobsSegmentWithVerboseMode() {
+    local POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=true
+    local 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"
+    }
+
+    assertEquals "%K{black} %F{cyan%}⚙ %f%F{cyan}3 %k%F{black}%f " "$(build_left_prompt)"
+
+    unfunction jobs
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 802af322ff3c0541cb89dac30362e576ff1f81a2 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Mon, 16 Jul 2018 20:48:27 +0200
Subject: Add tests for battery segment

Additionally
- Add a fourth parameter to prompt_battery for better testability. This
  parameter is the root prefix, so we can use our own test batteries.
---
 powerlevel9k.zsh-theme     |  11 +--
 test/segments/battery.spec | 184 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 190 insertions(+), 5 deletions(-)
 create mode 100755 test/segments/battery.spec

(limited to 'test/segments')

diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme
index c1ea754f..eefcedde 100755
--- a/powerlevel9k.zsh-theme
+++ b/powerlevel9k.zsh-theme
@@ -409,12 +409,13 @@ prompt_battery() {
     'charged'       'green'
     'disconnected'  "$DEFAULT_COLOR_INVERTED"
   )
+  local ROOT_PREFIX="${4}"
   # Set default values if the user did not configure them
   set_default POWERLEVEL9K_BATTERY_LOW_THRESHOLD  10
 
-  if [[ $OS =~ OSX && -f /usr/bin/pmset && -x /usr/bin/pmset ]]; then
+  if [[ $OS =~ OSX && -f "${ROOT_PREFIX}"/usr/bin/pmset && -x "${ROOT_PREFIX}"/usr/bin/pmset ]]; then
     # obtain battery information from system
-    local raw_data="$(pmset -g batt | awk 'FNR==2{print}')"
+    local raw_data="$(${ROOT_PREFIX}/usr/bin/pmset -g batt | awk 'FNR==2{print}')"
     # return if there is no battery on system
     [[ -z $(echo $raw_data | grep "InternalBattery") ]] && return
 
@@ -446,7 +447,7 @@ prompt_battery() {
   fi
 
   if [[ "$OS" == 'Linux' ]] || [[ "$OS" == 'Android' ]]; then
-    local sysp="/sys/class/power_supply"
+    local sysp="${ROOT_PREFIX}/sys/class/power_supply"
 
     # Reported BAT0 or BAT1 depending on kernel version
     [[ -a $sysp/BAT0 ]] && local bat=$sysp/BAT0
@@ -468,8 +469,8 @@ prompt_battery() {
       [[ $bat_percent =~ 100 ]] && current_state="charged"
       [[ $bat_percent -lt 100 ]] && current_state="charging"
     fi
-    if [[ -f /usr/bin/acpi ]]; then
-      local time_remaining=$(acpi | awk '{ print $5 }')
+    if [[ -f ${ROOT_PREFIX}/usr/bin/acpi ]]; then
+      local time_remaining=$(${ROOT_PREFIX}/usr/bin/acpi | awk '{ print $5 }')
       if [[ $time_remaining =~ rate ]]; then
         local tstring="..."
       elif [[ $time_remaining =~ "[[:digit:]]+" ]]; then
diff --git a/test/segments/battery.spec b/test/segments/battery.spec
new file mode 100755
index 00000000..808ecc6a
--- /dev/null
+++ b/test/segments/battery.spec
@@ -0,0 +1,184 @@
+#!/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
+}
+
+# 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
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "Now drawing from 'Battery Power'
+ -InternalBattery-0 (id=1234567)	4%; discharging; 0:05 remaining present: true"
+
+  assertEquals "%K{black} %F{red%}🔋 %f%F{red}4%% (0:05) " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsLowWhileChargingOnOSX() {
+  local OS='OSX' # Fake OSX
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "Now drawing from 'Battery Power'
+ -InternalBattery-0 (id=1234567)	4%; charging; 0:05 remaining present: true"
+
+  assertEquals "%K{black} %F{yellow%}🔋 %f%F{yellow}4%% (0:05) " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsAlmostFullWhileDischargingOnOSX() {
+  local OS='OSX' # Fake OSX
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "Now drawing from 'Battery Power'
+ -InternalBattery-0 (id=1234567)	98%; discharging; 3:57 remaining present: true"
+
+  assertEquals "%K{black} %F{white%}🔋 %f%F{white}98%% (3:57) " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsAlmostFullWhileChargingOnOSX() {
+  local OS='OSX' # Fake OSX
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "Now drawing from 'Battery Power'
+ -InternalBattery-0 (id=1234567)	98%; charging; 3:57 remaining present: true"
+
+  assertEquals "%K{black} %F{yellow%}🔋 %f%F{yellow}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{black} %F{green%}🔋 %f%F{green}99%% " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsCalculatingOnOSX() {
+  local OS='OSX' # Fake OSX
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "Now drawing from 'Battery Power'
+ -InternalBattery-0 (id=1234567)	99%; discharging; (no estimate) present: true"
+
+  assertEquals "%K{black} %F{white%}🔋 %f%F{white}99%% (...) " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsLowWhileDischargingOnLinux() {
+  local OS='Linux' # Fake Linux
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "4" "Discharging"
+
+  assertEquals "%K{black} %F{red%}🔋 %f%F{red}4%% " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsLowWhileChargingOnLinux() {
+  local OS='Linux' # Fake Linux
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "4" "Charging"
+
+  assertEquals "%K{black} %F{yellow%}🔋 %f%F{yellow}4%% " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsNormalWhileDischargingOnLinux() {
+  local OS='Linux' # Fake Linux
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "10" "Discharging"
+
+  assertEquals "%K{black} %F{white%}🔋 %f%F{white}10%% " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsNormalWhileChargingOnLinux() {
+  local OS='Linux' # Fake Linux
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "10" "Charging"
+
+  assertEquals "%K{black} %F{yellow%}🔋 %f%F{yellow}10%% " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsFullOnLinux() {
+  local OS='Linux' # Fake Linux
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  makeBatterySay "100" "Full"
+
+  assertEquals "%K{black} %F{green%}🔋 %f%F{green}100%% " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+function testBatterySegmentIfBatteryIsNormalWithAcpiEnabledOnLinux() {
+  local OS='Linux' # Fake Linux
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  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{black} %F{white%}🔋 %f%F{white}50%% (1:38) " "$(prompt_battery left 1 false ${FOLDER})"
+
+  unalias date &>/dev/null
+}
+
+function testBatterySegmentIfBatteryIsCalculatingWithAcpiEnabledOnLinux() {
+  local OS='Linux' # Fake Linux
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
+  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{black} %F{white%}🔋 %f%F{white}50%% (...) " "$(prompt_battery left 1 false ${FOLDER})"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From d9b3edf0e856adc958758583066ca5c7383b041d Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Mon, 16 Jul 2018 22:16:41 +0200
Subject: Fix go_version test

---
 test/segments/go_version.spec | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'test/segments')

diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec
index 9104ac8b..3ff0b0e6 100755
--- a/test/segments/go_version.spec
+++ b/test/segments/go_version.spec
@@ -40,7 +40,7 @@ function testGo() {
 
   PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
 
-  assertEquals "%K{green} %F{grey93%} %f%F{grey93}go1.5.3 %k%F{green}%f " "$(build_left_prompt)"
+  assertEquals "%K{green} %F{grey93%} %f%F{255}go1.5.3 %k%F{green}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_GO_ICON
   unset PWD
-- 
cgit v1.2.3


From 743ddc1253f49195b2e2483d66e97eb5d78b3712 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:11:51 +0200
Subject: Add tests for context segment

---
 test/segments/context.spec | 75 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)
 create mode 100755 test/segments/context.spec

(limited to 'test/segments')

diff --git a/test/segments/context.spec b/test/segments/context.spec
new file mode 100755
index 00000000..e86bc357
--- /dev/null
+++ b/test/segments/context.spec
@@ -0,0 +1,75 @@
+#!/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
+
+  # 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
+}
+
+function testContextSegmentDoesNotGetRenderedWithDefaultUser() {
+    local DEFAULT_USER=$(whoami)
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context custom_world)
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
+    local SSH_CLIENT="putty"
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+
+    assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
+}
+
+function testContextSegmentWithForeignUser() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+
+    assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
+}
+
+# TODO: How to test root?
+function testContextSegmentWithRootUser() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    startSkipping # Skip test
+
+    assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
+}
+
+function testOverridingContextTemplate() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local POWERLEVEL9K_CONTEXT_TEMPLATE=xx
+
+    assertEquals "%K{black} %F{yellow}xx %k%F{black}%f " "$(build_left_prompt)"
+}
+
+function testContextSegmentIsShownIfDefaultUserIsSetWhenForced() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
+    local DEFAULT_USER=$(whoami)
+
+    assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
+}
+
+function testContextSegmentIsShownIfForced() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local POWERLEVEL9K_ALWAYS_SHOW_USER=true
+    local DEFAULT_USER=$(whoami)
+
+    assertEquals "%K{black} %F{yellow}$(whoami) %k%F{black}%f " "$(build_left_prompt)"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 829c7ceaae4f8bb72420c65afc0e2c011a359d71 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:13:52 +0200
Subject: Add tests for custom segment

---
 test/segments/custom.spec | 64 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100755 test/segments/custom.spec

(limited to 'test/segments')

diff --git a/test/segments/custom.spec b/test/segments/custom.spec
new file mode 100755
index 00000000..dea1577f
--- /dev/null
+++ b/test/segments/custom.spec
@@ -0,0 +1,64 @@
+#!/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 testCustomDirectOutputSegment() {
+    local POWERLEVEL9K_CUSTOM_WORLD="echo world"
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testCustomClosureSegment() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    function p9k_hello_world() {
+        echo "world"
+    }
+    local POWERLEVEL9K_CUSTOM_WORLD='p9k_hello_world'
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testSettingBackgroundForCustomSegment() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD="echo world"
+    local POWERLEVEL9K_CUSTOM_WORLD_BACKGROUND="yellow"
+
+    assertEquals "%K{yellow} %F{black}world %k%F{yellow}%f " "$(build_left_prompt)"
+}
+
+function testSettingForegroundForCustomSegment() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD="echo world"
+    local POWERLEVEL9K_CUSTOM_WORLD_FOREGROUND="red"
+
+    assertEquals "%K{white} %F{red}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testSettingVisualIdentifierForCustomSegment() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD="echo world"
+    local POWERLEVEL9K_CUSTOM_WORLD_ICON="hw"
+
+    assertEquals "%K{white} %F{black%}hw %f%F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testSettingVisualIdentifierForegroundColorForCustomSegment() {
+    local 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"
+
+    assertEquals "%K{white} %F{red%}hw %f%F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From edfd4732f21ddae72bdcca4191487c545e0a08d3 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:15:57 +0200
Subject: Add tests for detect_virt segment

---
 test/segments/detect_virt.spec | 68 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100755 test/segments/detect_virt.spec

(limited to 'test/segments')

diff --git a/test/segments/detect_virt.spec b/test/segments/detect_virt.spec
new file mode 100755
index 00000000..efda6f43
--- /dev/null
+++ b/test/segments/detect_virt.spec
@@ -0,0 +1,68 @@
+#!/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() {
+    alias systemd-detect-virt="novirt"
+
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unalias systemd-detect-virt
+}
+
+function testDetectVirtSegmentIfSystemdReturnsPlainName() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
+    alias systemd-detect-virt="echo 'xxx'"
+
+    assertEquals "%K{black} %F{yellow}xxx %k%F{black}%f " "$(build_left_prompt)"
+
+    unalias systemd-detect-virt
+}
+
+function testDetectVirtSegmentIfRootFsIsOnExpectedInode() {
+    local 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'"
+
+    # 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{black} %F{yellow}none %k%F{black}%f " "$(build_left_prompt)"
+
+    unalias ls
+    unalias systemd-detect-virt
+}
+
+function testDetectVirtSegmentIfRootFsIsNotOnExpectedInode() {
+    local 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'"
+
+    # 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{black} %F{yellow}chroot %k%F{black}%f " "$(build_left_prompt)"
+
+    unalias ls
+    unalias systemd-detect-virt
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From a7576074760eb773b2f7bbdfdad56f7dadae296c Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:16:40 +0200
Subject: Add tests for disk_usage segment

---
 test/segments/disk_usage.spec | 112 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 112 insertions(+)
 create mode 100755 test/segments/disk_usage.spec

(limited to 'test/segments')

diff --git a/test/segments/disk_usage.spec b/test/segments/disk_usage.spec
new file mode 100755
index 00000000..574445d9
--- /dev/null
+++ b/test/segments/disk_usage.spec
@@ -0,0 +1,112 @@
+#!/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
+
+  # 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() {
+  df() {
+      echo "Filesystem     1K-blocks      Used Available Use% Mounted on
+/dev/disk1     487219288 471466944  15496344  97% /"
+  }
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
+
+  assertEquals "%K{red} %F{white%}hdd  %f%F{white}97%% %k%F{red}%f " "$(build_left_prompt)"
+
+  unfunction df
+}
+
+function testDiskUsageSegmentWhenDiskIsVeryFull() {
+  df() {
+      echo "Filesystem     1K-blocks      Used Available Use% Mounted on
+/dev/disk1     487219288 471466944  15496344  94% /"
+  }
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
+
+  assertEquals "%K{yellow} %F{black%}hdd  %f%F{black}94%% %k%F{yellow}%f " "$(build_left_prompt)"
+
+  unfunction df
+}
+
+function testDiskUsageSegmentWhenDiskIsQuiteEmpty() {
+  df() {
+      echo "Filesystem     1K-blocks      Used Available Use% Mounted on
+/dev/disk1     487219288 471466944  15496344  4% /"
+  }
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
+
+  assertEquals "%K{black} %F{yellow%}hdd  %f%F{yellow}4%% %k%F{black}%f " "$(build_left_prompt)"
+
+  unfunction df
+}
+
+function testDiskUsageSegmentPrintsNothingIfDiskIsQuiteEmptyAndOnlyWarningsShouldBeDisplayed() {
+  df() {
+      echo "Filesystem     1K-blocks      Used Available Use% Mounted on
+/dev/disk1     487219288 471466944  15496344  4% /"
+  }
+
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage custom_world)
+  local POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=true
+  local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+
+  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+  unfunction df
+}
+
+function testDiskUsageSegmentWarningLevelCouldBeAdjusted() {
+  df() {
+    echo "Filesystem     1K-blocks      Used Available Use% Mounted on
+/dev/disk1     487219288 471466944  15496344  11% /"
+  }
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
+  local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=10
+
+  assertEquals "%K{yellow} %F{black%}hdd  %f%F{black}11%% %k%F{yellow}%f " "$(build_left_prompt)"
+
+  unfunction df
+}
+
+function testDiskUsageSegmentCriticalLevelCouldBeAdjusted() {
+  df() {
+    echo "Filesystem     1K-blocks      Used Available Use% Mounted on
+/dev/disk1     487219288 471466944  15496344  11% /"
+  }
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
+  local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=5
+  local POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=10
+
+  assertEquals "%K{red} %F{white%}hdd  %f%F{white}11%% %k%F{red}%f " "$(build_left_prompt)"
+
+  unfunction df
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 1cf68e418c184023c717b8a6a71d30168936adf4 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:19:14 +0200
Subject: Add tests for ip segment

---
 test/segments/ip.spec | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 202 insertions(+)
 create mode 100755 test/segments/ip.spec

(limited to 'test/segments')

diff --git a/test/segments/ip.spec b/test/segments/ip.spec
new file mode 100755
index 00000000..3ae2d389
--- /dev/null
+++ b/test/segments/ip.spec
@@ -0,0 +1,202 @@
+#!/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 testIpSegmentPrintsNothingOnOsxIfNotConnected() {
+  alias networksetup='echo "not connected"'
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
+  local OS="OSX" # Fake OSX
+  local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+
+  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+  unalias networksetup
+}
+
+function testIpSegmentPrintsNothingOnLinuxIfNotConnected() {
+  alias ip='echo "not connected"'
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
+  local OS="Linux" # Fake Linux
+  local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+
+  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+  unalias ip
+}
+
+function testIpSegmentWorksOnOsxWithNoInterfaceSpecified() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+  local OS='OSX' # Fake OSX
+  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'; };_"
+
+  assertEquals "%K{cyan} %F{black%}IP %f%F{black}1.2.3.4 %k%F{cyan}%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 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+  local OS='OSX' # Fake OSX
+  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
+          ;;
+      }
+  }
+
+  assertEquals "%K{cyan} %F{black%}IP %f%F{black}1.2.3.4 %k%F{cyan}%f " "$(build_left_prompt)"
+
+  unfunction ipconfig
+  unalias networksetup
+}
+
+function testIpSegmentWorksOnOsxWithInterfaceSpecified() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+  local OS='OSX' # Fake OSX
+  local POWERLEVEL9K_IP_INTERFACE='xxx'
+  alias ipconfig="_(){ echo '1.2.3.4'; };_"
+
+  assertEquals "%K{cyan} %F{black%}IP %f%F{black}1.2.3.4 %k%F{cyan}%f " "$(build_left_prompt)"
+
+  unalias ipconfig
+}
+
+function testIpSegmentWorksOnLinuxWithNoInterfaceSpecified() {
+    setopt aliases
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+    local OS='Linux' # Fake Linux
+    # 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
+   }
+
+  assertEquals "%K{cyan} %F{black%}IP %f%F{black}10.0.2.15 %k%F{cyan}%f " "$(build_left_prompt)"
+
+  unfunction ip
+}
+
+function testIpSegmentWorksOnLinuxWithMultipleInterfacesSpecified() {
+    setopt aliases
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+    local OS='Linux' # Fake Linux
+    # 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
+   }
+
+  assertEquals "%K{cyan} %F{black%}IP %f%F{black}10.0.2.15 %k%F{cyan}%f " "$(build_left_prompt)"
+
+  unfunction ip
+}
+
+function testIpSegmentWorksOnLinuxWithInterfaceSpecified() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+  local OS='Linux' # Fake Linux
+  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';
+   }
+
+  assertEquals "%K{cyan} %F{black%}IP %f%F{black}10.0.2.15 %k%F{cyan}%f " "$(build_left_prompt)"
+
+  unfunction ip
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 2efbd7e1880f62801db2d3739e3d33b2dfc1b154 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:20:50 +0200
Subject: Add tests for load segment

---
 test/segments/load.spec | 137 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 137 insertions(+)
 create mode 100755 test/segments/load.spec

(limited to 'test/segments')

diff --git a/test/segments/load.spec b/test/segments/load.spec
new file mode 100755
index 00000000..45e28db3
--- /dev/null
+++ b/test/segments/load.spec
@@ -0,0 +1,137 @@
+#!/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 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 OS="OSX" # Fake OSX
+    local POWERLEVEL9K_LOAD_WHICH=1
+
+    assertEquals "%K{green} %F{black%}L %f%F{black}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 OS="BSD" # Fake BSD
+    local POWERLEVEL9K_LOAD_WHICH=1
+
+    assertEquals "%K{green} %F{black%}L %f%F{black}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 OS="Linux" # Fake Linux
+    local POWERLEVEL9K_LOAD_WHICH=1
+
+    assertEquals "%K{green} %F{black%}L %f%F{black}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 OS="Linux" # Fake Linux
+    local POWERLEVEL9K_LOAD_WHICH=1
+
+    assertEquals "%K{green} %F{black%}L %f%F{black}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 OS="Linux" # Fake Linux
+    local POWERLEVEL9K_LOAD_WHICH=1
+
+    assertEquals "%K{yellow} %F{black%}L %f%F{black}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 OS="Linux" # Fake Linux
+    local POWERLEVEL9K_LOAD_WHICH=1
+
+    assertEquals "%K{red} %F{black%}L %f%F{black}2.81 " "$(prompt_load left 1 false ${FOLDER})"
+
+    unalias nproc
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 85cc62b72b3ab10fffe03b1446f1403e7c42b21d Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:21:27 +0200
Subject: Add tests for node_version segment

---
 test/segments/node_version.spec | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100755 test/segments/node_version.spec

(limited to 'test/segments')

diff --git a/test/segments/node_version.spec b/test/segments/node_version.spec
new file mode 100755
index 00000000..2fe3594e
--- /dev/null
+++ b/test/segments/node_version.spec
@@ -0,0 +1,36 @@
+#!/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 testNodeVersionSegmentPrintsNothingWithoutNode() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    alias node="nonode 2>/dev/null"
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unset POWERLEVEL9K_CUSTOM_WORLD
+    unalias node
+}
+
+function testNodeVersionSegmentWorks() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version)
+    node() {
+        echo "v1.2.3"
+    }
+
+    assertEquals "%K{green} %F{white%}⬢ %f%F{white}1.2.3 %k%F{green}%f " "$(build_left_prompt)"
+
+    unfunction node
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 44ec267dfbff5ede95c46c5bd01e684a259df3cf Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:21:48 +0200
Subject: Add tests for nodeenv segment

---
 test/segments/nodeenv.spec | 81 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)
 create mode 100755 test/segments/nodeenv.spec

(limited to 'test/segments')

diff --git a/test/segments/nodeenv.spec b/test/segments/nodeenv.spec
new file mode 100755
index 00000000..bfa1d7fa
--- /dev/null
+++ b/test/segments/nodeenv.spec
@@ -0,0 +1,81 @@
+#!/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
+
+  # Test specfic
+  # unset all possible user specified variables
+  unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
+  unset NODE_VIRTUAL_ENV
+}
+
+function testNodeenvSegmentPrintsNothingWithoutNode() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    alias node="nonode 2>/dev/null"
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unalias node
+}
+
+function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvIsNotSet() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    node() {
+        echo "v1.2.3"
+    }
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unfunction node
+}
+
+function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvDisablePromptIsSet() {
+    local 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
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
+    unset NODE_VIRTUAL_ENV
+    unfunction node
+}
+
+function testNodeenvSegmentPrintsAtLeastNodeEnvWithoutNode() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
+    alias node="nonode 2>/dev/null"
+    NODE_VIRTUAL_ENV="node-env"
+
+    assertEquals "%K{black} %F{green%}⬢ %f%F{green}[node-env] %k%F{black}%f " "$(build_left_prompt)"
+
+    unset NODE_VIRTUAL_ENV
+    unalias node
+}
+
+function testNodeenvSegmentWorks() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
+    node() {
+        echo "v1.2.3"
+    }
+    NODE_VIRTUAL_ENV="node-env"
+
+    assertEquals "%K{black} %F{green%}⬢ %f%F{green}v1.2.3[node-env] %k%F{black}%f " "$(build_left_prompt)"
+
+    unfunction node
+    unset NODE_VIRTUAL_ENV
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 084f992fab98b2d2902c60f3737e2526a4f58649 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:22:17 +0200
Subject: Add tests for nvm segment

---
 test/segments/nvm.spec | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)
 create mode 100755 test/segments/nvm.spec

(limited to 'test/segments')

diff --git a/test/segments/nvm.spec b/test/segments/nvm.spec
new file mode 100755
index 00000000..fe40b067
--- /dev/null
+++ b/test/segments/nvm.spec
@@ -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"
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
+  P9K_HOME=$(pwd)
+  ### Test specific
+  # Create default folder and git init it.
+  FOLDER=/tmp/powerlevel9k-test/nvm-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 testNvmSegmentPrintsNothingIfNvmIsNotAvailable() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
+  local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+  alias nvm=nonvm
+
+  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+  unset POWERLEVEL9K_CUSTOM_WORLD
+  unalias nvm
+}
+
+function testNvmSegmentWorksWithoutHavingADefaultAlias() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm)
+  nvm() { echo 'v4.6.0'; }
+
+  assertEquals "%K{green} %F{011%}⬢ %f%F{011}4.6.0 %k%F{green}%f " "$(build_left_prompt)"
+
+  unfunction nvm
+}
+
+function testNvmSegmentPrintsNothingWhenOnDefaultVersion() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
+  local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+  nvm() { echo 'v4.6.0'; }
+
+  export NVM_DIR="${FOLDER}"
+  mkdir alias
+  echo 'v4.6.0' > alias/default
+
+  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+  unfunction nvm
+  unset POWERLEVEL9K_CUSTOM_WORLD
+  unset NVM_DIR
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From e95f84a55df716d45dc3609538a8fa89f3c6c219 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:23:12 +0200
Subject: Add tests for php_version segment

---
 test/segments/php_version.spec | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100755 test/segments/php_version.spec

(limited to 'test/segments')

diff --git a/test/segments/php_version.spec b/test/segments/php_version.spec
new file mode 100755
index 00000000..ccf157c9
--- /dev/null
+++ b/test/segments/php_version.spec
@@ -0,0 +1,36 @@
+#!/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 testPhpVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version custom_world)
+  local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+  alias php="nophp"
+
+  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+  unalias php
+}
+
+function testPhpVersionSegmentWorks() {
+  local 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
+'"
+
+  assertEquals "%K{013} %F{255}PHP 5.6.27 %k%F{fuchsia}%f " "$(build_left_prompt)"
+
+  unalias php
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 1e71d452e1f20568ed83f9d86fda63ba58643bad Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:23:32 +0200
Subject: Add tests for public_ip segment

---
 test/segments/public_ip.spec | 188 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 188 insertions(+)
 create mode 100755 test/segments/public_ip.spec

(limited to 'test/segments')

diff --git a/test/segments/public_ip.spec b/test/segments/public_ip.spec
new file mode 100755
index 00000000..a9c0a770
--- /dev/null
+++ b/test/segments/public_ip.spec
@@ -0,0 +1,188 @@
+#!/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
+
+  # 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 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'
+
+  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+  unalias dig
+}
+
+function testPublicIpSegmentPrintsNoticeIfNotConnected() {
+  local 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'
+
+  assertEquals "%K{black} %F{white}disconnected %k%F{black}%f " "$(build_left_prompt)"
+
+  unalias dig
+}
+
+function testPublicIpSegmentWorksWithWget() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  alias dig='nodig'
+  alias curl='nocurl'
+  wget() {
+      echo "wget 1.2.3.4"
+  }
+
+  assertEquals "%K{black} %F{white}wget 1.2.3.4 %k%F{black}%f " "$(build_left_prompt)"
+
+  unfunction wget
+  unalias dig
+  unalias curl
+}
+
+function testPublicIpSegmentUsesCurlAsFallbackMethodIfWgetIsNotAvailable() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  alias dig='nodig'
+  alias wget='nowget'
+  curl() {
+      echo "curl 1.2.3.4"
+  }
+
+  assertEquals "%K{black} %F{white}curl 1.2.3.4 %k%F{black}%f " "$(build_left_prompt)"
+
+  unfunction curl
+  unalias dig
+  unalias wget
+}
+
+function testPublicIpSegmentUsesDigAsFallbackMethodIfWgetAndCurlAreNotAvailable() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  alias curl='nocurl'
+  alias wget='nowget'
+  dig() {
+      echo "dig 1.2.3.4"
+  }
+
+  assertEquals "%K{black} %F{white}dig 1.2.3.4 %k%F{black}%f " "$(build_left_prompt)"
+
+  unfunction dig
+  unalias curl
+  unalias wget
+}
+
+function testPublicIpSegmentCachesFile() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  dig() {
+      echo "first"
+  }
+
+  assertEquals "%K{black} %F{white}first %k%F{black}%f " "$(build_left_prompt)"
+
+  dig() {
+      echo "second"
+  }
+
+  # Segment should not have changed!
+  assertEquals "%K{black} %F{white}first %k%F{black}%f " "$(build_left_prompt)"
+
+  unfunction dig
+}
+
+function testPublicIpSegmentRefreshesCachesFileAfterTimeout() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  local POWERLEVEL9K_PUBLIC_IP_TIMEOUT=2
+  dig() {
+      echo "first"
+  }
+
+  assertEquals "%K{black} %F{white}first %k%F{black}%f " "$(build_left_prompt)"
+
+  sleep 3
+  dig() {
+      echo "second"
+  }
+
+  # Segment should not have changed!
+  assertEquals "%K{black} %F{white}second %k%F{black}%f " "$(build_left_prompt)"
+
+  unfunction dig
+}
+
+function testPublicIpSegmentRefreshesCachesFileIfEmpty() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  dig() {
+      echo "first"
+  }
+
+  assertEquals "%K{black} %F{white}first %k%F{black}%f " "$(build_left_prompt)"
+
+  # Truncate cache file
+  echo "" >! $POWERLEVEL9K_PUBLIC_IP_FILE
+
+  dig() {
+      echo "second"
+  }
+
+  # Segment should not have changed!
+  assertEquals "%K{black} %F{white}second %k%F{black}%f " "$(build_left_prompt)"
+
+  unfunction dig
+}
+
+function testPublicIpSegmentWhenGoingOnline() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  local POWERLEVEL9K_PUBLIC_IP_METHODS="dig"
+  local POWERLEVEL9K_PUBLIC_IP_NONE="disconnected"
+  alias dig="nodig"
+
+  assertEquals "%K{black} %F{white}disconnected %k%F{black}%f " "$(build_left_prompt)"
+
+  unalias dig
+
+  dig() {
+      echo "second"
+  }
+
+  # Segment should not have changed!
+  assertEquals "%K{black} %F{white}second %k%F{black}%f " "$(build_left_prompt)"
+
+  unfunction dig
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From cc31a05c526ab7160ab675fa590f206a76b0380c Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:25:06 +0200
Subject: Add test for ram segment

---
 test/segments/ram.spec | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100755 test/segments/ram.spec

(limited to 'test/segments')

diff --git a/test/segments/ram.spec b/test/segments/ram.spec
new file mode 100755
index 00000000..104b8c82
--- /dev/null
+++ b/test/segments/ram.spec
@@ -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
+
+  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() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ram)
+    local OS="OSX" # Fake OSX
+    alias vm_stat="echo 'Mach Virtual Memory Statistics: (page size of 4096 bytes)
+Pages free:                              299687.
+Pages active:                           1623792.
+Pages inactive:                         1313411.
+'"
+
+    assertEquals "%K{yellow} %F{black%}RAM %f%F{black}6.15G " "$(prompt_ram left 1 false ${FOLDER})"
+
+    unalias vm_stat
+}
+
+function testRamSegmentWorksOnBsd() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ram)
+    local OS="BSD" # Fake BSD
+    mkdir -p var/run
+    echo "avail memory 5678B 299687 4444G 299" > var/run/dmesg.boot
+
+    assertEquals "%K{yellow} %F{black%}RAM %f%F{black}0.29M " "$(prompt_ram left 1 false ${FOLDER})"
+}
+
+function testRamSegmentWorksOnLinux() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ram)
+    local OS="Linux" # Fake Linux
+    mkdir proc
+    echo "MemAvailable: 299687" > proc/meminfo
+
+    assertEquals "%K{yellow} %F{black%}RAM %f%F{black}0.29G " "$(prompt_ram left 1 false ${FOLDER})"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From e51faa0af176638fce3da3bf03f4127d4f190438 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:25:35 +0200
Subject: Add tests for ssh segment

---
 test/segments/ssh.spec | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)
 create mode 100755 test/segments/ssh.spec

(limited to 'test/segments')

diff --git a/test/segments/ssh.spec b/test/segments/ssh.spec
new file mode 100755
index 00000000..2ad4341e
--- /dev/null
+++ b/test/segments/ssh.spec
@@ -0,0 +1,70 @@
+#!/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 mockRust() {
+  echo 'rustc  0.4.1a-alpha'
+}
+
+function testSshSegmentPrintsNothingIfNoSshConnection() {
+  local 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
+
+  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testSshSegmentWorksIfOnlySshClientIsSet() {
+  local 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
+
+  assertEquals "%K{black} %F{yellow%}ssh-icon%f %k%F{black}%f " "$(build_left_prompt)"
+
+  unset SSH_CLIENT
+}
+
+function testSshSegmentWorksIfOnlySshTtyIsSet() {
+  local 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
+
+  assertEquals "%K{black} %F{yellow%}ssh-icon%f %k%F{black}%f " "$(build_left_prompt)"
+
+  unset SSH_TTY
+}
+
+function testSshSegmentWorksIfAllNecessaryVariablesAreSet() {
+  local 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'
+
+  assertEquals "%K{black} %F{yellow%}ssh-icon%f %k%F{black}%f " "$(build_left_prompt)"
+
+  unset SSH_TTY
+  unset SSH_CLIENT
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From af31b2de9b62134298d06540f70bc80e84e65f32 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:26:39 +0200
Subject: Add tests for swap segment

---
 test/segments/swap.spec | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100755 test/segments/swap.spec

(limited to 'test/segments')

diff --git a/test/segments/swap.spec b/test/segments/swap.spec
new file mode 100755
index 00000000..52719395
--- /dev/null
+++ b/test/segments/swap.spec
@@ -0,0 +1,52 @@
+#!/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 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 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
+    local OS="OSX" # Fake OSX
+    sysctl() {
+        echo "vm.swapusage: total = 3072,00M  used = 1620,50M  free = 1451,50M  (encrypted)"
+    }
+
+    assertEquals "%K{yellow} %F{black%}SWP %f%F{black}1.58G " "$(prompt_swap left 1 false ${FOLDER})"
+
+    unfunction sysctl
+}
+
+function testSwapSegmentWorksOnLinux() {
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
+    local OS="Linux" # Fake Linux
+    mkdir proc
+    echo "SwapTotal: 1000000" > proc/meminfo
+    echo "SwapFree: 1000" >> proc/meminfo
+
+    assertEquals "%K{yellow} %F{black%}SWP %f%F{black}0.95G " "$(prompt_swap left 1 false ${FOLDER})"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 78e03a5fe6f7b8644164b65d62d057e13ef69e1b Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:27:03 +0200
Subject: Add tests for swift segment

---
 test/segments/swift_version.spec | 52 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100755 test/segments/swift_version.spec

(limited to 'test/segments')

diff --git a/test/segments/swift_version.spec b/test/segments/swift_version.spec
new file mode 100755
index 00000000..e58cc817
--- /dev/null
+++ b/test/segments/swift_version.spec
@@ -0,0 +1,52 @@
+#!/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 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 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swift_version custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    alias swift="noswift"
+
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unalias swift
+}
+
+function testSwiftSegmentWorks() {
+    local 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"
+    }
+
+    assertEquals "%K{magenta} %F{white%}Swift %f%F{white}3.0.1 %k%F{magenta}%f " "$(build_left_prompt)"
+
+    unfunction swift
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 84f327bd60956405b9644ef48f05221903311267 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:27:23 +0200
Subject: Add tests for symfony_version segment

---
 test/segments/symfony_version.spec | 99 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)
 create mode 100755 test/segments/symfony_version.spec

(limited to 'test/segments')

diff --git a/test/segments/symfony_version.spec b/test/segments/symfony_version.spec
new file mode 100755
index 00000000..ba0bf96a
--- /dev/null
+++ b/test/segments/symfony_version.spec
@@ -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"
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
+  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 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+    alias php="nophp"
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unalias php
+}
+
+function testSymfonyVersionSegmentPrintsNothingIfSymfonyIsNotAvailable() {
+    local 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'
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testSymfonyVersionPrintsNothingIfPhpThrowsAnError() {
+    local 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"
+    }
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+
+    unfunction php
+}
+
+function testSymfonyVersionSegmentWorks() {
+    startSkipping # Skip test
+    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
+    mkdir app
+    touch app/AppKernel.php
+
+    function php() {
+        echo "Symfony version 3.1.4 - app/dev/debug"
+    }
+
+    assertEquals "%K{240} %F{black%}SF %f%F{black}3.1.4 %k%F{240}%f " "$(build_left_prompt)"
+
+    unfunction php
+}
+
+function testSymfonyVersionSegmentWorksInNestedFolder() {
+    startSkipping # Skip test
+    local 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
+
+    assertEquals "%K{240} %F{black%}SF %f%F{black}3.1.4 %k%F{240}%f " "$(build_left_prompt)"
+
+    unfunction php
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 0d4004ef1926f0e0e79ec37390ce2840b7db6359 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:27:44 +0200
Subject: Add tests for todo segment

---
 test/segments/todo.spec | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100755 test/segments/todo.spec

(limited to 'test/segments')

diff --git a/test/segments/todo.spec b/test/segments/todo.spec
new file mode 100755
index 00000000..0d2d8203
--- /dev/null
+++ b/test/segments/todo.spec
@@ -0,0 +1,52 @@
+#!/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 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 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo custom_world)
+    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+
+    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testTodoSegmentWorksAsExpected() {
+    # TODO: Skript in den PATH legen!
+    local 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
+
+    assertEquals "%K{244} %F{black%}☑ %f%F{black}100 %k%F{grey50}%f " "$(build_left_prompt)"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From ad0c9a6802e8b22f851d52f03c1880f6b28b81ed Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:28:08 +0200
Subject: Add tests for vcs (git) segment

---
 test/segments/vcs-git.spec | 309 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 309 insertions(+)
 create mode 100755 test/segments/vcs-git.spec

(limited to 'test/segments')

diff --git a/test/segments/vcs-git.spec b/test/segments/vcs-git.spec
new file mode 100755
index 00000000..9429589d
--- /dev/null
+++ b/test/segments/vcs-git.spec
@@ -0,0 +1,309 @@
+#!/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 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 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
+  local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
+
+  assertEquals "%K{white} %F{cyan} master %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testColorOverridingForModifiedStateWorks() {
+  local 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
+
+  assertEquals "%K{yellow} %F{red} master ● %k%F{yellow}%f " "$(build_left_prompt)"
+}
+
+function testColorOverridingForUntrackedStateWorks() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='cyan'
+  local POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='yellow'
+
+  touch testfile
+
+  assertEquals "%K{yellow} %F{cyan} master ? %k%F{yellow}%f " "$(build_left_prompt)"
+}
+
+function testGitIconWorks() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local POWERLEVEL9K_VCS_GIT_ICON='Git-Icon'
+
+  assertEquals "%K{green} %F{black%}Git-Icon %f%F{black} master %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testGitlabIconWorks() {
+  local 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
+
+  assertEquals "%K{green} %F{black%}GL-Icon %f%F{black} master %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testBitbucketIconWorks() {
+  local 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
+
+  assertEquals "%K{green} %F{black%}BB-Icon %f%F{black} master %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testGitHubIconWorks() {
+  local 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
+
+  assertEquals "%K{green} %F{black%}GH-Icon %f%F{black} master %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testUntrackedFilesIconWorks() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
+
+  # Create untracked file
+  touch "i-am-untracked.txt"
+
+  assertEquals "%K{green} %F{black} master ? %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testStagedFilesIconWorks() {
+  local 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
+
+  assertEquals "%K{yellow} %F{black} master ✚ %k%F{yellow}%f " "$(build_left_prompt)"
+}
+
+function testUnstagedFilesIconWorks() {
+  local 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
+
+  assertEquals "%K{yellow} %F{black} master ● %k%F{yellow}%f " "$(build_left_prompt)"
+}
+
+function testStashIconWorks() {
+  local 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
+
+  assertEquals "%K{green} %F{black} master S1 %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testTagIconWorks() {
+  local 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"
+
+  assertEquals "%K{green} %F{black} master Tv0.0.1 %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testTagIconInDetachedHeadState() {
+  local 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)
+
+  assertEquals "%K{green} %F{black} ${hash} Tv0.0.1 %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testActionHintWorks() {
+  local 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
+
+  assertEquals "%K{yellow} %F{black} master %F{red}| merge%f %k%F{yellow}%f " "$(build_left_prompt)"
+}
+
+function testIncomingHintWorks() {
+  local 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
+
+  assertEquals "%K{green} %F{black} master I1 %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testOutgoingHintWorks() {
+  local 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
+
+  assertEquals "%K{green} %F{black} master o1 %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testShorteningCommitHashWorks() {
+  local 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)
+
+  # This test needs to call powerlevel9k_vcs_init, where
+  # the changeset is truncated.
+  powerlevel9k_vcs_init
+  assertEquals "%K{green} %F{black}${hash}  master %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
+  local 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
+
+  # This test needs to call powerlevel9k_vcs_init, where
+  # the changeset is truncated.
+  powerlevel9k_vcs_init
+  assertEquals "%K{green} %F{black} master %k%F{green}%f " "$(build_left_prompt)"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From aa5e9ccc3b089291c8653e5259725a61e4c749ba Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 18 Jul 2018 22:28:28 +0200
Subject: Add tests for vcs (hg) segment

---
 test/segments/vcs-hg.spec | 169 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 169 insertions(+)
 create mode 100755 test/segments/vcs-hg.spec

(limited to 'test/segments')

diff --git a/test/segments/vcs-hg.spec b/test/segments/vcs-hg.spec
new file mode 100755
index 00000000..6d8c6428
--- /dev/null
+++ b/test/segments/vcs-hg.spec
@@ -0,0 +1,169 @@
+#!/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 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 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
+  local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
+
+  assertEquals "%K{white} %F{cyan} default %k%F{white}%f " "$(build_left_prompt)"
+}
+
+function testColorOverridingForModifiedStateWorks() {
+  local 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
+
+  assertEquals "%K{yellow} %F{red} default ● %k%F{yellow}%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 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  touch "myfile.txt"
+  hg add myfile.txt
+
+  assertEquals "%K{yellow} %F{black} default ● %k%F{yellow}%f " "$(build_left_prompt)"
+}
+
+# We don't support tagging in mercurial right now..
+function testTagIconWorks() {
+  startSkipping # Skip test
+  local 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"
+
+  assertEquals "%K{green} %F{black} default Tv0.0.1 %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testTagIconInDetachedHeadState() {
+  startSkipping # Skip test
+  local 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)
+
+  assertEquals "%K{green} %F{black} ${hash} Tv0.0.1 %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testActionHintWorks() {
+  local 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
+
+  assertEquals "%K{yellow} %F{black} default %F{red}| merging%f %k%F{yellow}%f " "$(build_left_prompt)"
+}
+
+function testShorteningCommitHashWorks() {
+  local 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})
+
+  # This test needs to call powerlevel9k_vcs_init, where
+  # the changeset is truncated.
+  powerlevel9k_vcs_init
+
+  assertEquals "%K{green} %F{black}${hash}  default %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
+  local 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
+
+  # This test needs to call powerlevel9k_vcs_init, where
+  # the changeset is truncated.
+  powerlevel9k_vcs_init
+
+  assertEquals "%K{green} %F{black} default %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testMercurialIconWorks() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local POWERLEVEL9K_VCS_HG_ICON='HG-Icon'
+
+  assertEquals "%K{green} %F{black%}HG-Icon %f%F{black} default %k%F{green}%f " "$(build_left_prompt)"
+}
+
+function testBookmarkIconWorks() {
+  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local POWERLEVEL9K_VCS_BOOKMARK_ICON='B'
+  hg bookmark "initial"
+
+  assertEquals "%K{green} %F{black} default Binitial %k%F{green}%f " "$(build_left_prompt)"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From d13410d38c12e23f0a61c63625d5ad7889f86730 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Thu, 19 Jul 2018 07:40:58 +0200
Subject: Fix tests for nvm segment

---
 test/segments/nvm.spec | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

(limited to 'test/segments')

diff --git a/test/segments/nvm.spec b/test/segments/nvm.spec
index fe40b067..8f3b3c26 100755
--- a/test/segments/nvm.spec
+++ b/test/segments/nvm.spec
@@ -14,11 +14,15 @@ function setUp() {
   ### Test specific
   # Create default folder and git init it.
   FOLDER=/tmp/powerlevel9k-test/nvm-test
-  mkdir -p "${FOLDER}"
+  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
@@ -30,37 +34,29 @@ function tearDown() {
 function testNvmSegmentPrintsNothingIfNvmIsNotAvailable() {
   local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
-  alias nvm=nonvm
 
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
-
-  unset POWERLEVEL9K_CUSTOM_WORLD
-  unalias nvm
 }
 
 function testNvmSegmentWorksWithoutHavingADefaultAlias() {
   local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm)
-  nvm() { echo 'v4.6.0'; }
 
-  assertEquals "%K{green} %F{011%}⬢ %f%F{011}4.6.0 %k%F{green}%f " "$(build_left_prompt)"
+  function nvm_version() {
+    [[ ${1} == 'current' ]] && echo 'v4.6.0' || echo 'v1.4.0'
+  }
 
-  unfunction nvm
+  assertEquals "%K{magenta} %F{black%}⬢ %f%F{black}4.6.0 %k%F{magenta}%f " "$(build_left_prompt)"
 }
 
 function testNvmSegmentPrintsNothingWhenOnDefaultVersion() {
   local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
-  nvm() { echo 'v4.6.0'; }
 
-  export NVM_DIR="${FOLDER}"
-  mkdir alias
-  echo 'v4.6.0' > alias/default
+  function nvm_version() {
+    [[ ${1} == 'current' ]] && echo 'v4.6.0' || echo 'v4.6.0'
+  }
 
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
-
-  unfunction nvm
-  unset POWERLEVEL9K_CUSTOM_WORLD
-  unset NVM_DIR
 }
 
 source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From a5d9227fcb9110bc50d28f6e70bc67c918991f0d Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Thu, 19 Jul 2018 07:42:47 +0200
Subject: Add tests for vi_mode segment

---
 test/segments/vi_mode.spec | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100755 test/segments/vi_mode.spec

(limited to 'test/segments')

diff --git a/test/segments/vi_mode.spec b/test/segments/vi_mode.spec
new file mode 100755
index 00000000..205c38b7
--- /dev/null
+++ b/test/segments/vi_mode.spec
@@ -0,0 +1,38 @@
+#!/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 testViInsertModeWorks() {
+  local KEYMAP='viins'
+
+  assertEquals "%K{black} %F{blue}INSERT " "$(prompt_vi_mode left 1 false)"
+}
+
+function testViInsertModeWorksWhenLabeledAsMain() {
+  local KEYMAP='main'
+
+  assertEquals "%K{black} %F{blue}INSERT " "$(prompt_vi_mode left 1 false)"
+}
+
+function testViCommandModeWorks() {
+  local KEYMAP='vicmd'
+
+  assertEquals "%K{black} %F{white}NORMAL " "$(prompt_vi_mode left 1 false)"
+}
+
+function testViInsertModeStringIsCustomizable() {
+  local KEYMAP='viins'
+
+  assertEquals "%K{black} %F{blue}INSERT " "$(prompt_vi_mode left 1 false)"
+}
+
+source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From 7bfa471e41a225b858fcf43da255bc5962351fd9 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Thu, 19 Jul 2018 08:22:58 +0200
Subject: Fix tests for dir segment on OSX

---
 test/segments/dir.spec | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'test/segments')

diff --git a/test/segments/dir.spec b/test/segments/dir.spec
index b5fce59f..3e66e918 100755
--- a/test/segments/dir.spec
+++ b/test/segments/dir.spec
@@ -22,7 +22,15 @@ function testDirPathAbsoluteWorks() {
   POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
 
   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{blue} %F{black}/home/${USER} %k%F{blue}%f " "$(build_left_prompt)"
+  elif [[ "${OS}" == 'OSX' ]]; then
+    assertEquals "%K{blue} %F{black}/Users/${USER} %k%F{blue}%f " "$(build_left_prompt)"
+  fi
 
   cd -
   unset POWERLEVEL9K_DIR_PATH_ABSOLUTE
-- 
cgit v1.2.3


From 2fa2e7560ff6f345fba26fd92c231b0847bd7906 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Thu, 19 Jul 2018 21:49:06 +0200
Subject: Remove vcs.spec

There are now specific tests for git and hg
---
 test/segments/vcs.spec | 161 -------------------------------------------------
 1 file changed, 161 deletions(-)
 delete mode 100755 test/segments/vcs.spec

(limited to 'test/segments')

diff --git a/test/segments/vcs.spec b/test/segments/vcs.spec
deleted file mode 100755
index f6474f61..00000000
--- a/test/segments/vcs.spec
+++ /dev/null
@@ -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} mas…ter ? %k%F{green}%f " "$(build_left_prompt)"
-
-  cd -
-  rm -fr /tmp/powerlevel9k-test
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_VCS_SHORTEN_LENGTH
-  unset POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH
-  unset POWERLEVEL9K_VCS_SHORTEN_STRATEGY
-}
-
-source shunit2/source/2.1/src/shunit2
-- 
cgit v1.2.3


From 16e5e14af747bb310dabd367648b5566cd2edc6b Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Thu, 19 Jul 2018 22:39:19 +0200
Subject: Fix tests on older ZSH versions

---
 test/segments/anaconda.spec        | 12 ++++++---
 test/segments/aws_eb_env.spec      |  5 ++--
 test/segments/background_jobs.spec | 12 ++++++---
 test/segments/battery.spec         | 12 ---------
 test/segments/context.spec         | 21 ++++++++++------
 test/segments/custom.spec          | 18 +++++++++-----
 test/segments/detect_virt.spec     | 14 +++++++----
 test/segments/disk_usage.spec      | 18 +++++++++-----
 test/segments/ip.spec              | 21 ++++++++++------
 test/segments/node_version.spec    |  6 +++--
 test/segments/nodeenv.spec         | 15 +++++++----
 test/segments/nvm.spec             |  9 ++++---
 test/segments/php_version.spec     |  6 +++--
 test/segments/public_ip.spec       | 27 +++++++++++++-------
 test/segments/ram.spec             |  3 ---
 test/segments/ssh.spec             | 12 ++++++---
 test/segments/status.spec          | 34 +++++++++++++++----------
 test/segments/swap.spec            |  6 +++--
 test/segments/swift_version.spec   |  6 +++--
 test/segments/symfony_version.spec | 15 +++++++----
 test/segments/todo.spec            |  6 +++--
 test/segments/vcs-git.spec         | 51 +++++++++++++++++++++++++-------------
 test/segments/vcs-hg.spec          | 30 ++++++++++++++--------
 23 files changed, 227 insertions(+), 132 deletions(-)

(limited to 'test/segments')

diff --git a/test/segments/anaconda.spec b/test/segments/anaconda.spec
index 11add849..da87c096 100755
--- a/test/segments/anaconda.spec
+++ b/test/segments/anaconda.spec
@@ -13,7 +13,8 @@ function setUp() {
 
 function testAnacondaSegmentPrintsNothingIfNoAnacondaPathIsSet() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda custom_world)
     # Unset anacona variables
     unset CONDA_ENV_PATH
     unset CONDA_PREFIX
@@ -24,7 +25,8 @@ function testAnacondaSegmentPrintsNothingIfNoAnacondaPathIsSet() {
 function testAnacondaSegmentWorksIfOnlyAnacondaPathIsSet() {
     CONDA_ENV_PATH=/tmp
     unset CONDA_PREFIX
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
     local POWERLEVEL9K_PYTHON_ICON="icon-here"
 
     assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(tmp) %k%F{blue}%f " "$(build_left_prompt)"
@@ -33,7 +35,8 @@ function testAnacondaSegmentWorksIfOnlyAnacondaPathIsSet() {
 function testAnacondaSegmentWorksIfOnlyAnacondaPrefixIsSet() {
     unset CONDA_ENV_PATH
     local CONDA_PREFIX="test"
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
     local POWERLEVEL9K_PYTHON_ICON="icon-here"
 
     assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(test) %k%F{blue}%f " "$(build_left_prompt)"
@@ -42,7 +45,8 @@ function testAnacondaSegmentWorksIfOnlyAnacondaPrefixIsSet() {
 function testAnacondaSegmentWorks() {
     local CONDA_ENV_PATH=/tmp
     local CONDA_PREFIX="test"
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
     local POWERLEVEL9K_PYTHON_ICON="icon-here"
 
     assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(tmptest) %k%F{blue}%f " "$(build_left_prompt)"
diff --git a/test/segments/aws_eb_env.spec b/test/segments/aws_eb_env.spec
index 530da6a1..56042027 100755
--- a/test/segments/aws_eb_env.spec
+++ b/test/segments/aws_eb_env.spec
@@ -23,7 +23,7 @@ function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSet() {
     echo "test:\n    environment: test" > /tmp/powerlevel9k-test/.elasticbeanstalk/config.yml
     cd /tmp/powerlevel9k-test
 
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
 
     assertEquals "%K{black} %F{green%}🌱  %f%F{green}test %k%F{black}%f " "$(build_left_prompt)"
 
@@ -40,7 +40,8 @@ function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSetInParentDirec
     echo "test:\n    environment: test" > /tmp/powerlevel9k-test/.elasticbeanstalk/config.yml
     cd /tmp/powerlevel9k-test/1/12/123/1234/12345
 
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
 
     assertEquals "%K{black} %F{green%}🌱  %f%F{green}test %k%F{black}%f " "$(build_left_prompt)"
 
diff --git a/test/segments/background_jobs.spec b/test/segments/background_jobs.spec
index 9f866ff0..5a000b66 100755
--- a/test/segments/background_jobs.spec
+++ b/test/segments/background_jobs.spec
@@ -13,7 +13,8 @@ function setUp() {
 
 function testBackgroundJobsSegmentPrintsNothingWithoutBackgroundJobs() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs custom_world)
     alias jobs="nojobs 2>/dev/null"
 
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
@@ -23,7 +24,8 @@ function testBackgroundJobsSegmentPrintsNothingWithoutBackgroundJobs() {
 
 function testBackgroundJobsSegmentWorksWithOneBackgroundJob() {
     unset POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
     jobs() {
         echo '[1]  + 30444 suspended  nvim xx'
     }
@@ -35,7 +37,8 @@ function testBackgroundJobsSegmentWorksWithOneBackgroundJob() {
 
 function testBackgroundJobsSegmentWorksWithMultipleBackgroundJobs() {
     unset POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
+    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"
@@ -49,7 +52,8 @@ function testBackgroundJobsSegmentWorksWithMultipleBackgroundJobs() {
 
 function testBackgroundJobsSegmentWithVerboseMode() {
     local POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=true
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
+    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"
diff --git a/test/segments/battery.spec b/test/segments/battery.spec
index 808ecc6a..e49c3b34 100755
--- a/test/segments/battery.spec
+++ b/test/segments/battery.spec
@@ -65,7 +65,6 @@ function makeBatterySay() {
 
 function testBatterySegmentIfBatteryIsLowWhileDischargingOnOSX() {
   local OS='OSX' # Fake OSX
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "Now drawing from 'Battery Power'
  -InternalBattery-0 (id=1234567)	4%; discharging; 0:05 remaining present: true"
 
@@ -74,7 +73,6 @@ function testBatterySegmentIfBatteryIsLowWhileDischargingOnOSX() {
 
 function testBatterySegmentIfBatteryIsLowWhileChargingOnOSX() {
   local OS='OSX' # Fake OSX
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "Now drawing from 'Battery Power'
  -InternalBattery-0 (id=1234567)	4%; charging; 0:05 remaining present: true"
 
@@ -83,7 +81,6 @@ function testBatterySegmentIfBatteryIsLowWhileChargingOnOSX() {
 
 function testBatterySegmentIfBatteryIsAlmostFullWhileDischargingOnOSX() {
   local OS='OSX' # Fake OSX
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "Now drawing from 'Battery Power'
  -InternalBattery-0 (id=1234567)	98%; discharging; 3:57 remaining present: true"
 
@@ -92,7 +89,6 @@ function testBatterySegmentIfBatteryIsAlmostFullWhileDischargingOnOSX() {
 
 function testBatterySegmentIfBatteryIsAlmostFullWhileChargingOnOSX() {
   local OS='OSX' # Fake OSX
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "Now drawing from 'Battery Power'
  -InternalBattery-0 (id=1234567)	98%; charging; 3:57 remaining present: true"
 
@@ -109,7 +105,6 @@ function testBatterySegmentIfBatteryIsFullOnOSX() {
 
 function testBatterySegmentIfBatteryIsCalculatingOnOSX() {
   local OS='OSX' # Fake OSX
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "Now drawing from 'Battery Power'
  -InternalBattery-0 (id=1234567)	99%; discharging; (no estimate) present: true"
 
@@ -118,7 +113,6 @@ function testBatterySegmentIfBatteryIsCalculatingOnOSX() {
 
 function testBatterySegmentIfBatteryIsLowWhileDischargingOnLinux() {
   local OS='Linux' # Fake Linux
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "4" "Discharging"
 
   assertEquals "%K{black} %F{red%}🔋 %f%F{red}4%% " "$(prompt_battery left 1 false ${FOLDER})"
@@ -126,7 +120,6 @@ function testBatterySegmentIfBatteryIsLowWhileDischargingOnLinux() {
 
 function testBatterySegmentIfBatteryIsLowWhileChargingOnLinux() {
   local OS='Linux' # Fake Linux
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "4" "Charging"
 
   assertEquals "%K{black} %F{yellow%}🔋 %f%F{yellow}4%% " "$(prompt_battery left 1 false ${FOLDER})"
@@ -134,7 +127,6 @@ function testBatterySegmentIfBatteryIsLowWhileChargingOnLinux() {
 
 function testBatterySegmentIfBatteryIsNormalWhileDischargingOnLinux() {
   local OS='Linux' # Fake Linux
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "10" "Discharging"
 
   assertEquals "%K{black} %F{white%}🔋 %f%F{white}10%% " "$(prompt_battery left 1 false ${FOLDER})"
@@ -142,7 +134,6 @@ function testBatterySegmentIfBatteryIsNormalWhileDischargingOnLinux() {
 
 function testBatterySegmentIfBatteryIsNormalWhileChargingOnLinux() {
   local OS='Linux' # Fake Linux
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "10" "Charging"
 
   assertEquals "%K{black} %F{yellow%}🔋 %f%F{yellow}10%% " "$(prompt_battery left 1 false ${FOLDER})"
@@ -150,7 +141,6 @@ function testBatterySegmentIfBatteryIsNormalWhileChargingOnLinux() {
 
 function testBatterySegmentIfBatteryIsFullOnLinux() {
   local OS='Linux' # Fake Linux
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "100" "Full"
 
   assertEquals "%K{black} %F{green%}🔋 %f%F{green}100%% " "$(prompt_battery left 1 false ${FOLDER})"
@@ -158,7 +148,6 @@ function testBatterySegmentIfBatteryIsFullOnLinux() {
 
 function testBatterySegmentIfBatteryIsNormalWithAcpiEnabledOnLinux() {
   local OS='Linux' # Fake Linux
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "50" "Discharging"
   echo "echo 'Batter 0: Discharging, 50%, 01:38:54 remaining'" > ${FOLDER}/usr/bin/acpi
   chmod +x ${FOLDER}/usr/bin/acpi
@@ -172,7 +161,6 @@ function testBatterySegmentIfBatteryIsNormalWithAcpiEnabledOnLinux() {
 
 function testBatterySegmentIfBatteryIsCalculatingWithAcpiEnabledOnLinux() {
   local OS='Linux' # Fake Linux
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(battery)
   makeBatterySay "50" "Discharging"
   # Todo: Include real acpi output!
   echo "echo 'Batter 0: Discharging, 50%, rate remaining'" > ${FOLDER}/usr/bin/acpi
diff --git a/test/segments/context.spec b/test/segments/context.spec
index e86bc357..702280df 100755
--- a/test/segments/context.spec
+++ b/test/segments/context.spec
@@ -23,41 +23,47 @@ function tearDown() {
 function testContextSegmentDoesNotGetRenderedWithDefaultUser() {
     local DEFAULT_USER=$(whoami)
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context custom_world)
 
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
 function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
     local SSH_CLIENT="putty"
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
 
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
 }
 
 function testContextSegmentWithForeignUser() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
 
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
 }
 
 # TODO: How to test root?
 function testContextSegmentWithRootUser() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
     startSkipping # Skip test
 
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
 }
 
 function testOverridingContextTemplate() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
     local POWERLEVEL9K_CONTEXT_TEMPLATE=xx
 
     assertEquals "%K{black} %F{yellow}xx %k%F{black}%f " "$(build_left_prompt)"
 }
 
 function testContextSegmentIsShownIfDefaultUserIsSetWhenForced() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
     local POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
     local DEFAULT_USER=$(whoami)
 
@@ -65,7 +71,8 @@ function testContextSegmentIsShownIfDefaultUserIsSetWhenForced() {
 }
 
 function testContextSegmentIsShownIfForced() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
     local POWERLEVEL9K_ALWAYS_SHOW_USER=true
     local DEFAULT_USER=$(whoami)
 
diff --git a/test/segments/custom.spec b/test/segments/custom.spec
index dea1577f..261e2508 100755
--- a/test/segments/custom.spec
+++ b/test/segments/custom.spec
@@ -12,14 +12,16 @@ function setUp() {
 }
 
 function testCustomDirectOutputSegment() {
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD="echo world"
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
 
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
 function testCustomClosureSegment() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
     function p9k_hello_world() {
         echo "world"
     }
@@ -29,7 +31,8 @@ function testCustomClosureSegment() {
 }
 
 function testSettingBackgroundForCustomSegment() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD="echo world"
     local POWERLEVEL9K_CUSTOM_WORLD_BACKGROUND="yellow"
 
@@ -37,7 +40,8 @@ function testSettingBackgroundForCustomSegment() {
 }
 
 function testSettingForegroundForCustomSegment() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD="echo world"
     local POWERLEVEL9K_CUSTOM_WORLD_FOREGROUND="red"
 
@@ -45,7 +49,8 @@ function testSettingForegroundForCustomSegment() {
 }
 
 function testSettingVisualIdentifierForCustomSegment() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD="echo world"
     local POWERLEVEL9K_CUSTOM_WORLD_ICON="hw"
 
@@ -53,7 +58,8 @@ function testSettingVisualIdentifierForCustomSegment() {
 }
 
 function testSettingVisualIdentifierForegroundColorForCustomSegment() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
+    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"
diff --git a/test/segments/detect_virt.spec b/test/segments/detect_virt.spec
index efda6f43..f6cc2ee5 100755
--- a/test/segments/detect_virt.spec
+++ b/test/segments/detect_virt.spec
@@ -12,10 +12,11 @@ function setUp() {
 }
 
 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"
 
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt custom_world)
-    local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
@@ -23,7 +24,8 @@ function testDetectVirtSegmentPrintsNothingIfSystemdIsNotAvailable() {
 }
 
 function testDetectVirtSegmentIfSystemdReturnsPlainName() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
     alias systemd-detect-virt="echo 'xxx'"
 
     assertEquals "%K{black} %F{yellow}xxx %k%F{black}%f " "$(build_left_prompt)"
@@ -32,7 +34,8 @@ function testDetectVirtSegmentIfSystemdReturnsPlainName() {
 }
 
 function testDetectVirtSegmentIfRootFsIsOnExpectedInode() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
+    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"..
@@ -49,7 +52,8 @@ function testDetectVirtSegmentIfRootFsIsOnExpectedInode() {
 }
 
 function testDetectVirtSegmentIfRootFsIsNotOnExpectedInode() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
+    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"..
diff --git a/test/segments/disk_usage.spec b/test/segments/disk_usage.spec
index 574445d9..f6172c9f 100755
--- a/test/segments/disk_usage.spec
+++ b/test/segments/disk_usage.spec
@@ -32,11 +32,12 @@ function tearDown() {
 }
 
 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% /"
   }
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
 
   assertEquals "%K{red} %F{white%}hdd  %f%F{white}97%% %k%F{red}%f " "$(build_left_prompt)"
 
@@ -44,11 +45,12 @@ function testDiskUsageSegmentWhenDiskIsAlmostFull() {
 }
 
 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% /"
   }
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
 
   assertEquals "%K{yellow} %F{black%}hdd  %f%F{black}94%% %k%F{yellow}%f " "$(build_left_prompt)"
 
@@ -56,11 +58,12 @@ function testDiskUsageSegmentWhenDiskIsVeryFull() {
 }
 
 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% /"
   }
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
 
   assertEquals "%K{black} %F{yellow%}hdd  %f%F{yellow}4%% %k%F{black}%f " "$(build_left_prompt)"
 
@@ -68,12 +71,13 @@ function testDiskUsageSegmentWhenDiskIsQuiteEmpty() {
 }
 
 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_LEFT_PROMPT_ELEMENTS=(disk_usage custom_world)
   local POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=true
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
@@ -83,11 +87,12 @@ function testDiskUsageSegmentPrintsNothingIfDiskIsQuiteEmptyAndOnlyWarningsShoul
 }
 
 function testDiskUsageSegmentWarningLevelCouldBeAdjusted() {
+  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  11% /"
   }
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
   local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=10
 
   assertEquals "%K{yellow} %F{black%}hdd  %f%F{black}11%% %k%F{yellow}%f " "$(build_left_prompt)"
@@ -96,11 +101,12 @@ function testDiskUsageSegmentWarningLevelCouldBeAdjusted() {
 }
 
 function testDiskUsageSegmentCriticalLevelCouldBeAdjusted() {
+  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  11% /"
   }
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
   local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=5
   local POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=10
 
diff --git a/test/segments/ip.spec b/test/segments/ip.spec
index 3ae2d389..0d07b6ee 100755
--- a/test/segments/ip.spec
+++ b/test/segments/ip.spec
@@ -12,8 +12,9 @@ function setUp() {
 }
 
 function testIpSegmentPrintsNothingOnOsxIfNotConnected() {
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
   alias networksetup='echo "not connected"'
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
   local OS="OSX" # Fake OSX
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
@@ -23,8 +24,9 @@ function testIpSegmentPrintsNothingOnOsxIfNotConnected() {
 }
 
 function testIpSegmentPrintsNothingOnLinuxIfNotConnected() {
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
   alias ip='echo "not connected"'
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
   local OS="Linux" # Fake Linux
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
@@ -34,7 +36,8 @@ function testIpSegmentPrintsNothingOnLinuxIfNotConnected() {
 }
 
 function testIpSegmentWorksOnOsxWithNoInterfaceSpecified() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
   local OS='OSX' # Fake OSX
   alias networksetup="echo 'An asterisk (*) denotes that a network service is disabled.
 (1) Ethernet
@@ -69,7 +72,8 @@ function testIpSegmentWorksOnOsxWithNoInterfaceSpecified() {
 # in hierarchical order, but from outside this is not obvious
 # (implementation detail). So we need a test for this case.
 function testIpSegmentWorksOnOsxWithMultipleInterfacesSpecified() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
   local OS='OSX' # Fake OSX
   alias networksetup="echo 'An asterisk (*) denotes that a network service is disabled.
 (1) Ethernet
@@ -116,7 +120,8 @@ function testIpSegmentWorksOnOsxWithMultipleInterfacesSpecified() {
 }
 
 function testIpSegmentWorksOnOsxWithInterfaceSpecified() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
   local OS='OSX' # Fake OSX
   local POWERLEVEL9K_IP_INTERFACE='xxx'
   alias ipconfig="_(){ echo '1.2.3.4'; };_"
@@ -155,7 +160,8 @@ function testIpSegmentWorksOnLinuxWithNoInterfaceSpecified() {
 
 function testIpSegmentWorksOnLinuxWithMultipleInterfacesSpecified() {
     setopt aliases
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
     local OS='Linux' # Fake Linux
     # That command is harder to test, as it is used at first
     # to get all relevant network interfaces and then for
@@ -185,7 +191,8 @@ function testIpSegmentWorksOnLinuxWithMultipleInterfacesSpecified() {
 }
 
 function testIpSegmentWorksOnLinuxWithInterfaceSpecified() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
   local OS='Linux' # Fake Linux
   local POWERLEVEL9K_IP_INTERFACE='xxx'
   ip(){
diff --git a/test/segments/node_version.spec b/test/segments/node_version.spec
index 2fe3594e..b516e5ff 100755
--- a/test/segments/node_version.spec
+++ b/test/segments/node_version.spec
@@ -12,7 +12,8 @@ function setUp() {
 }
 
 function testNodeVersionSegmentPrintsNothingWithoutNode() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version custom_world)
+    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"
 
@@ -23,7 +24,8 @@ function testNodeVersionSegmentPrintsNothingWithoutNode() {
 }
 
 function testNodeVersionSegmentWorks() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version)
     node() {
         echo "v1.2.3"
     }
diff --git a/test/segments/nodeenv.spec b/test/segments/nodeenv.spec
index bfa1d7fa..511a1a19 100755
--- a/test/segments/nodeenv.spec
+++ b/test/segments/nodeenv.spec
@@ -17,7 +17,8 @@ function setUp() {
 }
 
 function testNodeenvSegmentPrintsNothingWithoutNode() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
+    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"
 
@@ -27,7 +28,8 @@ function testNodeenvSegmentPrintsNothingWithoutNode() {
 }
 
 function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvIsNotSet() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     node() {
         echo "v1.2.3"
@@ -39,7 +41,8 @@ function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvIsNotSet() {
 }
 
 function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvDisablePromptIsSet() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     node() {
         echo "v1.2.3"
@@ -55,7 +58,8 @@ function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvDisablePromptIsSet() {
 }
 
 function testNodeenvSegmentPrintsAtLeastNodeEnvWithoutNode() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
     alias node="nonode 2>/dev/null"
     NODE_VIRTUAL_ENV="node-env"
 
@@ -66,7 +70,8 @@ function testNodeenvSegmentPrintsAtLeastNodeEnvWithoutNode() {
 }
 
 function testNodeenvSegmentWorks() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
     node() {
         echo "v1.2.3"
     }
diff --git a/test/segments/nvm.spec b/test/segments/nvm.spec
index 8f3b3c26..f4a4812a 100755
--- a/test/segments/nvm.spec
+++ b/test/segments/nvm.spec
@@ -32,14 +32,16 @@ function tearDown() {
 }
 
 function testNvmSegmentPrintsNothingIfNvmIsNotAvailable() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
 function testNvmSegmentWorksWithoutHavingADefaultAlias() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm)
 
   function nvm_version() {
     [[ ${1} == 'current' ]] && echo 'v4.6.0' || echo 'v1.4.0'
@@ -49,7 +51,8 @@ function testNvmSegmentWorksWithoutHavingADefaultAlias() {
 }
 
 function testNvmSegmentPrintsNothingWhenOnDefaultVersion() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
   function nvm_version() {
diff --git a/test/segments/php_version.spec b/test/segments/php_version.spec
index ccf157c9..51fb398f 100755
--- a/test/segments/php_version.spec
+++ b/test/segments/php_version.spec
@@ -12,7 +12,8 @@ function setUp() {
 }
 
 function testPhpVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version custom_world)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version custom_world)
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
   alias php="nophp"
 
@@ -22,7 +23,8 @@ function testPhpVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
 }
 
 function testPhpVersionSegmentWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version)
+  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
diff --git a/test/segments/public_ip.spec b/test/segments/public_ip.spec
index a9c0a770..80dff215 100755
--- a/test/segments/public_ip.spec
+++ b/test/segments/public_ip.spec
@@ -36,7 +36,8 @@ function tearDown() {
 }
 
 function testPublicIpSegmentPrintsNothingByDefaultIfHostIsNotAvailable() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip custom_world)
+  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
@@ -49,7 +50,8 @@ function testPublicIpSegmentPrintsNothingByDefaultIfHostIsNotAvailable() {
 }
 
 function testPublicIpSegmentPrintsNoticeIfNotConnected() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  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
@@ -62,7 +64,8 @@ function testPublicIpSegmentPrintsNoticeIfNotConnected() {
 }
 
 function testPublicIpSegmentWorksWithWget() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
   alias dig='nodig'
   alias curl='nocurl'
   wget() {
@@ -77,7 +80,8 @@ function testPublicIpSegmentWorksWithWget() {
 }
 
 function testPublicIpSegmentUsesCurlAsFallbackMethodIfWgetIsNotAvailable() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
   alias dig='nodig'
   alias wget='nowget'
   curl() {
@@ -92,7 +96,8 @@ function testPublicIpSegmentUsesCurlAsFallbackMethodIfWgetIsNotAvailable() {
 }
 
 function testPublicIpSegmentUsesDigAsFallbackMethodIfWgetAndCurlAreNotAvailable() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
   alias curl='nocurl'
   alias wget='nowget'
   dig() {
@@ -107,7 +112,8 @@ function testPublicIpSegmentUsesDigAsFallbackMethodIfWgetAndCurlAreNotAvailable(
 }
 
 function testPublicIpSegmentCachesFile() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
   dig() {
       echo "first"
   }
@@ -125,7 +131,8 @@ function testPublicIpSegmentCachesFile() {
 }
 
 function testPublicIpSegmentRefreshesCachesFileAfterTimeout() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
   local POWERLEVEL9K_PUBLIC_IP_TIMEOUT=2
   dig() {
       echo "first"
@@ -145,7 +152,8 @@ function testPublicIpSegmentRefreshesCachesFileAfterTimeout() {
 }
 
 function testPublicIpSegmentRefreshesCachesFileIfEmpty() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
   dig() {
       echo "first"
   }
@@ -166,7 +174,8 @@ function testPublicIpSegmentRefreshesCachesFileIfEmpty() {
 }
 
 function testPublicIpSegmentWhenGoingOnline() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
+  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"
diff --git a/test/segments/ram.spec b/test/segments/ram.spec
index 104b8c82..0deaacf9 100755
--- a/test/segments/ram.spec
+++ b/test/segments/ram.spec
@@ -28,7 +28,6 @@ function tearDown() {
 }
 
 function testRamSegmentWorksOnOsx() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ram)
     local OS="OSX" # Fake OSX
     alias vm_stat="echo 'Mach Virtual Memory Statistics: (page size of 4096 bytes)
 Pages free:                              299687.
@@ -42,7 +41,6 @@ Pages inactive:                         1313411.
 }
 
 function testRamSegmentWorksOnBsd() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ram)
     local OS="BSD" # Fake BSD
     mkdir -p var/run
     echo "avail memory 5678B 299687 4444G 299" > var/run/dmesg.boot
@@ -51,7 +49,6 @@ function testRamSegmentWorksOnBsd() {
 }
 
 function testRamSegmentWorksOnLinux() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ram)
     local OS="Linux" # Fake Linux
     mkdir proc
     echo "MemAvailable: 299687" > proc/meminfo
diff --git a/test/segments/ssh.spec b/test/segments/ssh.spec
index 2ad4341e..a5360072 100755
--- a/test/segments/ssh.spec
+++ b/test/segments/ssh.spec
@@ -16,7 +16,8 @@ function mockRust() {
 }
 
 function testSshSegmentPrintsNothingIfNoSshConnection() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh custom_world)
+  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
@@ -28,7 +29,8 @@ function testSshSegmentPrintsNothingIfNoSshConnection() {
 }
 
 function testSshSegmentWorksIfOnlySshClientIsSet() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
+  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
@@ -41,7 +43,8 @@ function testSshSegmentWorksIfOnlySshClientIsSet() {
 }
 
 function testSshSegmentWorksIfOnlySshTtyIsSet() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
+  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
@@ -54,7 +57,8 @@ function testSshSegmentWorksIfOnlySshTtyIsSet() {
 }
 
 function testSshSegmentWorksIfAllNecessaryVariablesAreSet() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
+  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
diff --git a/test/segments/status.spec b/test/segments/status.spec
index 21bd65bb..d921111b 100755
--- a/test/segments/status.spec
+++ b/test/segments/status.spec
@@ -17,8 +17,9 @@ function setUp() {
 }
 
 function testStatusPrintsNothingIfReturnCodeIsZeroAndVerboseIsUnset() {
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status custom_world)
     local POWERLEVEL9K_STATUS_VERBOSE=false
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
 
@@ -26,56 +27,63 @@ function testStatusPrintsNothingIfReturnCodeIsZeroAndVerboseIsUnset() {
 }
 
 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
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
 
     assertEquals "%K{black} %F{green%}✔%f %k%F{black}%f " "$(build_left_prompt)"
 }
 
 function testStatusInGeneralErrorCase() {
-    local RETVAL=1
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
+    local RETVAL=1
 
     assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}1 %k%F{red}%f " "$(build_left_prompt)"
 }
 
 function testPipestatusInErrorCase() {
-    local -a RETVALS
-    RETVALS=(0 0 1 0)
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=true
+    local -a RETVALS
+    RETVALS=(0 0 1 0)
 
     assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}0|0|1|0 %k%F{red}%f " "$(build_left_prompt)"
 }
 
 function testStatusCrossWinsOverVerbose() {
-    local RETVAL=1
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
+    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
+    local RETVAL=1
 
     assertEquals "%K{black} %F{red%}✘%f %k%F{black}%f " "$(build_left_prompt)"
 }
 
 function testStatusShowsSignalNameInErrorCase() {
-    local RETVAL=132
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
+    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
+    local RETVAL=132
 
     assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}SIGILL(4) %k%F{red}%f " "$(build_left_prompt)"
 }
 
 function testStatusSegmentIntegrated() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
-    local POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
+    local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
+    POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
 
     false; powerlevel9k_prepare_prompts
 
diff --git a/test/segments/swap.spec b/test/segments/swap.spec
index 52719395..58f35c0a 100755
--- a/test/segments/swap.spec
+++ b/test/segments/swap.spec
@@ -28,7 +28,8 @@ function tearDown() {
 }
 
 function testSwapSegmentWorksOnOsx() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
     local OS="OSX" # Fake OSX
     sysctl() {
         echo "vm.swapusage: total = 3072,00M  used = 1620,50M  free = 1451,50M  (encrypted)"
@@ -40,7 +41,8 @@ function testSwapSegmentWorksOnOsx() {
 }
 
 function testSwapSegmentWorksOnLinux() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
     local OS="Linux" # Fake Linux
     mkdir proc
     echo "SwapTotal: 1000000" > proc/meminfo
diff --git a/test/segments/swift_version.spec b/test/segments/swift_version.spec
index e58cc817..5634de11 100755
--- a/test/segments/swift_version.spec
+++ b/test/segments/swift_version.spec
@@ -28,7 +28,8 @@ function tearDown() {
 }
 
 function testSwiftSegmentPrintsNothingIfSwiftIsNotAvailable() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swift_version custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swift_version custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     alias swift="noswift"
 
@@ -39,7 +40,8 @@ function testSwiftSegmentPrintsNothingIfSwiftIsNotAvailable() {
 }
 
 function testSwiftSegmentWorks() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swift_version)
+    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"
     }
diff --git a/test/segments/symfony_version.spec b/test/segments/symfony_version.spec
index ba0bf96a..65d193b0 100755
--- a/test/segments/symfony_version.spec
+++ b/test/segments/symfony_version.spec
@@ -28,7 +28,8 @@ function tearDown() {
 }
 
 function testSymfonyVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     alias php="nophp"
 
@@ -38,7 +39,8 @@ function testSymfonyVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
 }
 
 function testSymfonyVersionSegmentPrintsNothingIfSymfonyIsNotAvailable() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
+    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.
@@ -48,7 +50,8 @@ function testSymfonyVersionSegmentPrintsNothingIfSymfonyIsNotAvailable() {
 }
 
 function testSymfonyVersionPrintsNothingIfPhpThrowsAnError() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
+    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
@@ -65,7 +68,8 @@ function testSymfonyVersionPrintsNothingIfPhpThrowsAnError() {
 
 function testSymfonyVersionSegmentWorks() {
     startSkipping # Skip test
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
     mkdir app
     touch app/AppKernel.php
 
@@ -80,7 +84,8 @@ function testSymfonyVersionSegmentWorks() {
 
 function testSymfonyVersionSegmentWorksInNestedFolder() {
     startSkipping # Skip test
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
     mkdir app
     touch app/AppKernel.php
 
diff --git a/test/segments/todo.spec b/test/segments/todo.spec
index 0d2d8203..1dae9a68 100755
--- a/test/segments/todo.spec
+++ b/test/segments/todo.spec
@@ -33,7 +33,8 @@ function tearDown() {
 }
 
 function testTodoSegmentPrintsNothingIfTodoShIsNotInstalled() {
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
@@ -41,7 +42,8 @@ function testTodoSegmentPrintsNothingIfTodoShIsNotInstalled() {
 
 function testTodoSegmentWorksAsExpected() {
     # TODO: Skript in den PATH legen!
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo)
+    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
diff --git a/test/segments/vcs-git.spec b/test/segments/vcs-git.spec
index 9429589d..3ae4077e 100755
--- a/test/segments/vcs-git.spec
+++ b/test/segments/vcs-git.spec
@@ -70,7 +70,8 @@ function tearDown() {
 }
 
 function testColorOverridingForCleanStateWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
   local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
 
@@ -78,7 +79,8 @@ function testColorOverridingForCleanStateWorks() {
 }
 
 function testColorOverridingForModifiedStateWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red'
   local POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='yellow'
 
@@ -91,7 +93,8 @@ function testColorOverridingForModifiedStateWorks() {
 }
 
 function testColorOverridingForUntrackedStateWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='cyan'
   local POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='yellow'
 
@@ -108,7 +111,8 @@ function testGitIconWorks() {
 }
 
 function testGitlabIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  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
@@ -119,7 +123,8 @@ function testGitlabIconWorks() {
 }
 
 function testBitbucketIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  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
@@ -130,7 +135,8 @@ function testBitbucketIconWorks() {
 }
 
 function testGitHubIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  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
@@ -141,7 +147,8 @@ function testGitHubIconWorks() {
 }
 
 function testUntrackedFilesIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
 
   # Create untracked file
@@ -151,7 +158,8 @@ function testUntrackedFilesIconWorks() {
 }
 
 function testStagedFilesIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_STAGED_ICON='+'
 
   # Create staged file
@@ -165,7 +173,8 @@ function testStagedFilesIconWorks() {
 }
 
 function testUnstagedFilesIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  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
@@ -178,7 +187,8 @@ function testUnstagedFilesIconWorks() {
 }
 
 function testStashIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_STASH_ICON='S'
 
   # Create modified file
@@ -192,7 +202,8 @@ function testStashIconWorks() {
 }
 
 function testTagIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_TAG_ICON='T'
 
   touch "file.txt"
@@ -204,7 +215,8 @@ function testTagIconWorks() {
 }
 
 function testTagIconInDetachedHeadState() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_TAG_ICON='T'
 
   touch "file.txt"
@@ -221,7 +233,8 @@ function testTagIconInDetachedHeadState() {
 }
 
 function testActionHintWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
 
   touch "i-am-modified.txt"
   git add i-am-modified.txt
@@ -240,7 +253,8 @@ function testActionHintWorks() {
 }
 
 function testIncomingHintWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON='I'
 
   touch "i-am-modified.txt"
@@ -258,7 +272,8 @@ function testIncomingHintWorks() {
 }
 
 function testOutgoingHintWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON='o'
 
   touch "i-am-modified.txt"
@@ -276,7 +291,8 @@ function testOutgoingHintWorks() {
 }
 
 function testShorteningCommitHashWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_SHOW_CHANGESET=true
   local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
 
@@ -292,7 +308,8 @@ function testShorteningCommitHashWorks() {
 }
 
 function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_SHOW_CHANGESET=false
   local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
 
diff --git a/test/segments/vcs-hg.spec b/test/segments/vcs-hg.spec
index 6d8c6428..91d25ae6 100755
--- a/test/segments/vcs-hg.spec
+++ b/test/segments/vcs-hg.spec
@@ -34,7 +34,8 @@ function tearDown() {
 }
 
 function testColorOverridingForCleanStateWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
   local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
 
@@ -42,7 +43,8 @@ function testColorOverridingForCleanStateWorks() {
 }
 
 function testColorOverridingForModifiedStateWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red'
   local POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='yellow'
 
@@ -60,7 +62,8 @@ function testColorOverridingForModifiedStateWorks() {
 # This may be improved in future versions, to be a bit more consistent with
 # the git part.
 function testAddedFilesIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   touch "myfile.txt"
   hg add myfile.txt
 
@@ -70,7 +73,8 @@ function testAddedFilesIconWorks() {
 # We don't support tagging in mercurial right now..
 function testTagIconWorks() {
   startSkipping # Skip test
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_TAG_ICON='T'
 
   touch "file.txt"
@@ -83,7 +87,8 @@ function testTagIconWorks() {
 
 function testTagIconInDetachedHeadState() {
   startSkipping # Skip test
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_TAG_ICON='T'
 
   touch "file.txt"
@@ -100,7 +105,8 @@ function testTagIconInDetachedHeadState() {
 }
 
 function testActionHintWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  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
@@ -119,7 +125,8 @@ function testActionHintWorks() {
 }
 
 function testShorteningCommitHashWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_SHOW_CHANGESET=true
   local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
 
@@ -136,7 +143,8 @@ function testShorteningCommitHashWorks() {
 }
 
 function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_SHOW_CHANGESET=false
   local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
 
@@ -152,14 +160,16 @@ function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
 }
 
 function testMercurialIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_HG_ICON='HG-Icon'
 
   assertEquals "%K{green} %F{black%}HG-Icon %f%F{black} default %k%F{green}%f " "$(build_left_prompt)"
 }
 
 function testBookmarkIconWorks() {
-  local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_BOOKMARK_ICON='B'
   hg bookmark "initial"
 
-- 
cgit v1.2.3


From 4972f0b8eba711f0dafc46cdbb4e191d550da091 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Tue, 24 Jul 2018 16:24:33 +0200
Subject: Improve tests by making use of local variables

---
 test/functions/icons.spec                 |  26 +--
 test/segments/command_execution_time.spec |  60 ++----
 test/segments/detect_virt.spec            |   1 -
 test/segments/dir.spec                    | 316 ++++++++++++++----------------
 test/segments/go_version.spec             |  32 ++-
 test/segments/kubecontext.spec            |  15 +-
 test/segments/laravel_version.spec        |  27 ++-
 test/segments/rust_version.spec           |  11 +-
 8 files changed, 207 insertions(+), 281 deletions(-)

(limited to 'test/segments')

diff --git a/test/functions/icons.spec b/test/functions/icons.spec
index c8d88644..068062e6 100755
--- a/test/functions/icons.spec
+++ b/test/functions/icons.spec
@@ -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
@@ -148,7 +142,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
@@ -220,7 +214,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
@@ -292,7 +286,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
diff --git a/test/segments/command_execution_time.spec b/test/segments/command_execution_time.spec
index d3588d83..7700aaa1 100755
--- a/test/segments/command_execution_time.spec
+++ b/test/segments/command_execution_time.spec
@@ -12,85 +12,65 @@ function setUp() {
 }
 
 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'
+  local _P9K_COMMAND_DURATION=2
 
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_CUSTOM_WORLD
-  unset _P9K_COMMAND_DURATION
 }
 
 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
+  local _P9K_COMMAND_DURATION=2.03
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}2.03 %k%F{red}%f " "$(build_left_prompt)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset _P9K_COMMAND_DURATION
-  unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD
 }
 
 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
 }
 
 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
+  local _P9K_COMMAND_DURATION=0.0001
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}0.0001 %k%F{red}%f " "$(build_left_prompt)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset _P9K_COMMAND_DURATION
-  unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION
-  unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD
 }
 
 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
+  local _P9K_COMMAND_DURATION=23.5001
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}23 %k%F{red}%f " "$(build_left_prompt)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset _P9K_COMMAND_DURATION
-  unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION
 }
 
 function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand() {
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
-  _P9K_COMMAND_DURATION=180
+  local _P9K_COMMAND_DURATION=180
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}03:00 %k%F{red}%f " "$(build_left_prompt)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset _P9K_COMMAND_DURATION
 }
 
 function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() {
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
-  _P9K_COMMAND_DURATION=7200
+  local _P9K_COMMAND_DURATION=7200
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}02:00:00 %k%F{red}%f " "$(build_left_prompt)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset _P9K_COMMAND_DURATION
 }
 
 source shunit2/source/2.1/src/shunit2
\ No newline at end of file
diff --git a/test/segments/detect_virt.spec b/test/segments/detect_virt.spec
index f6cc2ee5..2dad6af0 100755
--- a/test/segments/detect_virt.spec
+++ b/test/segments/detect_virt.spec
@@ -17,7 +17,6 @@ function testDetectVirtSegmentPrintsNothingIfSystemdIsNotAvailable() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     alias systemd-detect-virt="novirt"
 
-
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
     unalias systemd-detect-virt
diff --git a/test/segments/dir.spec b/test/segments/dir.spec
index 3e66e918..df80b23c 100755
--- a/test/segments/dir.spec
+++ b/test/segments/dir.spec
@@ -9,17 +9,12 @@ 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)
-}
-
-function tearDown() {
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
 }
 
 function testDirPathAbsoluteWorks() {
-  POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
+  local POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
 
   cd ~
 
@@ -33,14 +28,15 @@ function testDirPathAbsoluteWorks() {
   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
+  local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
   mkdir -p $FOLDER
   cd $FOLDER
 
@@ -48,18 +44,16 @@ function testTruncateFoldersWorks() {
 
   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)
 
   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.
@@ -69,17 +63,15 @@ function testTruncateFolderWithHomeDirWorks() {
 
   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
+  local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
   mkdir -p $FOLDER
   cd $FOLDER
 
@@ -87,17 +79,15 @@ function testTruncateMiddleWorks() {
 
   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
+  local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
   mkdir -p $FOLDER
   cd $FOLDER
 
@@ -105,17 +95,15 @@ function testTruncationFromRightWorks() {
 
   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
+  local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
   mkdir -p $FOLDER
   cd $FOLDER
 
@@ -123,17 +111,15 @@ function testTruncateToLastWorks() {
 
   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
+  local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
   mkdir -p $FOLDER
   cd $FOLDER
 
@@ -141,17 +127,15 @@ function testTruncateToFirstAndLastWorks() {
 
   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
+  local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
   mkdir -p $FOLDER
   cd $FOLDER
 
@@ -159,18 +143,16 @@ function testTruncateAbsoluteWorks() {
 
   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
+  local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
   mkdir -p $FOLDER
   cd $FOLDER
 
@@ -178,16 +160,12 @@ function testTruncationFromRightWithEmptyDelimiter() {
 
   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"
 
   local BASEFOLDER=/tmp/powerlevel9k-test
   local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567
@@ -199,16 +177,13 @@ function testTruncateWithFolderMarkerWorks() {
 
   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'
 
   local BASEFOLDER=/tmp/powerlevel9k-test
   local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567
@@ -220,11 +195,6 @@ function testTruncateWithFolderMarkerWithChangedFolderMarker() {
 
   cd -
   rm -fr $BASEFOLDER
-  unset BASEFOLDER
-  unset FOLDER
-  unset POWERLEVEL9K_SHORTEN_FOLDER_MARKER
-  unset POWERLEVEL9K_SHORTEN_STRATEGY
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
 }
 
 function testTruncateWithPackageNameWorks() {
@@ -245,18 +215,16 @@ 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)"
 
   # Go back
   cd $p9kFolder
   rm -fr $BASEFOLDER
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_SHORTEN_STRATEGY
-  unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
 }
 
 function testTruncateWithPackageNameIfRepoIsSymlinkedInsideDeepFolder() {
@@ -284,18 +252,16 @@ 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)"
 
   # Go back
   cd $p9kFolder
   rm -fr $BASEFOLDER
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_SHORTEN_STRATEGY
-  unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
 }
 
 function testTruncateWithPackageNameIfRepoIsSymlinkedInsideGitDir() {
@@ -319,60 +285,61 @@ 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)"
 
   # 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'
 
   cd ~
   assertEquals "%K{blue} %F{black%}home-icon %f%F{black}~ %k%F{blue}%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
+  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)"
 
   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
+  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)"
 
   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'
   local FOLDER="/tmp/powerlevel9k-test/1/2"
   mkdir -p $FOLDER
   cd $FOLDER
@@ -380,12 +347,12 @@ function testChangingDirPathSeparator() {
   assertEquals "%K{blue} %F{black}xXxtmpxXxpowerlevel9k-testxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
 
   cd -
-  unset FOLDER
   rm -fr /tmp/powerlevel9k-test
-  unset POWERLEVEL9K_DIR_PATH_SEPARATOR
 }
 
 function testHomeFolderAbbreviation() {
+  local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+  POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
   local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION
   local dir=$PWD
 
@@ -411,21 +378,23 @@ function testHomeFolderAbbreviation() {
 }
 
 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'
   cd /tmp
 
   assertEquals "%K{blue} %F{black%}folder-icon %f%F{black}tmp %k%F{blue}%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'
   mkdir -p /tmp/powerlevel9k-test/1/2
   cd /tmp/powerlevel9k-test/1/2
 
@@ -433,9 +402,6 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparator() {
 
   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
@@ -446,10 +412,12 @@ 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'
   mkdir -p /tmp/powerlevel9k-test/1/2
   cd /tmp/powerlevel9k-test/1/2
 
@@ -457,17 +425,15 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndDefaultTrunc
 
   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'
   mkdir -p /tmp/powerlevel9k-test/1/2
   cd /tmp/powerlevel9k-test/1/2
 
@@ -475,17 +441,15 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndMiddleTrunca
 
   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'
   mkdir -p /tmp/powerlevel9k-test/1/2
   cd /tmp/powerlevel9k-test/1/2
 
@@ -493,17 +457,15 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndRightTruncat
 
   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'
   mkdir -p /tmp/powerlevel9k-test/adam/devl
   mkdir -p /tmp/powerlevel9k-test/alice/devl
   mkdir -p /tmp/powerlevel9k-test/alice/docs
@@ -514,24 +476,23 @@ function testTruncateToUniqueWorks() {
 
   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
   cd ~
 
   assertEquals "%K{blue} %F{black}%B~%b %k%F{blue}%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
   mkdir -p ~/powerlevel9k-test
   cd ~/powerlevel9k-test
 
@@ -539,31 +500,34 @@ function testBoldHomeSubdirWorks() {
 
   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
   cd /
 
   assertEquals "%K{blue} %F{black}%B/%b %k%F{blue}%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
   cd /tmp
 
   assertEquals "%K{blue} %F{black}/%Btmp%b %k%F{blue}%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
   mkdir -p /tmp/powerlevel9k-test
   cd /tmp/powerlevel9k-test
 
@@ -571,21 +535,23 @@ function testBoldRootSubSubdirWorks() {
 
   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'
   cd ~
 
   assertEquals "%K{blue} %F{black}%F{red}~ %k%F{blue}%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'
   mkdir -p ~/powerlevel9k-test
   cd ~/powerlevel9k-test
 
@@ -593,31 +559,34 @@ function testHighlightHomeSubdirWorks() {
 
   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'
   cd /
 
   assertEquals "%K{blue} %F{black}%F{red}/ %k%F{blue}%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'
   cd /tmp
 
   assertEquals "%K{blue} %F{black}/%F{red}tmp %k%F{blue}%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'
   mkdir /tmp/powerlevel9k-test
   cd /tmp/powerlevel9k-test
 
@@ -625,11 +594,12 @@ function testHighlightRootSubSubdirWorks() {
 
   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'
   mkdir -p ~/powerlevel9k-test
   cd ~/powerlevel9k-test
 
@@ -637,11 +607,12 @@ function testDirSeparatorColorHomeSubdirWorks() {
 
   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'
   mkdir -p /tmp/powerlevel9k-test
   cd /tmp/powerlevel9k-test
 
@@ -649,7 +620,6 @@ function testDirSeparatorColorRootSubSubdirWorks() {
 
   cd -
   rm -fr /tmp/powerlevel9k-test
-  unset POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND
 }
 
 source shunit2/source/2.1/src/shunit2
diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec
index 3ff0b0e6..1be2e8c8 100755
--- a/test/segments/go_version.spec
+++ b/test/segments/go_version.spec
@@ -35,51 +35,43 @@ 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"
+  local PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
 
   assertEquals "%K{green} %F{grey93%} %f%F{255}go1.5.3 %k%F{green}%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
-
 }
 
 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)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_CUSTOM_WORLD
 }
 
 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)"
 
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_CUSTOM_WORLD
   unalias go
 }
 
diff --git a/test/segments/kubecontext.spec b/test/segments/kubecontext.spec
index 63810378..46fe8724 100755
--- a/test/segments/kubecontext.spec
+++ b/test/segments/kubecontext.spec
@@ -66,32 +66,31 @@ 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)"
 
-  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)"
 
-  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)"
 
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_CUSTOM_WORLD
   unalias kubectl
 }
 
diff --git a/test/segments/laravel_version.spec b/test/segments/laravel_version.spec
index 40b130d2..9d3de2d4 100755
--- a/test/segments/laravel_version.spec
+++ b/test/segments/laravel_version.spec
@@ -27,42 +27,37 @@ function mockNoLaravelVersion() {
 }
 
 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)"
 
-  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)"
 
-  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)"
 
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_LARAVEL_ICON
-  unset POWERLEVEL9K_CUSTOM_WORLD
   unalias php
 }
 
diff --git a/test/segments/rust_version.spec b/test/segments/rust_version.spec
index 34883a10..3d627498 100755
--- a/test/segments/rust_version.spec
+++ b/test/segments/rust_version.spec
@@ -29,22 +29,19 @@ 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)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
 }
 
 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)"
-
-  unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-  unset POWERLEVEL9K_CUSTOM_WORLD
 }
 
 source shunit2/source/2.1/src/shunit2
-- 
cgit v1.2.3


From 06de83cc0f2282b2217c6151277dfd6789593c2e Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 25 Jul 2018 07:52:06 +0200
Subject: Prepare tests for performance optimizations

---
 test/segments/anaconda.spec               |  31 ++++--
 test/segments/aws_eb_env.spec             |  25 +++--
 test/segments/background_jobs.spec        |  14 ++-
 test/segments/battery.spec                |   1 +
 test/segments/command_execution_time.spec |  32 +++++-
 test/segments/context.spec                |  25 ++++-
 test/segments/custom.spec                 |  20 +++-
 test/segments/detect_virt.spec            |  12 +++
 test/segments/dir.spec                    | 160 ++++++++++++++++++++++++++++--
 test/segments/disk_usage.spec             |  23 ++++-
 test/segments/go_version.spec             |  14 ++-
 test/segments/ip.spec                     |  56 +++++++----
 test/segments/kubecontext.spec            |  11 +-
 test/segments/laravel_version.spec        |  11 +-
 test/segments/load.spec                   |  28 ++++--
 test/segments/node_version.spec           |   9 +-
 test/segments/nodeenv.spec                |  17 +++-
 test/segments/nvm.spec                    |  11 +-
 test/segments/php_version.spec            |   8 +-
 test/segments/public_ip.spec              |  29 +++++-
 test/segments/ram.spec                    |  17 +++-
 test/segments/rust_version.spec           |   8 +-
 test/segments/ssh.spec                    |  18 ++--
 test/segments/status.spec                 |  24 ++++-
 test/segments/swap.spec                   |  12 ++-
 test/segments/swift_version.spec          |   7 +-
 test/segments/symfony_version.spec        |  17 +++-
 test/segments/todo.spec                   |   8 +-
 test/segments/vcs-git.spec                |  60 ++++++++++-
 test/segments/vcs-hg.spec                 |  32 +++++-
 test/segments/vi_mode.spec                |  14 ++-
 31 files changed, 641 insertions(+), 113 deletions(-)

(limited to 'test/segments')

diff --git a/test/segments/anaconda.spec b/test/segments/anaconda.spec
index da87c096..2aa8d272 100755
--- a/test/segments/anaconda.spec
+++ b/test/segments/anaconda.spec
@@ -7,14 +7,16 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 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
@@ -23,34 +25,45 @@ function testAnacondaSegmentPrintsNothingIfNoAnacondaPathIsSet() {
 }
 
 function testAnacondaSegmentWorksIfOnlyAnacondaPathIsSet() {
-    CONDA_ENV_PATH=/tmp
-    unset CONDA_PREFIX
     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{blue} %F{black%}icon-here %f%F{black}(tmp) %k%F{blue}%f " "$(build_left_prompt)"
 }
 
 function testAnacondaSegmentWorksIfOnlyAnacondaPrefixIsSet() {
-    unset CONDA_ENV_PATH
-    local CONDA_PREFIX="test"
     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{blue} %F{black%}icon-here %f%F{black}(test) %k%F{blue}%f " "$(build_left_prompt)"
 }
 
 function testAnacondaSegmentWorks() {
-    local CONDA_ENV_PATH=/tmp
-    local CONDA_PREFIX="test"
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
     local POWERLEVEL9K_PYTHON_ICON="icon-here"
 
-    assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(tmptest) %k%F{blue}%f " "$(build_left_prompt)"
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
 
+    local CONDA_ENV_PATH=/tmp
+    local CONDA_PREFIX="test"
+
+    assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(tmptest) %k%F{blue}%f " "$(build_left_prompt)"
 }
 
 source shunit2/source/2.1/src/shunit2
\ No newline at end of file
diff --git a/test/segments/aws_eb_env.spec b/test/segments/aws_eb_env.spec
index 56042027..42740ea6 100755
--- a/test/segments/aws_eb_env.spec
+++ b/test/segments/aws_eb_env.spec
@@ -7,24 +7,30 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function testAwsEbEnvSegmentPrintsNothingIfNoElasticBeanstalkEnvironmentIsSet() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
-    local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env custom_world)
+    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
+    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env custom_world)
+
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
 
     assertEquals "%K{white} %F{black}world %k%F{white}%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
 
-    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
-
     assertEquals "%K{black} %F{green%}🌱  %f%F{green}test %k%F{black}%f " "$(build_left_prompt)"
 
     rm -fr /tmp/powerlevel9k-test
@@ -35,14 +41,17 @@ function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSetInParentDirec
     # 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
 
-    local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
-    POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
-
     assertEquals "%K{black} %F{green%}🌱  %f%F{green}test %k%F{black}%f " "$(build_left_prompt)"
 
     rm -fr /tmp/powerlevel9k-test
diff --git a/test/segments/background_jobs.spec b/test/segments/background_jobs.spec
index 5a000b66..c38f2d17 100755
--- a/test/segments/background_jobs.spec
+++ b/test/segments/background_jobs.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function testBackgroundJobsSegmentPrintsNothingWithoutBackgroundJobs() {
@@ -17,6 +15,9 @@ function testBackgroundJobsSegmentPrintsNothingWithoutBackgroundJobs() {
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs custom_world)
     alias jobs="nojobs 2>/dev/null"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
     unalias jobs
@@ -30,6 +31,9 @@ function testBackgroundJobsSegmentWorksWithOneBackgroundJob() {
         echo '[1]  + 30444 suspended  nvim xx'
     }
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{cyan%}⚙%f %k%F{black}%f " "$(build_left_prompt)"
 
     unfunction jobs
@@ -45,6 +49,9 @@ function testBackgroundJobsSegmentWorksWithMultipleBackgroundJobs() {
         echo "[3]  + 31206 suspended  nvim xx3"
     }
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{cyan%}⚙%f %k%F{black}%f " "$(build_left_prompt)"
 
     unfunction jobs
@@ -60,6 +67,9 @@ function testBackgroundJobsSegmentWithVerboseMode() {
         echo "[3]  + 31206 suspended  nvim xx3"
     }
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{cyan%}⚙ %f%F{cyan}3 %k%F{black}%f " "$(build_left_prompt)"
 
     unfunction jobs
diff --git a/test/segments/battery.spec b/test/segments/battery.spec
index e49c3b34..835e1468 100755
--- a/test/segments/battery.spec
+++ b/test/segments/battery.spec
@@ -37,6 +37,7 @@ function tearDown() {
   unset PMSET_PATH
   unset BATTERY_PATH
   unset FOLDER
+  unset P9K_HOME
 }
 
 # Mock Battery
diff --git a/test/segments/command_execution_time.spec b/test/segments/command_execution_time.spec
index 7700aaa1..65623a00 100755
--- a/test/segments/command_execution_time.spec
+++ b/test/segments/command_execution_time.spec
@@ -7,14 +7,17 @@ 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)
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
+
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
+  # Override payload
   local _P9K_COMMAND_DURATION=2
 
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
@@ -24,6 +27,11 @@ function testCommandExecutionTimeThresholdCouldBeChanged() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
   local POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1
+
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
+  # Override payload
   local _P9K_COMMAND_DURATION=2.03
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}2.03 %k%F{red}%f " "$(build_left_prompt)"
@@ -43,6 +51,11 @@ function testCommandExecutionTimePrecisionCouldBeChanged() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
   local POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
   local POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4
+
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
+  # Override payload
   local _P9K_COMMAND_DURATION=0.0001
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}0.0001 %k%F{red}%f " "$(build_left_prompt)"
@@ -52,6 +65,11 @@ function testCommandExecutionTimePrecisionCouldBeSetToZero() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
   local POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
+
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
+  # Override payload
   local _P9K_COMMAND_DURATION=23.5001
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}23 %k%F{red}%f " "$(build_left_prompt)"
@@ -60,6 +78,11 @@ function testCommandExecutionTimePrecisionCouldBeSetToZero() {
 function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
+
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
+  # Override payload
   local _P9K_COMMAND_DURATION=180
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}03:00 %k%F{red}%f " "$(build_left_prompt)"
@@ -68,6 +91,11 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand()
 function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
+
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
+  # Override payload
   local _P9K_COMMAND_DURATION=7200
 
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}02:00:00 %k%F{red}%f " "$(build_left_prompt)"
diff --git a/test/segments/context.spec b/test/segments/context.spec
index 702280df..b350caf7 100755
--- a/test/segments/context.spec
+++ b/test/segments/context.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   # Test specific settings
   OLD_DEFAULT_USER=$DEFAULT_USER
@@ -26,6 +24,9 @@ function testContextSegmentDoesNotGetRenderedWithDefaultUser() {
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context custom_world)
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -34,6 +35,9 @@ function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
 }
 
@@ -41,14 +45,20 @@ function testContextSegmentWithForeignUser() {
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
 }
 
 # TODO: How to test root?
 function testContextSegmentWithRootUser() {
+    startSkipping # Skip test
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
-    startSkipping # Skip test
+
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
 
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
 }
@@ -58,6 +68,9 @@ function testOverridingContextTemplate() {
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
     local POWERLEVEL9K_CONTEXT_TEMPLATE=xx
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{yellow}xx %k%F{black}%f " "$(build_left_prompt)"
 }
 
@@ -67,6 +80,9 @@ function testContextSegmentIsShownIfDefaultUserIsSetWhenForced() {
     local POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
     local DEFAULT_USER=$(whoami)
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
 }
 
@@ -76,6 +92,9 @@ function testContextSegmentIsShownIfForced() {
     local POWERLEVEL9K_ALWAYS_SHOW_USER=true
     local DEFAULT_USER=$(whoami)
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{yellow}$(whoami) %k%F{black}%f " "$(build_left_prompt)"
 }
 
diff --git a/test/segments/custom.spec b/test/segments/custom.spec
index 261e2508..b7719d1c 100755
--- a/test/segments/custom.spec
+++ b/test/segments/custom.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function testCustomDirectOutputSegment() {
@@ -16,6 +14,9 @@ function testCustomDirectOutputSegment() {
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD="echo world"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -26,6 +27,9 @@ function testCustomClosureSegment() {
         echo "world"
     }
     local POWERLEVEL9K_CUSTOM_WORLD='p9k_hello_world'
+    
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
 
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
@@ -36,6 +40,9 @@ function testSettingBackgroundForCustomSegment() {
     local POWERLEVEL9K_CUSTOM_WORLD="echo world"
     local POWERLEVEL9K_CUSTOM_WORLD_BACKGROUND="yellow"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{yellow} %F{black}world %k%F{yellow}%f " "$(build_left_prompt)"
 }
 
@@ -45,6 +52,9 @@ function testSettingForegroundForCustomSegment() {
     local POWERLEVEL9K_CUSTOM_WORLD="echo world"
     local POWERLEVEL9K_CUSTOM_WORLD_FOREGROUND="red"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{red}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -54,6 +64,9 @@ function testSettingVisualIdentifierForCustomSegment() {
     local POWERLEVEL9K_CUSTOM_WORLD="echo world"
     local POWERLEVEL9K_CUSTOM_WORLD_ICON="hw"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black%}hw %f%F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -64,6 +77,9 @@ function testSettingVisualIdentifierForegroundColorForCustomSegment() {
     local POWERLEVEL9K_CUSTOM_WORLD_ICON="hw"
     local POWERLEVEL9K_CUSTOM_WORLD_VISUAL_IDENTIFIER_COLOR="red"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{red%}hw %f%F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
diff --git a/test/segments/detect_virt.spec b/test/segments/detect_virt.spec
index 2dad6af0..7df92a24 100755
--- a/test/segments/detect_virt.spec
+++ b/test/segments/detect_virt.spec
@@ -17,6 +17,9 @@ function testDetectVirtSegmentPrintsNothingIfSystemdIsNotAvailable() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     alias systemd-detect-virt="novirt"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
     unalias systemd-detect-virt
@@ -27,6 +30,9 @@ function testDetectVirtSegmentIfSystemdReturnsPlainName() {
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
     alias systemd-detect-virt="echo 'xxx'"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{yellow}xxx %k%F{black}%f " "$(build_left_prompt)"
 
     unalias systemd-detect-virt
@@ -40,6 +46,9 @@ function testDetectVirtSegmentIfRootFsIsOnExpectedInode() {
     # 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'"
@@ -58,6 +67,9 @@ function testDetectVirtSegmentIfRootFsIsNotOnExpectedInode() {
     # 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'"
diff --git a/test/segments/dir.spec b/test/segments/dir.spec
index df80b23c..1f0440cd 100755
--- a/test/segments/dir.spec
+++ b/test/segments/dir.spec
@@ -7,8 +7,12 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
+
+  P9K_HOME="${PWD}"
+}
+
+function tearDown() {
+  unset P9K_HOME
 }
 
 function testDirPathAbsoluteWorks() {
@@ -16,6 +20,9 @@ function testDirPathAbsoluteWorks() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
   local POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   cd ~
 
   # Unfortunately, we cannot fake Linux or OSX here, because
@@ -36,6 +43,9 @@ function testTruncateFoldersWorks() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
 
+  # 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
@@ -52,6 +62,9 @@ function testTruncateFolderWithHomeDirWorks() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
   local CURRENT_DIR=$(pwd)
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   cd ~
   local FOLDER="powerlevel9k-test-${RANDOM}"
   mkdir -p $FOLDER
@@ -71,6 +84,9 @@ function testTruncateMiddleWorks() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
 
+  # 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
@@ -87,6 +103,9 @@ function testTruncationFromRightWorks() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
 
+  # 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
@@ -103,6 +122,9 @@ function testTruncateToLastWorks() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_last"
 
+  # 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
@@ -119,6 +141,9 @@ function testTruncateToFirstAndLastWorks() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_first_and_last"
 
+  # 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
@@ -135,6 +160,9 @@ function testTruncateAbsoluteWorks() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
 
+  # 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
@@ -152,6 +180,9 @@ function testTruncationFromRightWithEmptyDelimiter() {
   local POWERLEVEL9K_SHORTEN_DELIMITER=""
   local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
 
+  # 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
@@ -167,6 +198,9 @@ function testTruncateWithFolderMarkerWorks() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
   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
   mkdir -p $FOLDER
@@ -185,6 +219,9 @@ function testTruncateWithFolderMarkerWithChangedFolderMarker() {
   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
   mkdir -p $FOLDER
@@ -220,6 +257,9 @@ function testTruncateWithPackageNameWorks() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{blue} %F{black}My_Package/1/12/123/12…/12…/12…/12…/12…/123456789 %k%F{blue}%f " "$(build_left_prompt)"
 
   # Go back
@@ -257,6 +297,9 @@ function testTruncateWithPackageNameIfRepoIsSymlinkedInsideDeepFolder() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{blue} %F{black}My_Package/as…/qwerqwer %k%F{blue}%f " "$(build_left_prompt)"
 
   # Go back
@@ -290,6 +333,9 @@ function testTruncateWithPackageNameIfRepoIsSymlinkedInsideGitDir() {
   local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{blue} %F{black}My_Package/.g…/re…/heads %k%F{blue}%f " "$(build_left_prompt)"
 
   # Go back
@@ -302,6 +348,9 @@ function testHomeFolderDetectionWorks() {
   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)"
 
@@ -313,6 +362,9 @@ function testHomeSubfolderDetectionWorks() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
   local POWERLEVEL9K_HOME_SUB_ICON='sub-icon'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   local FOLDER=~/powerlevel9k-test
   mkdir $FOLDER
   cd $FOLDER
@@ -327,6 +379,9 @@ function testOtherFolderDetectionWorks() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
   local POWERLEVEL9K_FOLDER_ICON='folder-icon'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   local FOLDER=/tmp/powerlevel9k-test
   mkdir $FOLDER
   cd $FOLDER
@@ -340,6 +395,10 @@ function testChangingDirPathSeparator() {
   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
@@ -353,25 +412,40 @@ function testChangingDirPathSeparator() {
 function testHomeFolderAbbreviation() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
-  local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION
   local dir=$PWD
 
   cd ~/
   # default
-  POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
+  local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
+  
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{blue} %F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
 
   # substituted
-  POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
+  local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
+
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{blue} %F{black}qQq %k%F{blue}%f " "$(build_left_prompt)"
 
   cd /tmp
   # default
-  POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
+  local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
+
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{blue} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
 
   # substituted
-  POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
+  local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
+
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{blue} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
 
   cd "$dir"
@@ -382,6 +456,10 @@ function testOmittingFirstCharacterWorks() {
   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)"
@@ -395,6 +473,10 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparator() {
   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
 
@@ -418,6 +500,10 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndDefaultTrunc
   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
 
@@ -434,6 +520,10 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndMiddleTrunca
   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
 
@@ -450,6 +540,10 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndRightTruncat
   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
 
@@ -466,6 +560,10 @@ function testTruncateToUniqueWorks() {
   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
@@ -482,6 +580,10 @@ function testBoldHomeDirWorks() {
   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)"
@@ -493,6 +595,10 @@ function testBoldHomeSubdirWorks() {
   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
 
@@ -506,6 +612,10 @@ function testBoldRootDirWorks() {
   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)"
@@ -517,6 +627,10 @@ function testBoldRootSubdirWorks() {
   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)"
@@ -528,6 +642,10 @@ function testBoldRootSubSubdirWorks() {
   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
 
@@ -541,6 +659,10 @@ function testHighlightHomeWorks() {
   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)"
@@ -552,6 +674,10 @@ function testHighlightHomeSubdirWorks() {
   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
 
@@ -565,6 +691,10 @@ function testHighlightRootWorks() {
   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)"
@@ -576,6 +706,10 @@ function testHighlightRootSubdirWorks() {
   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)"
@@ -587,6 +721,10 @@ function testHighlightRootSubSubdirWorks() {
   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
 
@@ -600,6 +738,10 @@ function testDirSeparatorColorHomeSubdirWorks() {
   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
 
@@ -613,6 +755,10 @@ function testDirSeparatorColorRootSubSubdirWorks() {
   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
 
diff --git a/test/segments/disk_usage.spec b/test/segments/disk_usage.spec
index f6172c9f..ece19bb5 100755
--- a/test/segments/disk_usage.spec
+++ b/test/segments/disk_usage.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   # Test specific
   P9K_HOME=$(pwd)
@@ -39,6 +37,9 @@ function testDiskUsageSegmentWhenDiskIsAlmostFull() {
 /dev/disk1     487219288 471466944  15496344  97% /"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{red} %F{white%}hdd  %f%F{white}97%% %k%F{red}%f " "$(build_left_prompt)"
 
   unfunction df
@@ -52,6 +53,9 @@ function testDiskUsageSegmentWhenDiskIsVeryFull() {
 /dev/disk1     487219288 471466944  15496344  94% /"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{yellow} %F{black%}hdd  %f%F{black}94%% %k%F{yellow}%f " "$(build_left_prompt)"
 
   unfunction df
@@ -65,6 +69,9 @@ function testDiskUsageSegmentWhenDiskIsQuiteEmpty() {
 /dev/disk1     487219288 471466944  15496344  4% /"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{yellow%}hdd  %f%F{yellow}4%% %k%F{black}%f " "$(build_left_prompt)"
 
   unfunction df
@@ -89,11 +96,14 @@ function testDiskUsageSegmentPrintsNothingIfDiskIsQuiteEmptyAndOnlyWarningsShoul
 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% /"
   }
-  local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=10
+
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
 
   assertEquals "%K{yellow} %F{black%}hdd  %f%F{black}11%% %k%F{yellow}%f " "$(build_left_prompt)"
 
@@ -103,12 +113,15 @@ function testDiskUsageSegmentWarningLevelCouldBeAdjusted() {
 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% /"
   }
-  local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=5
-  local POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=10
+
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
 
   assertEquals "%K{red} %F{white%}hdd  %f%F{white}11%% %k%F{red}%f " "$(build_left_prompt)"
 
diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec
index 1be2e8c8..6d8f13b9 100755
--- a/test/segments/go_version.spec
+++ b/test/segments/go_version.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function mockGo() {
@@ -39,6 +37,9 @@ function testGo() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(go_version)
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   local PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
 
   assertEquals "%K{green} %F{grey93%} %f%F{255}go1.5.3 %k%F{green}%f " "$(build_left_prompt)"
@@ -52,6 +53,9 @@ function testGoSegmentPrintsNothingIfEmptyGopath() {
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
   alias go=mockGoEmptyGopath
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -61,6 +65,9 @@ function testGoSegmentPrintsNothingIfNotInGopath() {
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
   alias go=mockGo
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -70,6 +77,9 @@ function testGoSegmentPrintsNothingIfGoIsNotAvailable() {
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
   alias go=noGo
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
   unalias go
diff --git a/test/segments/ip.spec b/test/segments/ip.spec
index 0d07b6ee..190953ad 100755
--- a/test/segments/ip.spec
+++ b/test/segments/ip.spec
@@ -7,17 +7,18 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function testIpSegmentPrintsNothingOnOsxIfNotConnected() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
   alias networksetup='echo "not connected"'
-  local OS="OSX" # Fake OSX
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+  local OS="OSX" # Fake OSX
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
   unalias networksetup
@@ -27,9 +28,12 @@ function testIpSegmentPrintsNothingOnLinuxIfNotConnected() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
   alias ip='echo "not connected"'
-  local OS="Linux" # Fake Linux
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+  local OS="Linux" # Fake Linux
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
   unalias ip
@@ -38,7 +42,6 @@ function testIpSegmentPrintsNothingOnLinuxIfNotConnected() {
 function testIpSegmentWorksOnOsxWithNoInterfaceSpecified() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
-  local OS='OSX' # Fake OSX
   alias networksetup="echo 'An asterisk (*) denotes that a network service is disabled.
 (1) Ethernet
 (Hardware Port: Ethernet, Device: en0)
@@ -61,6 +64,10 @@ function testIpSegmentWorksOnOsxWithNoInterfaceSpecified() {
 
   alias ipconfig="_(){ echo '1.2.3.4'; };_"
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+  local OS='OSX' # Fake OSX
+
   assertEquals "%K{cyan} %F{black%}IP %f%F{black}1.2.3.4 %k%F{cyan}%f " "$(build_left_prompt)"
 
   unalias ipconfig
@@ -74,7 +81,6 @@ function testIpSegmentWorksOnOsxWithNoInterfaceSpecified() {
 function testIpSegmentWorksOnOsxWithMultipleInterfacesSpecified() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
-  local OS='OSX' # Fake OSX
   alias networksetup="echo 'An asterisk (*) denotes that a network service is disabled.
 (1) Ethernet
 (Hardware Port: Ethernet, Device: en0)
@@ -113,6 +119,10 @@ function testIpSegmentWorksOnOsxWithMultipleInterfacesSpecified() {
       }
   }
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+  local OS='OSX' # Fake OSX
+
   assertEquals "%K{cyan} %F{black%}IP %f%F{black}1.2.3.4 %k%F{cyan}%f " "$(build_left_prompt)"
 
   unfunction ipconfig
@@ -122,10 +132,13 @@ function testIpSegmentWorksOnOsxWithMultipleInterfacesSpecified() {
 function testIpSegmentWorksOnOsxWithInterfaceSpecified() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
-  local OS='OSX' # Fake OSX
   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{cyan} %F{black%}IP %f%F{black}1.2.3.4 %k%F{cyan}%f " "$(build_left_prompt)"
 
   unalias ipconfig
@@ -134,7 +147,6 @@ function testIpSegmentWorksOnOsxWithInterfaceSpecified() {
 function testIpSegmentWorksOnLinuxWithNoInterfaceSpecified() {
     setopt aliases
     local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
-    local OS='Linux' # Fake Linux
     # 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..
@@ -151,18 +163,21 @@ function testIpSegmentWorksOnLinuxWithNoInterfaceSpecified() {
     inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
        valid_lft forever preferred_lft forever';
       fi
-   }
+    }
 
-  assertEquals "%K{cyan} %F{black%}IP %f%F{black}10.0.2.15 %k%F{cyan}%f " "$(build_left_prompt)"
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+    local OS='Linux' # Fake Linux
 
-  unfunction ip
+    assertEquals "%K{cyan} %F{black%}IP %f%F{black}10.0.2.15 %k%F{cyan}%f " "$(build_left_prompt)"
+
+    unfunction ip
 }
 
 function testIpSegmentWorksOnLinuxWithMultipleInterfacesSpecified() {
     setopt aliases
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
-    local OS='Linux' # Fake Linux
     # 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..
@@ -183,23 +198,30 @@ function testIpSegmentWorksOnLinuxWithMultipleInterfacesSpecified() {
     inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
        valid_lft forever preferred_lft forever';
       fi
-   }
+    }
 
-  assertEquals "%K{cyan} %F{black%}IP %f%F{black}10.0.2.15 %k%F{cyan}%f " "$(build_left_prompt)"
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+    local OS='Linux' # Fake Linux
 
-  unfunction ip
+    assertEquals "%K{cyan} %F{black%}IP %f%F{black}10.0.2.15 %k%F{cyan}%f " "$(build_left_prompt)"
+
+    unfunction ip
 }
 
 function testIpSegmentWorksOnLinuxWithInterfaceSpecified() {
   local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
-  local OS='Linux' # Fake Linux
   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{cyan} %F{black%}IP %f%F{black}10.0.2.15 %k%F{cyan}%f " "$(build_left_prompt)"
 
diff --git a/test/segments/kubecontext.spec b/test/segments/kubecontext.spec
index 46fe8724..746ab806 100755
--- a/test/segments/kubecontext.spec
+++ b/test/segments/kubecontext.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function mockKubectl() {
@@ -70,6 +68,9 @@ function testKubeContext() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
   alias kubectl=mockKubectl
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{magenta} %F{white%}⎈ %f%F{white}minikube/default %k%F{magenta}%f " "$(build_left_prompt)"
 
   unalias kubectl
@@ -79,6 +80,9 @@ function testKubeContextOtherNamespace() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
   alias kubectl=mockKubectlOtherNamespace
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{magenta} %F{white%}⎈ %f%F{white}minikube/kube-system %k%F{magenta}%f " "$(build_left_prompt)"
 
   unalias kubectl
@@ -89,6 +93,9 @@ function testKubeContextPrintsNothingIfKubectlNotAvailable() {
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
   alias kubectl=noKubectl
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
   unalias kubectl
diff --git a/test/segments/laravel_version.spec b/test/segments/laravel_version.spec
index 9d3de2d4..f4fd704d 100755
--- a/test/segments/laravel_version.spec
+++ b/test/segments/laravel_version.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function mockLaravelVersion() {
@@ -32,6 +30,9 @@ function testLaravelVersionSegment() {
   local POWERLEVEL9K_LARAVEL_ICON='x'
   alias php=mockLaravelVersion
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{001} %F{white%}x %f%F{white}5.4.23 %k%F{maroon}%f " "$(build_left_prompt)"
 
   unalias php
@@ -44,6 +45,9 @@ function testLaravelVersionSegmentIfArtisanIsNotAvailable() {
   local POWERLEVEL9K_LARAVEL_ICON='x'
   alias php=mockNoLaravelVersion
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
   unalias php
@@ -56,6 +60,9 @@ function testLaravelVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
   local POWERLEVEL9K_LARAVEL_ICON='x'
   alias php=noPhp
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
   unalias php
diff --git a/test/segments/load.spec b/test/segments/load.spec
index 45e28db3..f7c1b9be 100755
--- a/test/segments/load.spec
+++ b/test/segments/load.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -38,9 +36,12 @@ function testLoadSegmentWorksOnOsx() {
         fi
     }
 
-    local OS="OSX" # Fake OSX
     local POWERLEVEL9K_LOAD_WHICH=1
 
+    # Load Powerlevel9k
+    source ${P9K_HOME}/powerlevel9k.zsh-theme
+    local OS="OSX" # Fake OSX
+
     assertEquals "%K{green} %F{black%}L %f%F{black}1.38 " "$(prompt_load left 1 false ${FOLDER})"
 
     unfunction sysctl
@@ -57,8 +58,11 @@ function testLoadSegmentWorksOnBsd() {
         fi
     }
 
-    local OS="BSD" # Fake BSD
     local POWERLEVEL9K_LOAD_WHICH=1
+    
+    # Load Powerlevel9k
+    source ${P9K_HOME}/powerlevel9k.zsh-theme
+    local OS="BSD" # Fake BSD
 
     assertEquals "%K{green} %F{black%}L %f%F{black}1.38 " "$(prompt_load left 1 false ${FOLDER})"
 
@@ -71,9 +75,11 @@ function testLoadSegmentWorksOnLinux() {
     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
-    local POWERLEVEL9K_LOAD_WHICH=1
 
     assertEquals "%K{green} %F{black%}L %f%F{black}1.38 " "$(prompt_load left 1 false ${FOLDER})"
 
@@ -89,9 +95,11 @@ function testLoadSegmentNormalState() {
     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
-    local POWERLEVEL9K_LOAD_WHICH=1
 
     assertEquals "%K{green} %F{black%}L %f%F{black}1.00 " "$(prompt_load left 1 false ${FOLDER})"
 
@@ -107,9 +115,11 @@ function testLoadSegmentWarningState() {
     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
-    local POWERLEVEL9K_LOAD_WHICH=1
 
     assertEquals "%K{yellow} %F{black%}L %f%F{black}2.01 " "$(prompt_load left 1 false ${FOLDER})"
 
@@ -125,9 +135,11 @@ function testLoadSegmentCriticalState() {
     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
-    local POWERLEVEL9K_LOAD_WHICH=1
 
     assertEquals "%K{red} %F{black%}L %f%F{black}2.81 " "$(prompt_load left 1 false ${FOLDER})"
 
diff --git a/test/segments/node_version.spec b/test/segments/node_version.spec
index b516e5ff..d003f5c3 100755
--- a/test/segments/node_version.spec
+++ b/test/segments/node_version.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function testNodeVersionSegmentPrintsNothingWithoutNode() {
@@ -17,9 +15,11 @@ function testNodeVersionSegmentPrintsNothingWithoutNode() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     alias node="nonode 2>/dev/null"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
-    unset POWERLEVEL9K_CUSTOM_WORLD
     unalias node
 }
 
@@ -30,6 +30,9 @@ function testNodeVersionSegmentWorks() {
         echo "v1.2.3"
     }
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{green} %F{white%}⬢ %f%F{white}1.2.3 %k%F{green}%f " "$(build_left_prompt)"
 
     unfunction node
diff --git a/test/segments/nodeenv.spec b/test/segments/nodeenv.spec
index 511a1a19..aff22586 100755
--- a/test/segments/nodeenv.spec
+++ b/test/segments/nodeenv.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   # Test specfic
   # unset all possible user specified variables
@@ -22,6 +20,9 @@ function testNodeenvSegmentPrintsNothingWithoutNode() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     alias node="nonode 2>/dev/null"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
     unalias node
@@ -35,6 +36,9 @@ function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvIsNotSet() {
         echo "v1.2.3"
     }
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
     unfunction node
@@ -50,6 +54,9 @@ function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvDisablePromptIsSet() {
     NODE_VIRTUAL_ENV="node-env"
     NODE_VIRTUAL_ENV_DISABLE_PROMPT=true
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
     unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
@@ -63,6 +70,9 @@ function testNodeenvSegmentPrintsAtLeastNodeEnvWithoutNode() {
     alias node="nonode 2>/dev/null"
     NODE_VIRTUAL_ENV="node-env"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{green%}⬢ %f%F{green}[node-env] %k%F{black}%f " "$(build_left_prompt)"
 
     unset NODE_VIRTUAL_ENV
@@ -77,6 +87,9 @@ function testNodeenvSegmentWorks() {
     }
     NODE_VIRTUAL_ENV="node-env"
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{green%}⬢ %f%F{green}v1.2.3[node-env] %k%F{black}%f " "$(build_left_prompt)"
 
     unfunction node
diff --git a/test/segments/nvm.spec b/test/segments/nvm.spec
index f4a4812a..c8e99ea3 100755
--- a/test/segments/nvm.spec
+++ b/test/segments/nvm.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -36,6 +34,9 @@ function testNvmSegmentPrintsNothingIfNvmIsNotAvailable() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -43,6 +44,9 @@ 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'
   }
@@ -55,6 +59,9 @@ function testNvmSegmentPrintsNothingWhenOnDefaultVersion() {
   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'
   }
diff --git a/test/segments/php_version.spec b/test/segments/php_version.spec
index 51fb398f..4b9ab753 100755
--- a/test/segments/php_version.spec
+++ b/test/segments/php_version.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function testPhpVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
@@ -17,6 +15,9 @@ function testPhpVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
   alias php="nophp"
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
   unalias php
@@ -30,6 +31,9 @@ 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{fuchsia}%f " "$(build_left_prompt)"
 
   unalias php
diff --git a/test/segments/public_ip.spec b/test/segments/public_ip.spec
index 80dff215..c4b2ae88 100755
--- a/test/segments/public_ip.spec
+++ b/test/segments/public_ip.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   # Test specific
   P9K_HOME=$(pwd)
@@ -44,6 +42,9 @@ function testPublicIpSegmentPrintsNothingByDefaultIfHostIsNotAvailable() {
   # uses an alternative host.
   alias dig='nodig'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
   unalias dig
@@ -58,6 +59,9 @@ function testPublicIpSegmentPrintsNoticeIfNotConnected() {
   # uses an alternative host.
   alias dig='nodig'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}disconnected %k%F{black}%f " "$(build_left_prompt)"
 
   unalias dig
@@ -72,6 +76,9 @@ function testPublicIpSegmentWorksWithWget() {
       echo "wget 1.2.3.4"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}wget 1.2.3.4 %k%F{black}%f " "$(build_left_prompt)"
 
   unfunction wget
@@ -88,6 +95,9 @@ function testPublicIpSegmentUsesCurlAsFallbackMethodIfWgetIsNotAvailable() {
       echo "curl 1.2.3.4"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}curl 1.2.3.4 %k%F{black}%f " "$(build_left_prompt)"
 
   unfunction curl
@@ -104,6 +114,9 @@ function testPublicIpSegmentUsesDigAsFallbackMethodIfWgetAndCurlAreNotAvailable(
       echo "dig 1.2.3.4"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}dig 1.2.3.4 %k%F{black}%f " "$(build_left_prompt)"
 
   unfunction dig
@@ -118,6 +131,9 @@ function testPublicIpSegmentCachesFile() {
       echo "first"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}first %k%F{black}%f " "$(build_left_prompt)"
 
   dig() {
@@ -138,6 +154,9 @@ function testPublicIpSegmentRefreshesCachesFileAfterTimeout() {
       echo "first"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}first %k%F{black}%f " "$(build_left_prompt)"
 
   sleep 3
@@ -158,6 +177,9 @@ function testPublicIpSegmentRefreshesCachesFileIfEmpty() {
       echo "first"
   }
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}first %k%F{black}%f " "$(build_left_prompt)"
 
   # Truncate cache file
@@ -180,6 +202,9 @@ function testPublicIpSegmentWhenGoingOnline() {
   local POWERLEVEL9K_PUBLIC_IP_NONE="disconnected"
   alias dig="nodig"
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}disconnected %k%F{black}%f " "$(build_left_prompt)"
 
   unalias dig
diff --git a/test/segments/ram.spec b/test/segments/ram.spec
index 0deaacf9..dc0b6c6b 100755
--- a/test/segments/ram.spec
+++ b/test/segments/ram.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -28,31 +26,40 @@ function tearDown() {
 }
 
 function testRamSegmentWorksOnOsx() {
-    local OS="OSX" # Fake OSX
     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{yellow} %F{black%}RAM %f%F{black}6.15G " "$(prompt_ram left 1 false ${FOLDER})"
 
     unalias vm_stat
 }
 
 function testRamSegmentWorksOnBsd() {
-    local OS="BSD" # Fake BSD
     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{yellow} %F{black%}RAM %f%F{black}0.29M " "$(prompt_ram left 1 false ${FOLDER})"
 }
 
 function testRamSegmentWorksOnLinux() {
-    local OS="Linux" # Fake Linux
     mkdir proc
     echo "MemAvailable: 299687" > proc/meminfo
 
+    # Load Powerlevel9k
+    source ${P9K_HOME}/powerlevel9k.zsh-theme
+    local OS="Linux" # Fake Linux
+
     assertEquals "%K{yellow} %F{black%}RAM %f%F{black}0.29G " "$(prompt_ram left 1 false ${FOLDER})"
 }
 
diff --git a/test/segments/rust_version.spec b/test/segments/rust_version.spec
index 3d627498..583807a6 100755
--- a/test/segments/rust_version.spec
+++ b/test/segments/rust_version.spec
@@ -14,8 +14,6 @@ function setUp() {
   PATH="${RUST_TEST_FOLDER}:${PATH}"
 
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function tearDown() {
@@ -33,6 +31,9 @@ function testRust() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version)
   mockRust
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{208} %F{black%}Rust %f%F{black}0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)"
 }
 
@@ -41,6 +42,9 @@ function testRustPrintsNothingIfRustIsNotAvailable() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world rust_version)
   local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
diff --git a/test/segments/ssh.spec b/test/segments/ssh.spec
index a5360072..a6701dcf 100755
--- a/test/segments/ssh.spec
+++ b/test/segments/ssh.spec
@@ -7,12 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
-}
-
-function mockRust() {
-  echo 'rustc  0.4.1a-alpha'
 }
 
 function testSshSegmentPrintsNothingIfNoSshConnection() {
@@ -25,6 +19,9 @@ function testSshSegmentPrintsNothingIfNoSshConnection() {
   unset SSH_CLIENT
   unset SSH_TTY
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -37,6 +34,9 @@ function testSshSegmentWorksIfOnlySshClientIsSet() {
   SSH_CLIENT='ssh-client'
   unset SSH_TTY
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{yellow%}ssh-icon%f %k%F{black}%f " "$(build_left_prompt)"
 
   unset SSH_CLIENT
@@ -51,6 +51,9 @@ function testSshSegmentWorksIfOnlySshTtyIsSet() {
   SSH_TTY='ssh-tty'
   unset SSH_CLIENT
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{yellow%}ssh-icon%f %k%F{black}%f " "$(build_left_prompt)"
 
   unset SSH_TTY
@@ -65,6 +68,9 @@ function testSshSegmentWorksIfAllNecessaryVariablesAreSet() {
   SSH_CLIENT='ssh-client'
   SSH_TTY='ssh-tty'
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{yellow%}ssh-icon%f %k%F{black}%f " "$(build_left_prompt)"
 
   unset SSH_TTY
diff --git a/test/segments/status.spec b/test/segments/status.spec
index d921111b..b3ba3e36 100755
--- a/test/segments/status.spec
+++ b/test/segments/status.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   ### Test specific
   # Resets if someone has set these in his/hers env
@@ -23,6 +21,9 @@ function testStatusPrintsNothingIfReturnCodeIsZeroAndVerboseIsUnset() {
     local POWERLEVEL9K_STATUS_VERBOSE=false
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -33,6 +34,9 @@ function testStatusWorksAsExpectedIfReturnCodeIsZeroAndVerboseIsSet() {
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
     local POWERLEVEL9K_STATUS_HIDE_SIGNAME=true
 
+    # Load Powerlevel9k
+    source powerlevel9k.zsh-theme
+
     assertEquals "%K{black} %F{green%}✔%f %k%F{black}%f " "$(build_left_prompt)"
 }
 
@@ -41,6 +45,9 @@ function testStatusInGeneralErrorCase() {
     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{red} %F{yellow1%}↵ %f%F{yellow1}1 %k%F{red}%f " "$(build_left_prompt)"
@@ -51,6 +58,9 @@ function testPipestatusInErrorCase() {
     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)
 
@@ -63,6 +73,9 @@ function testStatusCrossWinsOverVerbose() {
     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{black} %F{red%}✘%f %k%F{black}%f " "$(build_left_prompt)"
@@ -74,6 +87,9 @@ function testStatusShowsSignalNameInErrorCase() {
     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{red} %F{yellow1%}↵ %f%F{yellow1}SIGILL(4) %k%F{red}%f " "$(build_left_prompt)"
@@ -84,6 +100,10 @@ function testStatusSegmentIntegrated() {
     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
 
diff --git a/test/segments/swap.spec b/test/segments/swap.spec
index 58f35c0a..20a2d40a 100755
--- a/test/segments/swap.spec
+++ b/test/segments/swap.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -30,11 +28,14 @@ function tearDown() {
 function testSwapSegmentWorksOnOsx() {
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
-    local OS="OSX" # Fake OSX
     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{yellow} %F{black%}SWP %f%F{black}1.58G " "$(prompt_swap left 1 false ${FOLDER})"
 
     unfunction sysctl
@@ -43,11 +44,14 @@ function testSwapSegmentWorksOnOsx() {
 function testSwapSegmentWorksOnLinux() {
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
-    local OS="Linux" # Fake Linux
     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{yellow} %F{black%}SWP %f%F{black}0.95G " "$(prompt_swap left 1 false ${FOLDER})"
 }
 
diff --git a/test/segments/swift_version.spec b/test/segments/swift_version.spec
index 5634de11..da9aaa92 100755
--- a/test/segments/swift_version.spec
+++ b/test/segments/swift_version.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -33,6 +31,8 @@ function testSwiftSegmentPrintsNothingIfSwiftIsNotAvailable() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     alias swift="noswift"
 
+    # Load Powerlevel9k
+    source ${P9K_HOME}/powerlevel9k.zsh-theme
 
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
@@ -46,6 +46,9 @@ function testSwiftSegmentWorks() {
         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{magenta} %F{white%}Swift %f%F{white}3.0.1 %k%F{magenta}%f " "$(build_left_prompt)"
 
     unfunction swift
diff --git a/test/segments/symfony_version.spec b/test/segments/symfony_version.spec
index 65d193b0..99dea476 100755
--- a/test/segments/symfony_version.spec
+++ b/test/segments/symfony_version.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -33,6 +31,9 @@ function testSymfonyVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
     alias php="nophp"
 
+    # Load Powerlevel9k
+    source ${P9K_HOME}/powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
     unalias php
@@ -46,6 +47,9 @@ function testSymfonyVersionSegmentPrintsNothingIfSymfonyIsNotAvailable() {
     # 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{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -61,6 +65,9 @@ function testSymfonyVersionPrintsNothingIfPhpThrowsAnError() {
         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{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 
     unfunction php
@@ -77,6 +84,9 @@ function testSymfonyVersionSegmentWorks() {
         echo "Symfony version 3.1.4 - app/dev/debug"
     }
 
+    # Load Powerlevel9k
+    source ${P9K_HOME}/powerlevel9k.zsh-theme
+
     assertEquals "%K{240} %F{black%}SF %f%F{black}3.1.4 %k%F{240}%f " "$(build_left_prompt)"
 
     unfunction php
@@ -96,6 +106,9 @@ function testSymfonyVersionSegmentWorksInNestedFolder() {
     mkdir -p src/P9K/AppBundle
     cd src/P9K/AppBundle
 
+    # Load Powerlevel9k
+    source ${P9K_HOME}/powerlevel9k.zsh-theme
+
     assertEquals "%K{240} %F{black%}SF %f%F{black}3.1.4 %k%F{240}%f " "$(build_left_prompt)"
 
     unfunction php
diff --git a/test/segments/todo.spec b/test/segments/todo.spec
index 1dae9a68..7f1d7fba 100755
--- a/test/segments/todo.spec
+++ b/test/segments/todo.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -37,6 +35,9 @@ function testTodoSegmentPrintsNothingIfTodoShIsNotInstalled() {
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo custom_world)
     local POWERLEVEL9K_CUSTOM_WORLD='echo world'
 
+    # Load Powerlevel9k
+    source ${P9K_HOME}/powerlevel9k.zsh-theme
+
     assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -48,6 +49,9 @@ function testTodoSegmentWorksAsExpected() {
     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{black%}☑ %f%F{black}100 %k%F{grey50}%f " "$(build_left_prompt)"
 }
 
diff --git a/test/segments/vcs-git.spec b/test/segments/vcs-git.spec
index 3ae4077e..f78012dd 100755
--- a/test/segments/vcs-git.spec
+++ b/test/segments/vcs-git.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -75,6 +73,9 @@ function testColorOverridingForCleanStateWorks() {
   local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
   local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{cyan} master %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -88,6 +89,9 @@ function testColorOverridingForModifiedStateWorks() {
   git add testfile
   git commit -m "test" 1>/dev/null
   echo "test" > testfile
+  
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
 
   assertEquals "%K{yellow} %F{red} master ● %k%F{yellow}%f " "$(build_left_prompt)"
 }
@@ -100,6 +104,9 @@ function testColorOverridingForUntrackedStateWorks() {
 
   touch testfile
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{yellow} %F{cyan} master ? %k%F{yellow}%f " "$(build_left_prompt)"
 }
 
@@ -107,6 +114,9 @@ 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{green} %F{black%}Git-Icon %f%F{black} master %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -119,6 +129,9 @@ function testGitlabIconWorks() {
   # 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{green} %F{black%}GL-Icon %f%F{black} master %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -131,6 +144,9 @@ function testBitbucketIconWorks() {
   # 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{green} %F{black%}BB-Icon %f%F{black} master %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -143,6 +159,9 @@ function testGitHubIconWorks() {
   # 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{green} %F{black%}GH-Icon %f%F{black} master %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -154,6 +173,9 @@ function testUntrackedFilesIconWorks() {
   # Create untracked file
   touch "i-am-untracked.txt"
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black} master ? %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -169,7 +191,10 @@ function testStagedFilesIconWorks() {
   echo "xx" >> i-am-added.txt
   git add i-am-added.txt &>/dev/null
 
-  assertEquals "%K{yellow} %F{black} master ✚ %k%F{yellow}%f " "$(build_left_prompt)"
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
+  assertEquals "%K{yellow} %F{black} master + %k%F{yellow}%f " "$(build_left_prompt)"
 }
 
 function testUnstagedFilesIconWorks() {
@@ -183,7 +208,10 @@ function testUnstagedFilesIconWorks() {
   git commit -m "Add File" 1>/dev/null
   echo "xx" > i-am-modified.txt
 
-  assertEquals "%K{yellow} %F{black} master ● %k%F{yellow}%f " "$(build_left_prompt)"
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
+  assertEquals "%K{yellow} %F{black} master M %k%F{yellow}%f " "$(build_left_prompt)"
 }
 
 function testStashIconWorks() {
@@ -198,6 +226,9 @@ function testStashIconWorks() {
   echo "xx" > i-am-modified.txt
   git stash 1>/dev/null
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black} master S1 %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -211,6 +242,9 @@ function testTagIconWorks() {
   git commit -m "Add File" 1>/dev/null
   git tag "v0.0.1"
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black} master Tv0.0.1 %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -229,6 +263,9 @@ function testTagIconInDetachedHeadState() {
   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{green} %F{black} ${hash} Tv0.0.1 %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -249,6 +286,9 @@ function testActionHintWorks() {
   git commit -a -m "Provoke conflict" &>/dev/null
   git pull &>/dev/null
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{yellow} %F{black} master %F{red}| merge%f %k%F{yellow}%f " "$(build_left_prompt)"
 }
 
@@ -268,6 +308,9 @@ function testIncomingHintWorks() {
   cd ../vcs-test2
   git fetch &>/dev/null
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black} master I1 %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -287,6 +330,9 @@ function testOutgoingHintWorks() {
   echo "xx" >> i-am-modified.txt
   git commit -a -m "Modified file" &>/dev/null
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black} master o1 %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -301,6 +347,9 @@ function testShorteningCommitHashWorks() {
   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
@@ -317,6 +366,9 @@ function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
   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
diff --git a/test/segments/vcs-hg.spec b/test/segments/vcs-hg.spec
index 91d25ae6..3074952a 100755
--- a/test/segments/vcs-hg.spec
+++ b/test/segments/vcs-hg.spec
@@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 
   P9K_HOME=$(pwd)
   ### Test specific
@@ -39,6 +37,9 @@ function testColorOverridingForCleanStateWorks() {
   local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
   local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{white} %F{cyan} default %k%F{white}%f " "$(build_left_prompt)"
 }
 
@@ -53,6 +54,9 @@ function testColorOverridingForModifiedStateWorks() {
   hg commit -m "test" 1>/dev/null
   echo "test" > testfile
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{yellow} %F{red} default ● %k%F{yellow}%f " "$(build_left_prompt)"
 }
 
@@ -67,6 +71,9 @@ function testAddedFilesIconWorks() {
   touch "myfile.txt"
   hg add myfile.txt
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{yellow} %F{black} default ● %k%F{yellow}%f " "$(build_left_prompt)"
 }
 
@@ -82,6 +89,9 @@ function testTagIconWorks() {
   hg commit -m "Add File" 1>/dev/null
   hg tag "v0.0.1"
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black} default Tv0.0.1 %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -101,6 +111,9 @@ function testTagIconInDetachedHeadState() {
   hg checkout v0.0.1 &>/dev/null
   local hash=$(hg id)
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black} ${hash} Tv0.0.1 %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -121,6 +134,9 @@ function testActionHintWorks() {
   hg pull 1>/dev/null
   hg merge --tool internal:merge >/dev/null 2>&1
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{yellow} %F{black} default %F{red}| merging%f %k%F{yellow}%f " "$(build_left_prompt)"
 }
 
@@ -135,6 +151,9 @@ function testShorteningCommitHashWorks() {
   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
@@ -152,6 +171,9 @@ function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
   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
@@ -164,6 +186,9 @@ function testMercurialIconWorks() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
   local POWERLEVEL9K_VCS_HG_ICON='HG-Icon'
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black%}HG-Icon %f%F{black} default %k%F{green}%f " "$(build_left_prompt)"
 }
 
@@ -173,6 +198,9 @@ function testBookmarkIconWorks() {
   local POWERLEVEL9K_VCS_BOOKMARK_ICON='B'
   hg bookmark "initial"
 
+  # Load Powerlevel9k
+  source ${P9K_HOME}/powerlevel9k.zsh-theme
+
   assertEquals "%K{green} %F{black} default Binitial %k%F{green}%f " "$(build_left_prompt)"
 }
 
diff --git a/test/segments/vi_mode.spec b/test/segments/vi_mode.spec
index 205c38b7..5bed38bd 100755
--- a/test/segments/vi_mode.spec
+++ b/test/segments/vi_mode.spec
@@ -7,31 +7,41 @@ SHUNIT_PARENT=$0
 
 function setUp() {
   export TERM="xterm-256color"
-  # Load Powerlevel9k
-  source powerlevel9k.zsh-theme
 }
 
 function testViInsertModeWorks() {
   local KEYMAP='viins'
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{blue}INSERT " "$(prompt_vi_mode left 1 false)"
 }
 
 function testViInsertModeWorksWhenLabeledAsMain() {
   local KEYMAP='main'
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{blue}INSERT " "$(prompt_vi_mode left 1 false)"
 }
 
 function testViCommandModeWorks() {
   local KEYMAP='vicmd'
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{white}NORMAL " "$(prompt_vi_mode left 1 false)"
 }
 
 function testViInsertModeStringIsCustomizable() {
   local KEYMAP='viins'
 
+  # Load Powerlevel9k
+  source powerlevel9k.zsh-theme
+
   assertEquals "%K{black} %F{blue}INSERT " "$(prompt_vi_mode left 1 false)"
 }
 
-- 
cgit v1.2.3


From 3b0397d1a6ce72516bb484197eceaf4498c1c2ab Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 25 Jul 2018 07:58:38 +0200
Subject: Fix test for background_jobs segment

---
 test/segments/background_jobs.spec | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'test/segments')

diff --git a/test/segments/background_jobs.spec b/test/segments/background_jobs.spec
index c38f2d17..0a61c3e1 100755
--- a/test/segments/background_jobs.spec
+++ b/test/segments/background_jobs.spec
@@ -40,7 +40,7 @@ function testBackgroundJobsSegmentWorksWithOneBackgroundJob() {
 }
 
 function testBackgroundJobsSegmentWorksWithMultipleBackgroundJobs() {
-    unset POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE
+    local POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
     jobs() {
-- 
cgit v1.2.3


From 518148383ecebe2536bf9db7c316c4e646cb5f8a Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Tue, 31 Jul 2018 00:48:12 +0200
Subject: Fix Test for context segment

This fixes an error on travis, because there is no sudo allowed. We
could allow it, but I think it is better to mock sudo anyway.
---
 test/segments/context.spec | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'test/segments')

diff --git a/test/segments/context.spec b/test/segments/context.spec
index b350caf7..2cef90dd 100755
--- a/test/segments/context.spec
+++ b/test/segments/context.spec
@@ -31,6 +31,9 @@ function testContextSegmentDoesNotGetRenderedWithDefaultUser() {
 }
 
 function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
+    function sudo() {
+        return 0
+    }
     local SSH_CLIENT="putty"
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
@@ -39,6 +42,8 @@ function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
     source powerlevel9k.zsh-theme
 
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
+
+    unfunction sudo
 }
 
 function testContextSegmentWithForeignUser() {
-- 
cgit v1.2.3


From 81fd69ae98337c20cb3e530d4efe13bec2fb3b20 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Sat, 4 Aug 2018 17:34:52 +0200
Subject: Update shunit2 to newest version

---
 shunit2                                   | 2 +-
 test/core/color_overriding.spec           | 2 +-
 test/core/joining_segments.spec           | 2 +-
 test/core/prompt.spec                     | 2 +-
 test/core/visual_identifier.spec          | 2 +-
 test/functions/colors.spec                | 2 +-
 test/functions/icons.spec                 | 2 +-
 test/functions/utilities.spec             | 2 +-
 test/powerlevel9k.spec                    | 2 +-
 test/segments/anaconda.spec               | 2 +-
 test/segments/aws_eb_env.spec             | 2 +-
 test/segments/background_jobs.spec        | 2 +-
 test/segments/battery.spec                | 2 +-
 test/segments/command_execution_time.spec | 2 +-
 test/segments/context.spec                | 2 +-
 test/segments/custom.spec                 | 2 +-
 test/segments/detect_virt.spec            | 2 +-
 test/segments/dir.spec                    | 2 +-
 test/segments/disk_usage.spec             | 2 +-
 test/segments/go_version.spec             | 2 +-
 test/segments/ip.spec                     | 2 +-
 test/segments/kubecontext.spec            | 2 +-
 test/segments/laravel_version.spec        | 2 +-
 test/segments/load.spec                   | 2 +-
 test/segments/node_version.spec           | 2 +-
 test/segments/nodeenv.spec                | 2 +-
 test/segments/nvm.spec                    | 2 +-
 test/segments/php_version.spec            | 2 +-
 test/segments/public_ip.spec              | 2 +-
 test/segments/ram.spec                    | 2 +-
 test/segments/rust_version.spec           | 2 +-
 test/segments/ssh.spec                    | 2 +-
 test/segments/status.spec                 | 2 +-
 test/segments/swap.spec                   | 2 +-
 test/segments/swift_version.spec          | 2 +-
 test/segments/symfony_version.spec        | 2 +-
 test/segments/todo.spec                   | 2 +-
 test/segments/vcs-git.spec                | 2 +-
 test/segments/vcs-hg.spec                 | 2 +-
 test/segments/vi_mode.spec                | 2 +-
 40 files changed, 40 insertions(+), 40 deletions(-)

(limited to 'test/segments')

diff --git a/shunit2 b/shunit2
index 60dd60bc..07bb3292 160000
--- a/shunit2
+++ b/shunit2
@@ -1 +1 @@
-Subproject commit 60dd60bcd1573befe38465010263ab242e55811d
+Subproject commit 07bb3292048a4982aad7247bdd7890f2bf532ece
diff --git a/test/core/color_overriding.spec b/test/core/color_overriding.spec
index ead890d7..48b30f00 100755
--- a/test/core/color_overriding.spec
+++ b/test/core/color_overriding.spec
@@ -59,4 +59,4 @@ function testColorOverridingOfCustomSegment() {
   assertEquals "%K{red} %F{green%}CW %f%F{red}world %k%F{red}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/core/joining_segments.spec b/test/core/joining_segments.spec
index 708e9bf1..f224007e 100755
--- a/test/core/joining_segments.spec
+++ b/test/core/joining_segments.spec
@@ -184,4 +184,4 @@ function testRightJoiningBuiltinSegmentWorks() {
 
   unalias php
 }
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/core/prompt.spec b/test/core/prompt.spec
index 42518f06..dd5bba58 100755
--- a/test/core/prompt.spec
+++ b/test/core/prompt.spec
@@ -101,4 +101,4 @@ function testPrefixingSecondLineOnLeftPrompt() {
     assertEquals "╭─%f%b%k%K{white} %F{black}world1 %k%F{white}%f ${nl}XXX" "${(e)PROMPT}"
 }
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/core/visual_identifier.spec b/test/core/visual_identifier.spec
index db9896db..c6b1125b 100755
--- a/test/core/visual_identifier.spec
+++ b/test/core/visual_identifier.spec
@@ -47,4 +47,4 @@ function testVisualIdentifierPrintsNothingIfNotAvailable() {
   assertEquals "%K{white} %F{black}world1 %k%F{white}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/functions/colors.spec b/test/functions/colors.spec
index 61a40087..bb06b719 100755
--- a/test/functions/colors.spec
+++ b/test/functions/colors.spec
@@ -39,4 +39,4 @@ function testIsSameColorDoesNotYieldNotEqualColorsTruthy() {
 }
 
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/functions/icons.spec b/test/functions/icons.spec
index d4ddc805..ec0cb1fa 100755
--- a/test/functions/icons.spec
+++ b/test/functions/icons.spec
@@ -470,4 +470,4 @@ function testAllIconsAreDefinedLikeInNerdfontCompleteMode() {
   unset _ICONS_UNDER_TEST
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/functions/utilities.spec b/test/functions/utilities.spec
index a9bd67e3..b727c1f6 100755
--- a/test/functions/utilities.spec
+++ b/test/functions/utilities.spec
@@ -106,4 +106,4 @@ function testSegmentShouldNotBeJoinedIfPredecessingSegmentIsNotJoinedButConditio
   unset segments
 }
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/powerlevel9k.spec b/test/powerlevel9k.spec
index 57f85c98..8de0f1e2 100755
--- a/test/powerlevel9k.spec
+++ b/test/powerlevel9k.spec
@@ -120,4 +120,4 @@ function testNewlineOnRpromptCanBeDisabled() {
   assertEquals '$(print_icon MULTILINE_FIRST_PROMPT_PREFIX) world   $(print_icon MULTILINE_LAST_PROMPT_PREFIX) rworld' "$(print -P ${PROMPT}${RPROMPT})"
 }
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/segments/anaconda.spec b/test/segments/anaconda.spec
index 2aa8d272..c35f0494 100755
--- a/test/segments/anaconda.spec
+++ b/test/segments/anaconda.spec
@@ -66,4 +66,4 @@ function testAnacondaSegmentWorks() {
     assertEquals "%K{blue} %F{black%}icon-here %f%F{black}(tmptest) %k%F{blue}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/aws_eb_env.spec b/test/segments/aws_eb_env.spec
index 42740ea6..92240e42 100755
--- a/test/segments/aws_eb_env.spec
+++ b/test/segments/aws_eb_env.spec
@@ -58,4 +58,4 @@ function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSetInParentDirec
     cd -
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/background_jobs.spec b/test/segments/background_jobs.spec
index 0a61c3e1..fa8d5ce6 100755
--- a/test/segments/background_jobs.spec
+++ b/test/segments/background_jobs.spec
@@ -75,4 +75,4 @@ function testBackgroundJobsSegmentWithVerboseMode() {
     unfunction jobs
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/battery.spec b/test/segments/battery.spec
index 835e1468..4f81eaec 100755
--- a/test/segments/battery.spec
+++ b/test/segments/battery.spec
@@ -170,4 +170,4 @@ function testBatterySegmentIfBatteryIsCalculatingWithAcpiEnabledOnLinux() {
   assertEquals "%K{black} %F{white%}🔋 %f%F{white}50%% (...) " "$(prompt_battery left 1 false ${FOLDER})"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/command_execution_time.spec b/test/segments/command_execution_time.spec
index 65623a00..b47d3fc9 100755
--- a/test/segments/command_execution_time.spec
+++ b/test/segments/command_execution_time.spec
@@ -101,4 +101,4 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() {
   assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}02:00:00 %k%F{red}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/context.spec b/test/segments/context.spec
index 2cef90dd..0805474f 100755
--- a/test/segments/context.spec
+++ b/test/segments/context.spec
@@ -103,4 +103,4 @@ function testContextSegmentIsShownIfForced() {
     assertEquals "%K{black} %F{yellow}$(whoami) %k%F{black}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/custom.spec b/test/segments/custom.spec
index b7719d1c..3062d2e5 100755
--- a/test/segments/custom.spec
+++ b/test/segments/custom.spec
@@ -83,4 +83,4 @@ function testSettingVisualIdentifierForegroundColorForCustomSegment() {
     assertEquals "%K{white} %F{red%}hw %f%F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/detect_virt.spec b/test/segments/detect_virt.spec
index 7df92a24..f5c54198 100755
--- a/test/segments/detect_virt.spec
+++ b/test/segments/detect_virt.spec
@@ -80,4 +80,4 @@ function testDetectVirtSegmentIfRootFsIsNotOnExpectedInode() {
     unalias systemd-detect-virt
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/dir.spec b/test/segments/dir.spec
index 1f0440cd..09fa8505 100755
--- a/test/segments/dir.spec
+++ b/test/segments/dir.spec
@@ -768,4 +768,4 @@ function testDirSeparatorColorRootSubSubdirWorks() {
   rm -fr /tmp/powerlevel9k-test
 }
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/segments/disk_usage.spec b/test/segments/disk_usage.spec
index ece19bb5..80fc996f 100755
--- a/test/segments/disk_usage.spec
+++ b/test/segments/disk_usage.spec
@@ -128,4 +128,4 @@ function testDiskUsageSegmentCriticalLevelCouldBeAdjusted() {
   unfunction df
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec
index 6d8f13b9..6260aaf5 100755
--- a/test/segments/go_version.spec
+++ b/test/segments/go_version.spec
@@ -85,4 +85,4 @@ function testGoSegmentPrintsNothingIfGoIsNotAvailable() {
   unalias go
 }
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/segments/ip.spec b/test/segments/ip.spec
index 190953ad..8ffb41eb 100755
--- a/test/segments/ip.spec
+++ b/test/segments/ip.spec
@@ -228,4 +228,4 @@ inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
   unfunction ip
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/kubecontext.spec b/test/segments/kubecontext.spec
index 746ab806..b954de4a 100755
--- a/test/segments/kubecontext.spec
+++ b/test/segments/kubecontext.spec
@@ -101,4 +101,4 @@ function testKubeContextPrintsNothingIfKubectlNotAvailable() {
   unalias kubectl
 }
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/segments/laravel_version.spec b/test/segments/laravel_version.spec
index f4fd704d..88818c6a 100755
--- a/test/segments/laravel_version.spec
+++ b/test/segments/laravel_version.spec
@@ -68,4 +68,4 @@ function testLaravelVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
   unalias php
 }
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/segments/load.spec b/test/segments/load.spec
index f7c1b9be..9caa82c3 100755
--- a/test/segments/load.spec
+++ b/test/segments/load.spec
@@ -146,4 +146,4 @@ function testLoadSegmentCriticalState() {
     unalias nproc
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/node_version.spec b/test/segments/node_version.spec
index d003f5c3..1627f436 100755
--- a/test/segments/node_version.spec
+++ b/test/segments/node_version.spec
@@ -38,4 +38,4 @@ function testNodeVersionSegmentWorks() {
     unfunction node
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/nodeenv.spec b/test/segments/nodeenv.spec
index aff22586..b72b426a 100755
--- a/test/segments/nodeenv.spec
+++ b/test/segments/nodeenv.spec
@@ -96,4 +96,4 @@ function testNodeenvSegmentWorks() {
     unset NODE_VIRTUAL_ENV
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/nvm.spec b/test/segments/nvm.spec
index c8e99ea3..83d4c8f6 100755
--- a/test/segments/nvm.spec
+++ b/test/segments/nvm.spec
@@ -69,4 +69,4 @@ function testNvmSegmentPrintsNothingWhenOnDefaultVersion() {
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/php_version.spec b/test/segments/php_version.spec
index 4b9ab753..1a3ec91b 100755
--- a/test/segments/php_version.spec
+++ b/test/segments/php_version.spec
@@ -39,4 +39,4 @@ Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
   unalias php
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/public_ip.spec b/test/segments/public_ip.spec
index c4b2ae88..9a2dcdab 100755
--- a/test/segments/public_ip.spec
+++ b/test/segments/public_ip.spec
@@ -219,4 +219,4 @@ function testPublicIpSegmentWhenGoingOnline() {
   unfunction dig
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/ram.spec b/test/segments/ram.spec
index dc0b6c6b..f1331427 100755
--- a/test/segments/ram.spec
+++ b/test/segments/ram.spec
@@ -63,4 +63,4 @@ function testRamSegmentWorksOnLinux() {
     assertEquals "%K{yellow} %F{black%}RAM %f%F{black}0.29G " "$(prompt_ram left 1 false ${FOLDER})"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/rust_version.spec b/test/segments/rust_version.spec
index 583807a6..9643125f 100755
--- a/test/segments/rust_version.spec
+++ b/test/segments/rust_version.spec
@@ -48,4 +48,4 @@ function testRustPrintsNothingIfRustIsNotAvailable() {
   assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
+source shunit2/shunit2
diff --git a/test/segments/ssh.spec b/test/segments/ssh.spec
index a6701dcf..36971e13 100755
--- a/test/segments/ssh.spec
+++ b/test/segments/ssh.spec
@@ -77,4 +77,4 @@ function testSshSegmentWorksIfAllNecessaryVariablesAreSet() {
   unset SSH_CLIENT
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/status.spec b/test/segments/status.spec
index b3ba3e36..97dc6b31 100755
--- a/test/segments/status.spec
+++ b/test/segments/status.spec
@@ -110,4 +110,4 @@ function testStatusSegmentIntegrated() {
     assertEquals "%f%b%k%K{black} %F{red%}✘%f %k%F{black}%f " "${(e)PROMPT}"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/swap.spec b/test/segments/swap.spec
index 20a2d40a..2f4fbbf1 100755
--- a/test/segments/swap.spec
+++ b/test/segments/swap.spec
@@ -55,4 +55,4 @@ function testSwapSegmentWorksOnLinux() {
     assertEquals "%K{yellow} %F{black%}SWP %f%F{black}0.95G " "$(prompt_swap left 1 false ${FOLDER})"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/swift_version.spec b/test/segments/swift_version.spec
index da9aaa92..4b7c6351 100755
--- a/test/segments/swift_version.spec
+++ b/test/segments/swift_version.spec
@@ -54,4 +54,4 @@ function testSwiftSegmentWorks() {
     unfunction swift
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/symfony_version.spec b/test/segments/symfony_version.spec
index 99dea476..89a2e0be 100755
--- a/test/segments/symfony_version.spec
+++ b/test/segments/symfony_version.spec
@@ -114,4 +114,4 @@ function testSymfonyVersionSegmentWorksInNestedFolder() {
     unfunction php
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/todo.spec b/test/segments/todo.spec
index 7f1d7fba..488dc993 100755
--- a/test/segments/todo.spec
+++ b/test/segments/todo.spec
@@ -55,4 +55,4 @@ function testTodoSegmentWorksAsExpected() {
     assertEquals "%K{244} %F{black%}☑ %f%F{black}100 %k%F{grey50}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/vcs-git.spec b/test/segments/vcs-git.spec
index f78012dd..b84e08d9 100755
--- a/test/segments/vcs-git.spec
+++ b/test/segments/vcs-git.spec
@@ -375,4 +375,4 @@ function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
   assertEquals "%K{green} %F{black} master %k%F{green}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/vcs-hg.spec b/test/segments/vcs-hg.spec
index 3074952a..ff84a3d6 100755
--- a/test/segments/vcs-hg.spec
+++ b/test/segments/vcs-hg.spec
@@ -204,4 +204,4 @@ function testBookmarkIconWorks() {
   assertEquals "%K{green} %F{black} default Binitial %k%F{green}%f " "$(build_left_prompt)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
diff --git a/test/segments/vi_mode.spec b/test/segments/vi_mode.spec
index 5bed38bd..8913dfea 100755
--- a/test/segments/vi_mode.spec
+++ b/test/segments/vi_mode.spec
@@ -45,4 +45,4 @@ function testViInsertModeStringIsCustomizable() {
   assertEquals "%K{black} %F{blue}INSERT " "$(prompt_vi_mode left 1 false)"
 }
 
-source shunit2/source/2.1/src/shunit2
\ No newline at end of file
+source shunit2/shunit2
\ No newline at end of file
-- 
cgit v1.2.3


From e7cbcc5187c99e236192c1e3801bef54fd682c21 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Sat, 4 Aug 2018 22:57:06 +0200
Subject: Fix tests

---
 test/segments/battery.spec | 4 ++++
 test/segments/context.spec | 2 ++
 2 files changed, 6 insertions(+)

(limited to 'test/segments')

diff --git a/test/segments/battery.spec b/test/segments/battery.spec
index 4f81eaec..754de3cf 100755
--- a/test/segments/battery.spec
+++ b/test/segments/battery.spec
@@ -158,6 +158,10 @@ function testBatterySegmentIfBatteryIsNormalWithAcpiEnabledOnLinux() {
   assertEquals "%K{black} %F{white%}🔋 %f%F{white}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() {
diff --git a/test/segments/context.spec b/test/segments/context.spec
index 0805474f..987c3899 100755
--- a/test/segments/context.spec
+++ b/test/segments/context.spec
@@ -16,6 +16,8 @@ function setUp() {
 function tearDown() {
   # Restore old variables
   [[ -n "$OLD_DEFAULT_USER" ]] && DEFAULT_USER=$OLD_DEFAULT_USER
+
+  return 0
 }
 
 function testContextSegmentDoesNotGetRenderedWithDefaultUser() {
-- 
cgit v1.2.3


From ba353caa989463204ad18498da854a9702112e70 Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Sun, 5 Aug 2018 22:40:39 +0200
Subject: Fix tests for context segment

---
 test/segments/context.spec | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'test/segments')

diff --git a/test/segments/context.spec b/test/segments/context.spec
index 987c3899..49795668 100755
--- a/test/segments/context.spec
+++ b/test/segments/context.spec
@@ -49,6 +49,9 @@ function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
 }
 
 function testContextSegmentWithForeignUser() {
+    function sudo() {
+        return 0
+    }
     local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
     POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
 
@@ -56,6 +59,8 @@ function testContextSegmentWithForeignUser() {
     source powerlevel9k.zsh-theme
 
     assertEquals "%K{black} %F{yellow}%n@%m %k%F{black}%f " "$(build_left_prompt)"
+
+    unfunction sudo
 }
 
 # TODO: How to test root?
-- 
cgit v1.2.3


From e970a021c867976c52365c7d6b731b561539966e Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 8 Aug 2018 00:42:42 +0200
Subject: Fix tests

---
 test/powerlevel9k.spec                    | 16 +++----
 test/segments/command_execution_time.spec | 14 +++---
 test/segments/dir.spec                    | 80 +++++++++++++++----------------
 test/segments/go_version.spec             |  8 ++--
 test/segments/kubecontext.spec            |  6 +--
 test/segments/laravel_version.spec        |  6 +--
 test/segments/rust_version.spec           |  4 +-
 test/segments/status.spec                 | 14 +++---
 test/segments/vcs.spec                    | 18 +++----
 9 files changed, 83 insertions(+), 83 deletions(-)

(limited to 'test/segments')

diff --git a/test/powerlevel9k.spec b/test/powerlevel9k.spec
index 0ddf36c1..2206a9d0 100755
--- a/test/powerlevel9k.spec
+++ b/test/powerlevel9k.spec
@@ -20,7 +20,7 @@ function testJoinedSegments() {
   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{012} %F{000}/tmp %K{012}%F{000}%F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   cd -
@@ -30,7 +30,7 @@ function testTransitiveJoinedSegments() {
   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{012} %F{000}/tmp %K{012}%F{000}%F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   cd -
@@ -40,7 +40,7 @@ function testJoiningWithConditionalSegment() {
   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{012} %F{000}/tmp %K{012}%F{000} %F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   cd -
@@ -51,7 +51,7 @@ function testDynamicColoringOfSegmentsWork() {
   POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='red'
   cd /tmp
 
-  assertEquals "%K{red} %F{black}/tmp %k%F{red}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{000}/tmp %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_DIR_DEFAULT_BACKGROUND
@@ -65,7 +65,7 @@ function testDynamicColoringOfVisualIdentifiersWork() {
 
   cd /tmp
 
-  assertEquals "%K{blue} %F{green%}icon-here %f%F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{green%}icon-here %f%F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR
@@ -86,7 +86,7 @@ function testColoringOfVisualIdentifiersDoesNotOverwriteColoringOfSegment() {
 
   cd /tmp
 
-  assertEquals "%K{yellow} %F{green%}icon-here %f%F{red}/tmp %k%F{yellow}%f " "$(build_left_prompt)"
+  assertEquals "%K{011} %F{green%}icon-here %f%F{009}/tmp %k%F{011}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR
@@ -106,7 +106,7 @@ 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{012} %F{000%}icon-here %f%F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_DIR_FOLDER_ICON
@@ -123,7 +123,7 @@ function testNewlineOnRpromptCanBeDisabled() {
   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})"
+  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
diff --git a/test/segments/command_execution_time.spec b/test/segments/command_execution_time.spec
index d3588d83..7e060be7 100755
--- a/test/segments/command_execution_time.spec
+++ b/test/segments/command_execution_time.spec
@@ -16,7 +16,7 @@ function testCommandExecutionTimeIsNotShownIfTimeIsBelowThreshold() {
   POWERLEVEL9K_CUSTOM_WORLD='echo world'
   _P9K_COMMAND_DURATION=2
 
-  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_CUSTOM_WORLD
@@ -28,7 +28,7 @@ function testCommandExecutionTimeThresholdCouldBeChanged() {
   POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1
   _P9K_COMMAND_DURATION=2.03
 
-  assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}2.03 %k%F{red}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226%}Dur %f%F{226}2.03 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -40,7 +40,7 @@ function testCommandExecutionTimeThresholdCouldBeSetToZero() {
   POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
   _P9K_COMMAND_DURATION=0.03
 
-  assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}0.03 %k%F{red}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226%}Dur %f%F{226}0.03 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -53,7 +53,7 @@ function testCommandExecutionTimePrecisionCouldBeChanged() {
   POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4
   _P9K_COMMAND_DURATION=0.0001
 
-  assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}0.0001 %k%F{red}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226%}Dur %f%F{226}0.0001 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -66,7 +66,7 @@ function testCommandExecutionTimePrecisionCouldBeSetToZero() {
   POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
   _P9K_COMMAND_DURATION=23.5001
 
-  assertEquals "%K{red} %F{yellow1%}Dur %f%F{yellow1}23 %k%F{red}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226%}Dur %f%F{226}23 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -77,7 +77,7 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand()
   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)"
+  assertEquals "%K{009} %F{226%}Dur %f%F{226}03:00 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -87,7 +87,7 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() {
   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)"
+  assertEquals "%K{009} %F{226%}Dur %f%F{226}02:00:00 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
diff --git a/test/segments/dir.spec b/test/segments/dir.spec
index b5fce59f..c16e32fc 100755
--- a/test/segments/dir.spec
+++ b/test/segments/dir.spec
@@ -22,7 +22,7 @@ function testDirPathAbsoluteWorks() {
   POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
 
   cd ~
-  assertEquals "%K{blue} %F{black}/home/travis %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}/home/travis %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_DIR_PATH_ABSOLUTE
@@ -36,7 +36,7 @@ function testTruncateFoldersWorks() {
   mkdir -p $FOLDER
   cd $FOLDER
 
-  assertEquals "%K{blue} %F{black}…/12345678/123456789 %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}…/12345678/123456789 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -57,7 +57,7 @@ function testTruncateFolderWithHomeDirWorks() {
   # 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{012} %F{000}~ %k%F{012}%f " "$(build_left_prompt)"
 
   rmdir $FOLDER
   cd ${CURRENT_DIR}
@@ -75,7 +75,7 @@ function testTruncateMiddleWorks() {
   mkdir -p $FOLDER
   cd $FOLDER
 
-  assertEquals "%K{blue} %F{black}/tmp/po…st/1/12/123/1234/12…45/12…56/12…67/12…78/123456789 %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}/tmp/po…st/1/12/123/1234/12…45/12…56/12…67/12…78/123456789 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -93,7 +93,7 @@ function testTruncationFromRightWorks() {
   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{012} %F{000}/tmp/po…/1/12/123/12…/12…/12…/12…/12…/123456789 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -111,7 +111,7 @@ function testTruncateToLastWorks() {
   mkdir -p $FOLDER
   cd $FOLDER
 
-  assertEquals "%K{blue} %F{black}123456789 %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}123456789 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -129,7 +129,7 @@ function testTruncateToFirstAndLastWorks() {
   mkdir -p $FOLDER
   cd $FOLDER
 
-  assertEquals "%K{blue} %F{black}/tmp/powerlevel9k-test/…/…/…/…/…/…/…/12345678/123456789 %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}/tmp/powerlevel9k-test/…/…/…/…/…/…/…/12345678/123456789 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -147,7 +147,7 @@ function testTruncateAbsoluteWorks() {
   mkdir -p $FOLDER
   cd $FOLDER
 
-  assertEquals "%K{blue} %F{black}…89 %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}…89 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -166,7 +166,7 @@ function testTruncationFromRightWithEmptyDelimiter() {
   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{012} %F{000}/tmp/po/1/12/123/12/12/12/12/12/123456789 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -187,7 +187,7 @@ 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{012} %F{000}/…/12/123/1234/12345/123456/1234567 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr $BASEFOLDER
@@ -208,7 +208,7 @@ 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{012} %F{000}/…/12/123/1234/12345/123456/1234567 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr $BASEFOLDER
@@ -241,7 +241,7 @@ function testTruncateWithPackageNameWorks() {
   POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   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)"
+  assertEquals "%K{012} %F{000}My_Package/1/12/123/12…/12…/12…/12…/12…/123456789 %k%F{012}%f " "$(build_left_prompt)"
 
   # Go back
   cd $p9kFolder
@@ -280,7 +280,7 @@ function testTruncateWithPackageNameIfRepoIsSymlinkedInsideDeepFolder() {
   POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
 
-  assertEquals "%K{blue} %F{black}My_Package/as…/qwerqwer %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}My_Package/as…/qwerqwer %k%F{012}%f " "$(build_left_prompt)"
 
   # Go back
   cd $p9kFolder
@@ -315,7 +315,7 @@ function testTruncateWithPackageNameIfRepoIsSymlinkedInsideGitDir() {
   POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
   POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
 
-  assertEquals "%K{blue} %F{black}My_Package/.g…/re…/heads %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}My_Package/.g…/re…/heads %k%F{012}%f " "$(build_left_prompt)"
 
   # Go back
   cd $p9kFolder
@@ -329,7 +329,7 @@ function testHomeFolderDetectionWorks() {
   POWERLEVEL9K_HOME_ICON='home-icon'
 
   cd ~
-  assertEquals "%K{blue} %F{black%}home-icon %f%F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000%}home-icon %f%F{000}~ %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_HOME_ICON
@@ -341,7 +341,7 @@ function testHomeSubfolderDetectionWorks() {
   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{012} %F{000%}sub-icon %f%F{000}~/powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr $FOLDER
@@ -355,7 +355,7 @@ function testOtherFolderDetectionWorks() {
   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{012} %F{000%}folder-icon %f%F{000}/tmp/powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr $FOLDER
@@ -369,7 +369,7 @@ function testChangingDirPathSeparator() {
   mkdir -p $FOLDER
   cd $FOLDER
 
-  assertEquals "%K{blue} %F{black}xXxtmpxXxpowerlevel9k-testxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}xXxtmpxXxpowerlevel9k-testxXx1xXx2 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset FOLDER
@@ -384,20 +384,20 @@ function testHomeFolderAbbreviation() {
   cd ~/
   # default
   POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
-  assertEquals "%K{blue} %F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}~ %k%F{012}%f " "$(build_left_prompt)"
 
   # substituted
   POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
-  assertEquals "%K{blue} %F{black}qQq %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}qQq %k%F{012}%f " "$(build_left_prompt)"
 
   cd /tmp
   # default
   POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
-  assertEquals "%K{blue} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   # substituted
   POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
-  assertEquals "%K{blue} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   cd "$dir"
 }
@@ -407,7 +407,7 @@ function testOmittingFirstCharacterWorks() {
   POWERLEVEL9K_FOLDER_ICON='folder-icon'
   cd /tmp
 
-  assertEquals "%K{blue} %F{black%}folder-icon %f%F{black}tmp %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000%}folder-icon %f%F{000}tmp %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_FOLDER_ICON
@@ -421,7 +421,7 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparator() {
   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{012} %F{000%}folder-icon %f%F{000}tmpxXxpowerlevel9k-testxXx1xXx2 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -445,7 +445,7 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndDefaultTrunc
   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{012} %F{000}xXx1xXx2 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -463,7 +463,7 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndMiddleTrunca
   mkdir -p /tmp/powerlevel9k-test/1/2
   cd /tmp/powerlevel9k-test/1/2
 
-  assertEquals "%K{blue} %F{black}tmpxXxpo…stxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}tmpxXxpo…stxXx1xXx2 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -481,7 +481,7 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndRightTruncat
   mkdir -p /tmp/powerlevel9k-test/1/2
   cd /tmp/powerlevel9k-test/1/2
 
-  assertEquals "%K{blue} %F{black}tmpxXxpo…xXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}tmpxXxpo…xXx1xXx2 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -502,7 +502,7 @@ function testTruncateToUniqueWorks() {
   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{012} %F{000}txXxpxXxalxXxde %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -516,7 +516,7 @@ function testBoldHomeDirWorks() {
   POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
   cd ~
 
-  assertEquals "%K{blue} %F{black}%B~%b %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}%B~%b %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
@@ -527,7 +527,7 @@ function testBoldHomeSubdirWorks() {
   mkdir -p ~/powerlevel9k-test
   cd ~/powerlevel9k-test
 
-  assertEquals "%K{blue} %F{black}~/%Bpowerlevel9k-test%b %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}~/%Bpowerlevel9k-test%b %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr ~/powerlevel9k-test
@@ -538,7 +538,7 @@ function testBoldRootDirWorks() {
   POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
   cd /
 
-  assertEquals "%K{blue} %F{black}%B/%b %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}%B/%b %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
@@ -548,7 +548,7 @@ function testBoldRootSubdirWorks() {
   POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
   cd /tmp
 
-  assertEquals "%K{blue} %F{black}/%Btmp%b %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}/%Btmp%b %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
@@ -559,7 +559,7 @@ function testBoldRootSubSubdirWorks() {
   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{012} %F{000}/tmp/%Bpowerlevel9k-test%b %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -570,7 +570,7 @@ function testHighlightHomeWorks() {
   POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
   cd ~
 
-  assertEquals "%K{blue} %F{black}%F{red}~ %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}%F{red}~ %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
@@ -581,7 +581,7 @@ function testHighlightHomeSubdirWorks() {
   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{012} %F{000}~/%F{red}powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr ~/powerlevel9k-test
@@ -592,7 +592,7 @@ function testHighlightRootWorks() {
   POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
   cd /
 
-  assertEquals "%K{blue} %F{black}%F{red}/ %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}%F{red}/ %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
@@ -602,7 +602,7 @@ function testHighlightRootSubdirWorks() {
   POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
   cd /tmp
 
-  assertEquals "%K{blue} %F{black}/%F{red}tmp %k%F{blue}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}/%F{red}tmp %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
@@ -613,7 +613,7 @@ function testHighlightRootSubSubdirWorks() {
   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{012} %F{000}/tmp/%F{red}powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -625,7 +625,7 @@ function testDirSeparatorColorHomeSubdirWorks() {
   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{012} %F{000}~%F{red}/%F{black}powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr ~/powerlevel9k-test
@@ -637,7 +637,7 @@ function testDirSeparatorColorRootSubSubdirWorks() {
   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{012} %F{000}%F{red}/%F{black}tmp%F{red}/%F{black}powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec
index 9104ac8b..30b157a5 100755
--- a/test/segments/go_version.spec
+++ b/test/segments/go_version.spec
@@ -40,7 +40,7 @@ function testGo() {
 
   PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
 
-  assertEquals "%K{green} %F{grey93%} %f%F{grey93}go1.5.3 %k%F{green}%f " "$(build_left_prompt)"
+  assertEquals "%K{002} %F{255%} %f%F{255}go1.5.3 %k%F{002}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_GO_ICON
   unset PWD
@@ -53,7 +53,7 @@ function testGoSegmentPrintsNothingIfEmptyGopath() {
   POWERLEVEL9K_CUSTOM_WORLD='echo world'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
 
-  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_CUSTOM_WORLD
@@ -65,7 +65,7 @@ function testGoSegmentPrintsNothingIfNotInGopath() {
   POWERLEVEL9K_CUSTOM_WORLD='echo world'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
 
-  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_CUSTOM_WORLD
@@ -76,7 +76,7 @@ function testGoSegmentPrintsNothingIfGoIsNotAvailable() {
   POWERLEVEL9K_CUSTOM_WORLD='echo world'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
 
-  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_CUSTOM_WORLD
diff --git a/test/segments/kubecontext.spec b/test/segments/kubecontext.spec
index 63810378..33853a3f 100755
--- a/test/segments/kubecontext.spec
+++ b/test/segments/kubecontext.spec
@@ -69,7 +69,7 @@ function testKubeContext() {
   alias kubectl=mockKubectl
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
 
-  assertEquals "%K{magenta} %F{white%}⎈ %f%F{white}minikube/default %k%F{magenta}%f " "$(build_left_prompt)"
+  assertEquals "%K{013} %F{015%}⎈ %f%F{015}minikube/default %k%F{013}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unalias kubectl
@@ -78,7 +78,7 @@ function testKubeContextOtherNamespace() {
   alias kubectl=mockKubectlOtherNamespace
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
 
-  assertEquals "%K{magenta} %F{white%}⎈ %f%F{white}minikube/kube-system %k%F{magenta}%f " "$(build_left_prompt)"
+  assertEquals "%K{013} %F{015%}⎈ %f%F{015}minikube/kube-system %k%F{013}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unalias kubectl
@@ -88,7 +88,7 @@ function testKubeContextPrintsNothingIfKubectlNotAvailable() {
   POWERLEVEL9K_CUSTOM_WORLD='echo world'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world kubecontext)
 
-  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_CUSTOM_WORLD
diff --git a/test/segments/laravel_version.spec b/test/segments/laravel_version.spec
index 40b130d2..ffc11786 100755
--- a/test/segments/laravel_version.spec
+++ b/test/segments/laravel_version.spec
@@ -31,7 +31,7 @@ function testLaravelVersionSegment() {
   POWERLEVEL9K_LARAVEL_ICON='x'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(laravel_version)
 
-  assertEquals "%K{001} %F{white%}x %f%F{white}5.4.23 %k%F{maroon}%f " "$(build_left_prompt)"
+  assertEquals "%K{001} %F{015%}x %f%F{015}5.4.23 %k%F{001}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_LARAVEL_ICON
@@ -44,7 +44,7 @@ function testLaravelVersionSegmentIfArtisanIsNotAvailable() {
   POWERLEVEL9K_LARAVEL_ICON='x'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world laravel_version)
 
-  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_LARAVEL_ICON
@@ -58,7 +58,7 @@ function testLaravelVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
   POWERLEVEL9K_LARAVEL_ICON='x'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world laravel_version)
 
-  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_LARAVEL_ICON
diff --git a/test/segments/rust_version.spec b/test/segments/rust_version.spec
index 34883a10..7031be87 100755
--- a/test/segments/rust_version.spec
+++ b/test/segments/rust_version.spec
@@ -32,7 +32,7 @@ function testRust() {
   mockRust
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version)
 
-  assertEquals "%K{208} %F{black%}Rust %f%F{black}0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)"
+  assertEquals "%K{208} %F{000%}Rust %f%F{000}0.4.1a-alpha %k%F{208}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
 }
@@ -41,7 +41,7 @@ function testRustPrintsNothingIfRustIsNotAvailable() {
   POWERLEVEL9K_CUSTOM_WORLD='echo world'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world rust_version)
 
-  assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_CUSTOM_WORLD
diff --git a/test/segments/status.spec b/test/segments/status.spec
index 21bd65bb..fc44275e 100755
--- a/test/segments/status.spec
+++ b/test/segments/status.spec
@@ -22,7 +22,7 @@ function testStatusPrintsNothingIfReturnCodeIsZeroAndVerboseIsUnset() {
     local POWERLEVEL9K_STATUS_VERBOSE=false
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
 
-    assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
+    assertEquals "%K{015} %F{000}world %k%F{015}%f " "$(build_left_prompt)"
 }
 
 function testStatusWorksAsExpectedIfReturnCodeIsZeroAndVerboseIsSet() {
@@ -31,7 +31,7 @@ function testStatusWorksAsExpectedIfReturnCodeIsZeroAndVerboseIsSet() {
     local POWERLEVEL9K_STATUS_HIDE_SIGNAME=true
     local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
 
-    assertEquals "%K{black} %F{green%}✔%f %k%F{black}%f " "$(build_left_prompt)"
+    assertEquals "%K{000} %F{002%}✔%f %k%F{000}%f " "$(build_left_prompt)"
 }
 
 function testStatusInGeneralErrorCase() {
@@ -40,7 +40,7 @@ function testStatusInGeneralErrorCase() {
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
 
-    assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}1 %k%F{red}%f " "$(build_left_prompt)"
+    assertEquals "%K{009} %F{226%}↵ %f%F{226}1 %k%F{009}%f " "$(build_left_prompt)"
 }
 
 function testPipestatusInErrorCase() {
@@ -50,7 +50,7 @@ function testPipestatusInErrorCase() {
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=true
 
-    assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}0|0|1|0 %k%F{red}%f " "$(build_left_prompt)"
+    assertEquals "%K{009} %F{226%}↵ %f%F{226}0|0|1|0 %k%F{009}%f " "$(build_left_prompt)"
 }
 
 function testStatusCrossWinsOverVerbose() {
@@ -60,7 +60,7 @@ function testStatusCrossWinsOverVerbose() {
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_CROSS=true
 
-    assertEquals "%K{black} %F{red%}✘%f %k%F{black}%f " "$(build_left_prompt)"
+    assertEquals "%K{000} %F{009%}✘%f %k%F{000}%f " "$(build_left_prompt)"
 }
 
 function testStatusShowsSignalNameInErrorCase() {
@@ -70,7 +70,7 @@ function testStatusShowsSignalNameInErrorCase() {
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_HIDE_SIGNAME=false
 
-    assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}SIGILL(4) %k%F{red}%f " "$(build_left_prompt)"
+    assertEquals "%K{009} %F{226%}↵ %f%F{226}SIGILL(4) %k%F{009}%f " "$(build_left_prompt)"
 }
 
 function testStatusSegmentIntegrated() {
@@ -79,7 +79,7 @@ function testStatusSegmentIntegrated() {
 
     false; powerlevel9k_prepare_prompts
 
-    assertEquals "%f%b%k%K{black} %F{red%}✘%f %k%F{black}%f " "${(e)PROMPT}"
+    assertEquals "%f%b%k%K{000} %F{009%}✘%f %k%F{000}%f " "${(e)PROMPT}"
 }
 
 source shunit2/source/2.1/src/shunit2
\ No newline at end of file
diff --git a/test/segments/vcs.spec b/test/segments/vcs.spec
index f6474f61..3be7aa0f 100755
--- a/test/segments/vcs.spec
+++ b/test/segments/vcs.spec
@@ -21,7 +21,7 @@ function testColorOverridingForCleanStateWorks() {
   cd $FOLDER
   git init 1>/dev/null
 
-  assertEquals "%K{white} %F{cyan} master %k%F{white}%f " "$(build_left_prompt)"
+  assertEquals "%K{015} %F{014} master %k%F{015}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -47,7 +47,7 @@ function testColorOverridingForModifiedStateWorks() {
   git commit -m "test" 1>/dev/null
   echo "test" > testfile
 
-  assertEquals "%K{yellow} %F{red} master ● %k%F{yellow}%f " "$(build_left_prompt)"
+  assertEquals "%K{011} %F{009} master ● %k%F{011}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -68,7 +68,7 @@ function testColorOverridingForUntrackedStateWorks() {
   git init 1>/dev/null
   touch testfile
 
-  assertEquals "%K{yellow} %F{cyan} master ? %k%F{yellow}%f " "$(build_left_prompt)"
+  assertEquals "%K{011} %F{014} master ? %k%F{011}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -90,10 +90,10 @@ function testBranchNameTruncatingShortenLength() {
   git init 1>/dev/null
   touch testfile
 
-  assertEquals "%K{green} %F{black} master ? %k%F{green}%f " "$(build_left_prompt)"
+  assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)"
 
   POWERLEVEL9K_VCS_SHORTEN_LENGTH=3
-  assertEquals "%K{green} %F{black} mas… ? %k%F{green}%f " "$(build_left_prompt)"
+  assertEquals "%K{002} %F{000} mas… ? %k%F{002}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -116,11 +116,11 @@ function testBranchNameTruncatingMinLength() {
   git init 1>/dev/null
   touch testfile
 
-  assertEquals "%K{green} %F{black} master ? %k%F{green}%f " "$(build_left_prompt)"
+  assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)"
 
   POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH=7
 
-  assertEquals "%K{green} %F{black} master ? %k%F{green}%f " "$(build_left_prompt)"
+  assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
@@ -143,11 +143,11 @@ function testBranchNameTruncatingShortenStrategy() {
   git init 1>/dev/null
   touch testfile
 
-  assertEquals "%K{green} %F{black} mas… ? %k%F{green}%f " "$(build_left_prompt)"
+  assertEquals "%K{002} %F{000} mas… ? %k%F{002}%f " "$(build_left_prompt)"
 
   POWERLEVEL9K_VCS_SHORTEN_STRATEGY="truncate_middle"
 
-  assertEquals "%K{green} %F{black} mas…ter ? %k%F{green}%f " "$(build_left_prompt)"
+  assertEquals "%K{002} %F{000} mas…ter ? %k%F{002}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
-- 
cgit v1.2.3


From ef5f9bb1b494bcb1ceb81f7c833750d85701ca4a Mon Sep 17 00:00:00 2001
From: Dominik Ritter <dritter03@googlemail.com>
Date: Wed, 8 Aug 2018 23:47:01 +0200
Subject: Fix tests

---
 test/powerlevel9k.spec                    |  6 +++---
 test/segments/command_execution_time.spec | 12 ++++++------
 test/segments/dir.spec                    | 10 +++++-----
 test/segments/go_version.spec             |  2 +-
 test/segments/kubecontext.spec            |  4 ++--
 test/segments/laravel_version.spec        |  2 +-
 test/segments/rust_version.spec           |  2 +-
 test/segments/status.spec                 | 12 ++++++------
 8 files changed, 25 insertions(+), 25 deletions(-)

(limited to 'test/segments')

diff --git a/test/powerlevel9k.spec b/test/powerlevel9k.spec
index 2206a9d0..b5b81fc4 100755
--- a/test/powerlevel9k.spec
+++ b/test/powerlevel9k.spec
@@ -65,7 +65,7 @@ function testDynamicColoringOfVisualIdentifiersWork() {
 
   cd /tmp
 
-  assertEquals "%K{012} %F{green%}icon-here %f%F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{002}icon-here %f%F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR
@@ -86,7 +86,7 @@ function testColoringOfVisualIdentifiersDoesNotOverwriteColoringOfSegment() {
 
   cd /tmp
 
-  assertEquals "%K{011} %F{green%}icon-here %f%F{009}/tmp %k%F{011}%f " "$(build_left_prompt)"
+  assertEquals "%K{011} %F{002}icon-here %f%F{009}/tmp %k%F{011}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR
@@ -106,7 +106,7 @@ function testOverwritingIconsWork() {
   #cd ~/$testFolder
 
   cd /tmp
-  assertEquals "%K{012} %F{000%}icon-here %f%F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}icon-here %f%F{000}/tmp %k%F{012}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_DIR_FOLDER_ICON
diff --git a/test/segments/command_execution_time.spec b/test/segments/command_execution_time.spec
index 7e060be7..fc6110e4 100755
--- a/test/segments/command_execution_time.spec
+++ b/test/segments/command_execution_time.spec
@@ -28,7 +28,7 @@ function testCommandExecutionTimeThresholdCouldBeChanged() {
   POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1
   _P9K_COMMAND_DURATION=2.03
 
-  assertEquals "%K{009} %F{226%}Dur %f%F{226}2.03 %k%F{009}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226}Dur %f%F{226}2.03 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -40,7 +40,7 @@ function testCommandExecutionTimeThresholdCouldBeSetToZero() {
   POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
   _P9K_COMMAND_DURATION=0.03
 
-  assertEquals "%K{009} %F{226%}Dur %f%F{226}0.03 %k%F{009}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226}Dur %f%F{226}0.03 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -53,7 +53,7 @@ function testCommandExecutionTimePrecisionCouldBeChanged() {
   POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4
   _P9K_COMMAND_DURATION=0.0001
 
-  assertEquals "%K{009} %F{226%}Dur %f%F{226}0.0001 %k%F{009}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226}Dur %f%F{226}0.0001 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -66,7 +66,7 @@ function testCommandExecutionTimePrecisionCouldBeSetToZero() {
   POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
   _P9K_COMMAND_DURATION=23.5001
 
-  assertEquals "%K{009} %F{226%}Dur %f%F{226}23 %k%F{009}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226}Dur %f%F{226}23 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -77,7 +77,7 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand()
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
   _P9K_COMMAND_DURATION=180
 
-  assertEquals "%K{009} %F{226%}Dur %f%F{226}03:00 %k%F{009}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226}Dur %f%F{226}03:00 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
@@ -87,7 +87,7 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() {
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
   _P9K_COMMAND_DURATION=7200
 
-  assertEquals "%K{009} %F{226%}Dur %f%F{226}02:00:00 %k%F{009}%f " "$(build_left_prompt)"
+  assertEquals "%K{009} %F{226}Dur %f%F{226}02:00:00 %k%F{009}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset _P9K_COMMAND_DURATION
diff --git a/test/segments/dir.spec b/test/segments/dir.spec
index c16e32fc..4e4022b1 100755
--- a/test/segments/dir.spec
+++ b/test/segments/dir.spec
@@ -329,7 +329,7 @@ function testHomeFolderDetectionWorks() {
   POWERLEVEL9K_HOME_ICON='home-icon'
 
   cd ~
-  assertEquals "%K{012} %F{000%}home-icon %f%F{000}~ %k%F{012}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}home-icon %f%F{000}~ %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_HOME_ICON
@@ -341,7 +341,7 @@ function testHomeSubfolderDetectionWorks() {
   FOLDER=~/powerlevel9k-test
   mkdir $FOLDER
   cd $FOLDER
-  assertEquals "%K{012} %F{000%}sub-icon %f%F{000}~/powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}sub-icon %f%F{000}~/powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr $FOLDER
@@ -355,7 +355,7 @@ function testOtherFolderDetectionWorks() {
   FOLDER=/tmp/powerlevel9k-test
   mkdir $FOLDER
   cd $FOLDER
-  assertEquals "%K{012} %F{000%}folder-icon %f%F{000}/tmp/powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}folder-icon %f%F{000}/tmp/powerlevel9k-test %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr $FOLDER
@@ -407,7 +407,7 @@ function testOmittingFirstCharacterWorks() {
   POWERLEVEL9K_FOLDER_ICON='folder-icon'
   cd /tmp
 
-  assertEquals "%K{012} %F{000%}folder-icon %f%F{000}tmp %k%F{012}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}folder-icon %f%F{000}tmp %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   unset POWERLEVEL9K_FOLDER_ICON
@@ -421,7 +421,7 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparator() {
   mkdir -p /tmp/powerlevel9k-test/1/2
   cd /tmp/powerlevel9k-test/1/2
 
-  assertEquals "%K{012} %F{000%}folder-icon %f%F{000}tmpxXxpowerlevel9k-testxXx1xXx2 %k%F{012}%f " "$(build_left_prompt)"
+  assertEquals "%K{012} %F{000}folder-icon %f%F{000}tmpxXxpowerlevel9k-testxXx1xXx2 %k%F{012}%f " "$(build_left_prompt)"
 
   cd -
   rm -fr /tmp/powerlevel9k-test
diff --git a/test/segments/go_version.spec b/test/segments/go_version.spec
index 30b157a5..39be4157 100755
--- a/test/segments/go_version.spec
+++ b/test/segments/go_version.spec
@@ -40,7 +40,7 @@ function testGo() {
 
   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)"
+  assertEquals "%K{002} %F{255} %f%F{255}go1.5.3 %k%F{002}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_GO_ICON
   unset PWD
diff --git a/test/segments/kubecontext.spec b/test/segments/kubecontext.spec
index 33853a3f..1457558f 100755
--- a/test/segments/kubecontext.spec
+++ b/test/segments/kubecontext.spec
@@ -69,7 +69,7 @@ function testKubeContext() {
   alias kubectl=mockKubectl
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
 
-  assertEquals "%K{013} %F{015%}⎈ %f%F{015}minikube/default %k%F{013}%f " "$(build_left_prompt)"
+  assertEquals "%K{013} %F{015}⎈ %f%F{015}minikube/default %k%F{013}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unalias kubectl
@@ -78,7 +78,7 @@ function testKubeContextOtherNamespace() {
   alias kubectl=mockKubectlOtherNamespace
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
 
-  assertEquals "%K{013} %F{015%}⎈ %f%F{015}minikube/kube-system %k%F{013}%f " "$(build_left_prompt)"
+  assertEquals "%K{013} %F{015}⎈ %f%F{015}minikube/kube-system %k%F{013}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unalias kubectl
diff --git a/test/segments/laravel_version.spec b/test/segments/laravel_version.spec
index ffc11786..b620ce8a 100755
--- a/test/segments/laravel_version.spec
+++ b/test/segments/laravel_version.spec
@@ -31,7 +31,7 @@ function testLaravelVersionSegment() {
   POWERLEVEL9K_LARAVEL_ICON='x'
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(laravel_version)
 
-  assertEquals "%K{001} %F{015%}x %f%F{015}5.4.23 %k%F{001}%f " "$(build_left_prompt)"
+  assertEquals "%K{001} %F{015}x %f%F{015}5.4.23 %k%F{001}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
   unset POWERLEVEL9K_LARAVEL_ICON
diff --git a/test/segments/rust_version.spec b/test/segments/rust_version.spec
index 7031be87..1317ba85 100755
--- a/test/segments/rust_version.spec
+++ b/test/segments/rust_version.spec
@@ -32,7 +32,7 @@ function testRust() {
   mockRust
   POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version)
 
-  assertEquals "%K{208} %F{000%}Rust %f%F{000}0.4.1a-alpha %k%F{208}%f " "$(build_left_prompt)"
+  assertEquals "%K{208} %F{000}Rust %f%F{000}0.4.1a-alpha %k%F{208}%f " "$(build_left_prompt)"
 
   unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
 }
diff --git a/test/segments/status.spec b/test/segments/status.spec
index fc44275e..8a9b6a1c 100755
--- a/test/segments/status.spec
+++ b/test/segments/status.spec
@@ -31,7 +31,7 @@ function testStatusWorksAsExpectedIfReturnCodeIsZeroAndVerboseIsSet() {
     local POWERLEVEL9K_STATUS_HIDE_SIGNAME=true
     local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(status)
 
-    assertEquals "%K{000} %F{002%}✔%f %k%F{000}%f " "$(build_left_prompt)"
+    assertEquals "%K{000} %F{002}✔%f %k%F{000}%f " "$(build_left_prompt)"
 }
 
 function testStatusInGeneralErrorCase() {
@@ -40,7 +40,7 @@ function testStatusInGeneralErrorCase() {
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=false
 
-    assertEquals "%K{009} %F{226%}↵ %f%F{226}1 %k%F{009}%f " "$(build_left_prompt)"
+    assertEquals "%K{009} %F{226}↵ %f%F{226}1 %k%F{009}%f " "$(build_left_prompt)"
 }
 
 function testPipestatusInErrorCase() {
@@ -50,7 +50,7 @@ function testPipestatusInErrorCase() {
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_SHOW_PIPESTATUS=true
 
-    assertEquals "%K{009} %F{226%}↵ %f%F{226}0|0|1|0 %k%F{009}%f " "$(build_left_prompt)"
+    assertEquals "%K{009} %F{226}↵ %f%F{226}0|0|1|0 %k%F{009}%f " "$(build_left_prompt)"
 }
 
 function testStatusCrossWinsOverVerbose() {
@@ -60,7 +60,7 @@ function testStatusCrossWinsOverVerbose() {
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_CROSS=true
 
-    assertEquals "%K{000} %F{009%}✘%f %k%F{000}%f " "$(build_left_prompt)"
+    assertEquals "%K{000} %F{009}✘%f %k%F{000}%f " "$(build_left_prompt)"
 }
 
 function testStatusShowsSignalNameInErrorCase() {
@@ -70,7 +70,7 @@ function testStatusShowsSignalNameInErrorCase() {
     local POWERLEVEL9K_STATUS_VERBOSE=true
     local POWERLEVEL9K_STATUS_HIDE_SIGNAME=false
 
-    assertEquals "%K{009} %F{226%}↵ %f%F{226}SIGILL(4) %k%F{009}%f " "$(build_left_prompt)"
+    assertEquals "%K{009} %F{226}↵ %f%F{226}SIGILL(4) %k%F{009}%f " "$(build_left_prompt)"
 }
 
 function testStatusSegmentIntegrated() {
@@ -79,7 +79,7 @@ function testStatusSegmentIntegrated() {
 
     false; powerlevel9k_prepare_prompts
 
-    assertEquals "%f%b%k%K{000} %F{009%}✘%f %k%F{000}%f " "${(e)PROMPT}"
+    assertEquals "%f%b%k%K{000} %F{009}✘%f %k%F{000}%f " "${(e)PROMPT}"
 }
 
 source shunit2/source/2.1/src/shunit2
\ No newline at end of file
-- 
cgit v1.2.3