mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-11-22 12:20:07 +00:00
Merge branch 'master' into fix-rprompt-icons-cut-off
This commit is contained in:
commit
a98fa7ff54
60 changed files with 4899 additions and 1136 deletions
84
.travis.yml
84
.travis.yml
|
@ -1,33 +1,77 @@
|
|||
sudo: true
|
||||
dist: trusty
|
||||
language: sh
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
osx_image: xcode9.4
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- build-essential
|
||||
- git
|
||||
- mercurial
|
||||
- subversion
|
||||
- jq
|
||||
- node
|
||||
- golang
|
||||
- ruby
|
||||
- python
|
||||
- python-virtualenv
|
||||
|
||||
before_install:
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi
|
||||
|
||||
env:
|
||||
global:
|
||||
- ZSH_DIST=$HOME/.zshdist
|
||||
matrix:
|
||||
# Use _ZSH_VERSION since if ZSH_VERSION is present, travis cacher thinks it
|
||||
# is running in zsh and tries to use zsh specific functions.
|
||||
- _ZSH_VERSION=5.5.1
|
||||
- _ZSH_VERSION=5.5
|
||||
- _ZSH_VERSION=5.4.2
|
||||
- _ZSH_VERSION=5.4.1
|
||||
- _ZSH_VERSION=5.3.1
|
||||
- _ZSH_VERSION=5.3
|
||||
- _ZSH_VERSION=5.2
|
||||
- _ZSH_VERSION=5.1.1
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $ZSH_DIST
|
||||
|
||||
before_script:
|
||||
- >
|
||||
setup_zsh() {
|
||||
dest="$ZSH_DIST/$1"
|
||||
if [[ ! -d $dest/bin ]]; then
|
||||
coreutils_mktemp="mktemp"
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
coreutils_mktemp="gmktemp"
|
||||
fi
|
||||
tmp="$(${coreutils_mktemp} --directory --tmpdir="${TMPDIR:/tmp}" zshbuild.XXXXXX)"
|
||||
(
|
||||
cd "$tmp" &&
|
||||
curl -L http://downloads.sourceforge.net/zsh/zsh-${1}.tar.gz | tar zx &&
|
||||
cd zsh-$1 &&
|
||||
./configure --prefix="$dest" &&
|
||||
make &&
|
||||
mkdir -p "$dest" &&
|
||||
make install ||
|
||||
echo "Failed to build zsh-${1}!"
|
||||
)
|
||||
fi
|
||||
export PATH="$dest/bin:$PATH"
|
||||
}
|
||||
- setup_zsh $_ZSH_VERSION
|
||||
# Show the git version being used to test.
|
||||
- "git --version"
|
||||
# Show the mercurial version being used to test.
|
||||
- "hg --version"
|
||||
# Show the zsh version being used to test.
|
||||
- "zsh --version"
|
||||
|
||||
install:
|
||||
- "sudo apt-get update -qq"
|
||||
- "sudo apt-get install -y zsh"
|
||||
- "sudo chsh -s $(which zsh)"
|
||||
- "sudo apt-get install -y git mercurial subversion jq node golang ruby python python-virtualenv"
|
||||
|
||||
script:
|
||||
- test/powerlevel9k.spec
|
||||
- test/functions/utilities.spec
|
||||
- test/functions/colors.spec
|
||||
- test/functions/icons.spec
|
||||
- test/segments/command_execution_time.spec
|
||||
- test/segments/dir.spec
|
||||
- test/segments/rust_version.spec
|
||||
- test/segments/go_version.spec
|
||||
- test/segments/vcs.spec
|
||||
- test/segments/kubecontext.spec
|
||||
- test/segments/laravel_version.spec
|
||||
- test/segments/status.spec
|
||||
- test/suite.spec
|
||||
|
|
18
CHANGELOG.md
18
CHANGELOG.md
|
@ -1,3 +1,21 @@
|
|||
## v0.6.6
|
||||
|
||||
- The `rbenv` segment is no longer a default segment in the LPROMPT.
|
||||
- PR #959 - Fixing issue in v0.6.5 where we changed some color codes.
|
||||
- PR #934 - Add Tests
|
||||
- PR #884 - test-in-docker: fix with newer ZSH versions
|
||||
- PR #928 - [Docs] Add etc state description in dir docs
|
||||
- PR #937 - Use SUDO_COMMAND to check for sudo
|
||||
- PR #925 - [Bugfix] Resolve #918 Transparent background
|
||||
- PR #923 - Fix font issue debugging script
|
||||
- PR #921 - Add missing colors to fix color comparison
|
||||
- PR #951 - Add fallback icon for missing linux distro icons
|
||||
- PR #956 - Fix broken link in readme
|
||||
- Fixed #936 - fallback icons for Linux distros
|
||||
- Fixed #926 - `etc` state for `dir` segment in docs
|
||||
- Fixed #852 - `sudo` detection got crazy, there. sorry, everyone.
|
||||
- Fixed #927 - more default color issues.
|
||||
|
||||
## v0.6.5
|
||||
|
||||
- Multiple PRs: General fixes to README, improved documentation.
|
||||
|
|
10
README.md
10
README.md
|
@ -70,7 +70,7 @@ variables to your `~/.zshrc`.
|
|||
|
||||
| Variable | Default Value | Description |
|
||||
|----------|---------------|-------------|
|
||||
|`POWERLEVEL9K_LEFT_PROMPT_ELEMENTS`|`(context dir rbenv vcs)`|Segment list for left prompt|
|
||||
|`POWERLEVEL9K_LEFT_PROMPT_ELEMENTS`|`(context dir vcs)`|Segment list for left prompt|
|
||||
|`POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS`|`(status root_indicator background_jobs history time)`|Segment list for right prompt|
|
||||
|
||||
|
||||
|
@ -78,7 +78,7 @@ The table above shows the default values, so if you wanted to set these
|
|||
variables manually, you would put the following in
|
||||
your `~/.zshrc`:
|
||||
```zsh
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir vcs)
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs history time)
|
||||
```
|
||||
#### Available Prompt Segments
|
||||
|
@ -374,7 +374,7 @@ The `date` segment shows the current system date.
|
|||
|
||||
| Variable | Default Value | Description |
|
||||
|----------|---------------|-------------|
|
||||
|`POWERLEVEL9K_DATE_FORMAT`|`%D{%d.%m.%y}`|[ZSH time format](http://zsh.sourceforge.net/Doc/Release Prompt-Expansion.html) to use in this segment.|
|
||||
|`POWERLEVEL9K_DATE_FORMAT`|`%D{%d.%m.%y}`|[ZSH time format](http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Date-and-time) to use in this segment.|
|
||||
|
||||
##### dir
|
||||
|
||||
|
@ -386,12 +386,14 @@ Powerline" fonts, there are additional glyphs, as well:
|
|||
| None | None | ![](https://cloud.githubusercontent.com/assets/1544760/12183451/40ec4016-b58f-11e5-9b9e-74e2b2f0b8b3.png) | At the root of your home folder |
|
||||
| None | None | ![](https://cloud.githubusercontent.com/assets/1544760/12369315/8a5d762c-bbf5-11e5-8a20-ca1179f48d6c.png) | Within a subfolder of your home directory |
|
||||
| None | None | ![](https://cloud.githubusercontent.com/assets/1544760/12183452/40f79286-b58f-11e5-9b8c-ed1343a07b08.png) | Outside of your home folder |
|
||||
| None | None | ⚙ | Within the `/etc` directory |
|
||||
|
||||
To turn off these icons you could set these variables to an empty string.
|
||||
```zsh
|
||||
POWERLEVEL9K_HOME_ICON=''
|
||||
POWERLEVEL9K_HOME_SUB_ICON=''
|
||||
POWERLEVEL9K_FOLDER_ICON=''
|
||||
POWERLEVEL9K_ETC_ICON=''
|
||||
```
|
||||
You can limit the output to a certain length by truncating long paths.
|
||||
Customizations available are:
|
||||
|
@ -411,7 +413,7 @@ Customizations available are:
|
|||
|`truncate_from_right`|Just leaves the beginning of a folder name untouched. E.g. your folders will be truncated like so: "/ro../Pr../office". How many characters will be untouched is controlled by `POWERLEVEL9K_SHORTEN_DIR_LENGTH`.|
|
||||
|`truncate_absolute`|Truncates everything exept the last few characters in the path. E.g. if you are in a folder named "~/Projects/powerlevel9k" and you have set `POWERLEVEL9K_SHORTEN_DIR_LENGTH=3`, you will get "..l9k".|
|
||||
|`truncate_to_last`|Truncates everything before the last folder in the path.|
|
||||
|`truncate_to_first_and_last|Truncate middle directories from the path. How many directories will be untouched is controlled by POWERLEVEL9K_SHORTER_DIR_LENGTH. E.g. if you are in a folder named "~/Projects/powerlevel9k" and you have set `POWERLEVEL9K_SHORTEN_DIR_LENGTH=1`, you will get "~/../powerlevel9k".||
|
||||
|`truncate_to_first_and_last`|Truncate middle directories from the path. How many directories will be untouched is controlled by POWERLEVEL9K_SHORTER_DIR_LENGTH. E.g. if you are in a folder named "~/Projects/powerlevel9k" and you have set `POWERLEVEL9K_SHORTEN_DIR_LENGTH=1`, you will get "~/../powerlevel9k".||
|
||||
|`truncate_to_unique`|Parse all parent path components and truncate them to the shortest unique length. If you copy & paste the result to a shell, after hitting `TAB` it should expand to the original path unambiguously.|
|
||||
|`truncate_with_package_name`|Search for a `package.json` or `composer.json` and prints the `name` field to abbreviate the directory path. The precedence and/or files could be set by `POWERLEVEL9K_DIR_PACKAGE_FILES=(package.json composer.json)`. If you have [jq](https://stedolan.github.io/jq/) installed, it will dramatically improve the speed of this strategy.|
|
||||
|`truncate_with_folder_marker`|Search for a file that is specified by `POWERLEVEL9K_SHORTEN_FOLDER_MARKER` and truncate everything before that (if found, otherwise stop on $HOME and ROOT).|
|
||||
|
|
44
TESTS.md
44
TESTS.md
|
@ -1,25 +1,45 @@
|
|||
# Structure
|
||||
# Tests
|
||||
|
||||
The Unit-Tests do not follow exactly the file structure of Powerlevel9k itself.
|
||||
## Automated Tests
|
||||
|
||||
## Basic Tests
|
||||
The Unit-Tests do not follow exactly the file structure of Powerlevel9k itself,
|
||||
but we try to reflect the structure as much as possible. All tests are located
|
||||
under `test/`. Segment specific tests under `test/segments/` (one file per
|
||||
segment).
|
||||
|
||||
Basic Tests belong in `test/powerlevel9k.spec` if they test basic functionality of
|
||||
Powerlevel9k itself. Basic functions from the `functions` directory have their
|
||||
Tests in separate files under `test/functions`.
|
||||
### Installation
|
||||
|
||||
## Segment Tests
|
||||
In order to execute the tests you need to install `shunit2`, which is a
|
||||
submodule. To install the submodule, you can execute
|
||||
`git submodule init && git submodule update`.
|
||||
|
||||
These Tests tend to be more complex in setup than the basic tests. To avoid ending
|
||||
up in a huge single file, there is one file per segment in `test/segments`.
|
||||
### Executing tests
|
||||
|
||||
# Manual Testing
|
||||
The tests are shell scripts on their own. So you can execute them right away.
|
||||
To execute all tests you could just execute `./test/suite.spec`.
|
||||
|
||||
### General Test Structure
|
||||
|
||||
The tests usually have a `setUp()` function which is executed before every
|
||||
test function. Speaking of, test functions must be prefixed with `test`. In
|
||||
the tests, you can do [different Assertions](https://github.com/kward/shunit2#-asserts).
|
||||
It is always a good idea to mock the program you want to test (just have a
|
||||
look at other tests), so that the testrunner does not have to have all
|
||||
programs installed.
|
||||
|
||||
### Travis
|
||||
|
||||
We use [Travis](https://travis-ci.org/) for Continuous Integration. This
|
||||
service executes our tests after every push. For now, we need to tell travis
|
||||
where to find the tests, which is what happens in the `.travis.yml` file.
|
||||
|
||||
## Manual Testing
|
||||
|
||||
If unit tests are not sufficient (e.g. you have an issue with your prompt that
|
||||
occurs only in a specific ZSH framework) then you can use either Docker or
|
||||
or our Vagrant.
|
||||
|
||||
## Docker
|
||||
### Docker
|
||||
|
||||
This is the easiest to use _if_ you have Docker already installed and running.
|
||||
|
||||
|
@ -42,7 +62,7 @@ You can get Docker at <https://www.docker.com/community-edition>.
|
|||
|
||||
**Note:** Not all frameworks work with all versions of ZSH (or the underlying OS).
|
||||
|
||||
## Vagrant
|
||||
### Vagrant
|
||||
|
||||
Currently there are two test VMs. `test-vm` is an Ubuntu machine with several
|
||||
pre-installed ZSH frameworks. And there is `test-bsd-vm` which is a FreeBSD!
|
||||
|
|
|
@ -1,9 +1,67 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
source functions/colors.zsh
|
||||
source functions/icons.zsh
|
||||
source functions/utilities.zsh
|
||||
# Map our $OS to neofetch $os
|
||||
os="$OS"
|
||||
|
||||
|
||||
trim() {
|
||||
set -f
|
||||
# shellcheck disable=2048,2086
|
||||
set -- $*
|
||||
printf '%s\n' "${*//[[:space:]]/}"
|
||||
set +f
|
||||
}
|
||||
|
||||
get_ppid() {
|
||||
# Get parent process ID of PID.
|
||||
case "$os" in
|
||||
"Windows")
|
||||
ppid="$(ps -p "${1:-$PPID}" | awk '{printf $2}')"
|
||||
ppid="${ppid/PPID}"
|
||||
;;
|
||||
|
||||
"Linux")
|
||||
ppid="$(grep -i -F "PPid:" "/proc/${1:-$PPID}/status")"
|
||||
ppid="$(trim "${ppid/PPid:}")"
|
||||
;;
|
||||
|
||||
*)
|
||||
ppid="$(ps -p "${1:-$PPID}" -o ppid=)"
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "%s" "$ppid"
|
||||
}
|
||||
|
||||
get_process_name() {
|
||||
# Get PID name.
|
||||
case "$os" in
|
||||
"Windows")
|
||||
name="$(ps -p "${1:-$PPID}" | awk '{printf $8}')"
|
||||
name="${name/COMMAND}"
|
||||
name="${name/*\/}"
|
||||
;;
|
||||
|
||||
"Linux")
|
||||
name="$(< "/proc/${1:-$PPID}/comm")"
|
||||
;;
|
||||
|
||||
*)
|
||||
name="$(ps -p "${1:-$PPID}" -o comm=)"
|
||||
;;
|
||||
esac
|
||||
|
||||
printf "%s" "$name"
|
||||
}
|
||||
|
||||
# Taken from NeoFetch (slightly modified)
|
||||
get_term() {
|
||||
local term
|
||||
|
||||
# If function was run, stop here.
|
||||
# ((term_run == 1)) && return
|
||||
|
||||
|
@ -16,16 +74,34 @@ get_term() {
|
|||
*) term="${TERM_PROGRAM/\.app}" ;;
|
||||
esac
|
||||
|
||||
# Most likely TosWin2 on FreeMiNT - quick check
|
||||
[[ "$TERM" == "tw52" || "$TERM" == "tw100" ]] && \
|
||||
term="TosWin2"
|
||||
|
||||
[[ "$SSH_CONNECTION" ]] && \
|
||||
term="$SSH_TTY"
|
||||
|
||||
# Check $PPID for terminal emulator.
|
||||
while [[ -z "$term" ]]; do
|
||||
parent="$(get_ppid "$parent")"
|
||||
[[ -z "$parent" ]] && break
|
||||
name="$(get_process_name "$parent")"
|
||||
|
||||
case "${name// }" in
|
||||
"${SHELL/*\/}" | *"sh" | "tmux"* | "screen" | "su"*) ;;
|
||||
"login"* | *"Login"* | "init" | "(init)") term="$(tty)" ;;
|
||||
"ruby" | "1" | "systemd" | "sshd"* | "python"* | "USER"*"PID"*) break ;;
|
||||
"${SHELL/*\/}"|*"sh"|"screen"|"su"*) ;;
|
||||
|
||||
"login"*|*"Login"*|"init"|"(init)")
|
||||
term="$(tty)"
|
||||
;;
|
||||
|
||||
"ruby"|"1"|"tmux"*|"systemd"|"sshd"*|"python"*|"USER"*"PID"*|"kdeinit"*|"launchd"*)
|
||||
break
|
||||
;;
|
||||
|
||||
"gnome-terminal-") term="gnome-terminal" ;;
|
||||
"urxvtd") term="urxvt" ;;
|
||||
*"nvim") term="Neovim Terminal" ;;
|
||||
*"NeoVimServer"*) term="VimR Terminal" ;;
|
||||
*) term="${name##*/}" ;;
|
||||
esac
|
||||
done
|
||||
|
@ -42,70 +118,119 @@ get_term_font() {
|
|||
|
||||
case "$term" in
|
||||
"alacritty"*)
|
||||
term_font="$(awk -F ':|#' '/normal:/ {getline; print}' "${XDG_CONFIG_HOME}/alacritty/alacritty.yml")"
|
||||
shopt -s nullglob
|
||||
confs=({$XDG_CONFIG_HOME,$HOME}/{alacritty,}/{.,}alacritty.ym?)
|
||||
shopt -u nullglob
|
||||
|
||||
[[ -f "${confs[0]}" ]] || return
|
||||
|
||||
term_font="$(awk -F ':|#' '/normal:/ {getline; print}' "${confs[0]}")"
|
||||
term_font="${term_font/*family:}"
|
||||
term_font="${term_font/$'\n'*}"
|
||||
term_font="${term_font/\#*}"
|
||||
;;
|
||||
|
||||
"Apple_Terminal")
|
||||
term_font="$(osascript -e 'tell application "Terminal" to font name of window frontmost')"
|
||||
term_font="$(osascript <<END
|
||||
tell application "Terminal" to font name of window frontmost
|
||||
END
|
||||
)"
|
||||
;;
|
||||
|
||||
"iTerm2")
|
||||
# Unfortunately the profile name is not unique, but it seems to be the only thing
|
||||
# that identifies an active profile. There is the "id of current session of current window"
|
||||
# thou, but that does not match to a guid in the plist.
|
||||
# So, be warned! Collisions may occur!
|
||||
# that identifies an active profile. There is the "id of current session of current win-
|
||||
# dow" though, but that does not match to a guid in the plist.
|
||||
# So, be warned, collisions may occur!
|
||||
# See: https://groups.google.com/forum/#!topic/iterm2-discuss/0tO3xZ4Zlwg
|
||||
# and: https://gitlab.com/gnachman/iterm2/issues/5586
|
||||
local currentProfileName=$(osascript -e 'tell application "iTerm2" to profile name of current session of current window')
|
||||
local current_profile_name profiles_count profile_name diff_font
|
||||
|
||||
current_profile_name="$(osascript <<END
|
||||
tell application "iTerm2" to profile name \
|
||||
of current session of current window
|
||||
END
|
||||
)"
|
||||
|
||||
# Warning: Dynamic profiles are not taken into account here!
|
||||
# https://www.iterm2.com/documentation-dynamic-profiles.html
|
||||
|
||||
local nonAsciiFont
|
||||
font_file="${HOME}/Library/Preferences/com.googlecode.iterm2.plist"
|
||||
|
||||
# Count Guids in "New Bookmarks"; they should be unique
|
||||
local profilesCount=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:" ~/Library/Preferences/com.googlecode.iterm2.plist 2>/dev/null | grep -c "Guid")
|
||||
for idx in $(seq 0 "${profilesCount}"); do
|
||||
local profileName=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Name:" ~/Library/Preferences/com.googlecode.iterm2.plist 2>/dev/null)
|
||||
if [[ "${profileName}" == "${currentProfileName}" ]]; then
|
||||
profiles_count="$(/usr/libexec/PlistBuddy -c "Print ':New Bookmarks:'" "$font_file" | \
|
||||
grep -w -c "Guid")"
|
||||
|
||||
for ((i=0; i<profiles_count; i++)); do
|
||||
profile_name="$(/usr/libexec/PlistBuddy -c "Print ':New Bookmarks:${i}:Name:'" "$font_file")"
|
||||
|
||||
if [[ "$profile_name" == "$current_profile_name" ]]; then
|
||||
# "Normal Font"
|
||||
term_font=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Normal\ Font:" ~/Library/Preferences/com.googlecode.iterm2.plist)
|
||||
term_font="$(/usr/libexec/PlistBuddy -c "Print ':New Bookmarks:${i}:Normal Font:'" \
|
||||
"$font_file")"
|
||||
|
||||
# Font for non-ascii characters
|
||||
# Only check for a different non-ascii font, if the user checked
|
||||
# the "use a different font for non-ascii text" switch.
|
||||
local useDifferentFont=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Use\ Non-ASCII\ Font:" ~/Library/Preferences/com.googlecode.iterm2.plist)
|
||||
if [[ "$useDifferentFont" == "true" ]]; then
|
||||
local nonAsciiFont=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Non\ Ascii\ Font:" ~/Library/Preferences/com.googlecode.iterm2.plist)
|
||||
if [[ "$term_font" != "$nonAsciiFont" ]]; then
|
||||
term_font="$term_font (normal) / $nonAsciiFont (non-ascii)"
|
||||
fi
|
||||
diff_font="$(/usr/libexec/PlistBuddy -c "Print ':New Bookmarks:${i}:Use Non-ASCII Font:'" \
|
||||
"$font_file")"
|
||||
|
||||
if [[ "$diff_font" == "true" ]]; then
|
||||
non_ascii="$(/usr/libexec/PlistBuddy -c "Print ':New Bookmarks:${i}:Non Ascii Font:'" \
|
||||
"$font_file")"
|
||||
|
||||
[[ "$term_font" != "$non_ascii" ]] && \
|
||||
term_font="$term_font (normal) / $non_ascii (non-ascii)"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
;;
|
||||
|
||||
"deepin-terminal"*)
|
||||
term_font="$(awk -F '=' '/font=/ {a=$2} /font_size/ {b=$2} END{print a " " b}' "${XDG_CONFIG_HOME}/deepin/deepin-terminal/config.conf")"
|
||||
term_font="$(awk -F '=' '/font=/ {a=$2} /font_size/ {b=$2} END {print a " " b}' \
|
||||
"${XDG_CONFIG_HOME}/deepin/deepin-terminal/config.conf")"
|
||||
;;
|
||||
|
||||
"GNUstep_Terminal")
|
||||
term_font="$(awk -F '>|<' '/>TerminalFont</ {getline; f=$3}
|
||||
/>TerminalFontSize</ {getline; s=$3} END {print f " " s}' \
|
||||
"${HOME}/GNUstep/Defaults/Terminal.plist")"
|
||||
;;
|
||||
|
||||
"Hyper"*)
|
||||
term_font="$(awk -F "," '/fontFamily/ {a=$1} END{print a}' "${HOME}/.hyper.js" | awk -F "'" '{a=$2} END{print a}')"
|
||||
term_font="$(awk -F':|,' '/fontFamily/ {print $2; exit}' "${HOME}/.hyper.js")"
|
||||
term_font="$(trim_quotes "$term_font")"
|
||||
;;
|
||||
|
||||
"kitty"*)
|
||||
shopt -s nullglob
|
||||
confs=({$KITTY_CONFIG_DIRECTORY,$XDG_CONFIG_HOME,~/Library/Preferences}/kitty/kitty.con?)
|
||||
shopt -u nullglob
|
||||
|
||||
[[ -f "${confs[0]}" ]] || return
|
||||
|
||||
term_font="$(awk '/^([[:space:]]*|[^#_])font_family[[:space:]]+/ {
|
||||
$1 = "";
|
||||
gsub(/^[[:space:]]/, "");
|
||||
font = $0
|
||||
}
|
||||
/^([[:space:]]*|[^#_])font_size[[:space:]]+/ {
|
||||
size = $2
|
||||
}
|
||||
END { print font " " size}' "${confs[0]}")"
|
||||
;;
|
||||
|
||||
"konsole"*)
|
||||
# Get Process ID of current konsole window / tab
|
||||
child="$(get_ppid "$$")"
|
||||
|
||||
konsole_instances=($(qdbus | grep 'org.kde.konsole'))
|
||||
IFS=$'\n' read -d "" -ra konsole_instances < <(qdbus | grep -F 'org.kde.konsole')
|
||||
|
||||
for i in "${konsole_instances[@]}"; do
|
||||
konsole_sessions=($(qdbus "${i}" | grep '/Sessions/'))
|
||||
IFS=$'\n' read -d "" -ra konsole_sessions < <(qdbus "$i" | grep -F '/Sessions/')
|
||||
|
||||
for session in "${konsole_sessions[@]}"; do
|
||||
if ((child == "$(qdbus "${i}" "${session}" processId)")); then
|
||||
profile="$(qdbus "${i}" "${session}" environment | awk -F '=' '/KONSOLE_PROFILE_NAME/ {print $2}')"
|
||||
if ((child == "$(qdbus "$i" "$session" processId)")); then
|
||||
profile="$(qdbus "$i" "$session" environment |\
|
||||
awk -F '=' '/KONSOLE_PROFILE_NAME/ {print $2}')"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
@ -113,9 +238,53 @@ get_term_font() {
|
|||
done
|
||||
|
||||
# We could have two profile files for the same profile name, take first match
|
||||
profile_filename="$(grep -l "Name=${profile}" "${HOME}"/.local/share/konsole/*.profile)"
|
||||
profile_filename="$(grep -l "Name=${profile}" "$HOME"/.local/share/konsole/*.profile)"
|
||||
profile_filename="${profile_filename/$'\n'*}"
|
||||
[[ "$profile_filename" ]] && term_font="$(awk -F '=|,' '/Font=/ {print $2 " " $3}' "$profile_filename")"
|
||||
|
||||
[[ "$profile_filename" ]] && \
|
||||
term_font="$(awk -F '=|,' '/Font=/ {print $2 " " $3}' "$profile_filename")"
|
||||
;;
|
||||
|
||||
"lxterminal"*)
|
||||
term_font="$(awk -F '=' '/fontname=/ {print $2; exit}' \
|
||||
"${XDG_CONFIG_HOME}/lxterminal/lxterminal.conf")"
|
||||
;;
|
||||
|
||||
"mate-terminal")
|
||||
# To get the actual config we have to create a temporarily file with the
|
||||
# --save-config option.
|
||||
mateterm_config="/tmp/mateterm.cfg"
|
||||
|
||||
# Ensure /tmp exists and we do not overwrite anything.
|
||||
if [[ -d /tmp && ! -f "$mateterm_config" ]]; then
|
||||
mate-terminal --save-config="$mateterm_config"
|
||||
|
||||
role="$(xprop -id "${WINDOWID}" WM_WINDOW_ROLE)"
|
||||
role="${role##* }"
|
||||
role="${role//\"}"
|
||||
|
||||
profile="$(awk -F '=' -v r="$role" \
|
||||
'$0~r {
|
||||
getline;
|
||||
if(/Maximized/) getline;
|
||||
if(/Fullscreen/) getline;
|
||||
id=$2"]"
|
||||
} $0~id {if(id) {getline; print $2; exit}}' \
|
||||
"$mateterm_config")"
|
||||
|
||||
rm -f "$mateterm_config"
|
||||
|
||||
mate_get() {
|
||||
gsettings get org.mate.terminal.profile:/org/mate/terminal/profiles/"$1"/ "$2"
|
||||
}
|
||||
|
||||
if [[ "$(mate_get "$profile" "use-system-font")" == "true" ]]; then
|
||||
term_font="$(gsettings get org.mate.interface monospace-font-name)"
|
||||
else
|
||||
term_font="$(mate_get "$profile" "font")"
|
||||
fi
|
||||
term_font="$(trim_quotes "$term_font")"
|
||||
fi
|
||||
;;
|
||||
|
||||
"mintty")
|
||||
|
@ -124,30 +293,91 @@ get_term_font() {
|
|||
|
||||
"pantheon"*)
|
||||
term_font="$(gsettings get org.pantheon.terminal.settings font)"
|
||||
[[ -z "${term_font//\'}" ]] && term_font="$(gsettings get org.gnome.desktop.interface monospace-font-name)"
|
||||
|
||||
[[ -z "${term_font//\'}" ]] && \
|
||||
term_font="$(gsettings get org.gnome.desktop.interface monospace-font-name)"
|
||||
|
||||
term_font="$(trim_quotes "$term_font")"
|
||||
;;
|
||||
|
||||
"qterminal")
|
||||
term_font="$(awk -F '=' '/fontFamily=/ {a=$2} /fontSize=/ {b=$2} END {print a " " b}' \
|
||||
"${XDG_CONFIG_HOME}/qterminal.org/qterminal.ini")"
|
||||
;;
|
||||
|
||||
"sakura"*)
|
||||
term_font="$(awk -F '=' '/^font=/ {a=$2} END{print a}' "${XDG_CONFIG_HOME}/sakura/sakura.conf")"
|
||||
term_font="$(awk -F '=' '/^font=/ {print $2; exit}' \
|
||||
"${XDG_CONFIG_HOME}/sakura/sakura.conf")"
|
||||
;;
|
||||
|
||||
"st")
|
||||
term_font="$(ps -o command= -p "$parent" | grep -F -- "-f")"
|
||||
|
||||
if [[ "$term_font" ]]; then
|
||||
term_font="${term_font/*-f/}"
|
||||
term_font="${term_font/ -*/}"
|
||||
|
||||
else
|
||||
# On Linux we can get the exact path to the running binary through the procfs
|
||||
# (in case `st` is launched from outside of $PATH) on other systems we just
|
||||
# have to guess and assume `st` is invoked from somewhere in the users $PATH
|
||||
[[ -L /proc/$parent/exe ]] && binary="/proc/$parent/exe" || binary="$(type -p st)"
|
||||
|
||||
# Grep the output of strings on the `st` binary for anything that looks vaguely
|
||||
# like a font definition. NOTE: There is a slight limitation in this approach.
|
||||
# Technically "Font Name" is a valid font. As it doesn't specify any font options
|
||||
# though it is hard to match it correctly amongst the rest of the noise.
|
||||
[[ -n "$binary" ]] && \
|
||||
term_font="$(strings "$binary" | grep -F -m 1 \
|
||||
-e "pixelsize=" \
|
||||
-e "size=" \
|
||||
-e "antialias=" \
|
||||
-e "autohint=")"
|
||||
fi
|
||||
|
||||
term_font="${term_font/xft:}"
|
||||
term_font="${term_font/:*}"
|
||||
;;
|
||||
|
||||
"terminology")
|
||||
term_font="$(strings "${XDG_CONFIG_HOME}/terminology/config/standard/base.cfg" | awk '/^font\.name$/{print a}{a=$0}')"
|
||||
term_font="$(strings "${XDG_CONFIG_HOME}/terminology/config/standard/base.cfg" |\
|
||||
awk '/^font\.name$/{print a}{a=$0}')"
|
||||
term_font="${term_font/.pcf}"
|
||||
term_font="${term_font/:*}"
|
||||
;;
|
||||
|
||||
"termite")
|
||||
[[ -f "${XDG_CONFIG_HOME}/termite/config" ]] && termite_config="${XDG_CONFIG_HOME}/termite/config"
|
||||
term_font="$(awk -F '= ' '/\[options\]/ {opt=1} /^font/ {if(opt==1) a=$2; opt=0} END{print a}' "/etc/xdg/termite/config" "$termite_config")"
|
||||
[[ -f "${XDG_CONFIG_HOME}/termite/config" ]] && \
|
||||
termite_config="${XDG_CONFIG_HOME}/termite/config"
|
||||
|
||||
term_font="$(awk -F '= ' '/\[options\]/ {
|
||||
opt=1
|
||||
}
|
||||
/^\s*font/ {
|
||||
if(opt==1) a=$2;
|
||||
opt=0
|
||||
} END {print a}' "/etc/xdg/termite/config" \
|
||||
"$termite_config")"
|
||||
;;
|
||||
|
||||
"urxvt" | "urxvtd" | "rxvt-unicode" | "xterm")
|
||||
term_font="$(grep -i -F "${term/d}*font" < <(xrdb -query))"
|
||||
term_font="${term_font/*font:}"
|
||||
xrdb="$(xrdb -query)"
|
||||
term_font="$(grep -im 1 -e "^${term/d}"'\**\.*font' -e '^\*font' <<< "$xrdb")"
|
||||
term_font="${term_font/*"*font:"}"
|
||||
term_font="${term_font/*".font:"}"
|
||||
term_font="${term_font/*"*.font:"}"
|
||||
term_font="$(trim "$term_font")"
|
||||
|
||||
[[ -z "$term_font" && "$term" == "xterm" ]] && \
|
||||
term_font="$(grep '^XTerm.vt100.faceName' <<< "$xrdb")"
|
||||
|
||||
term_font="$(trim "${term_font/*"faceName:"}")"
|
||||
|
||||
# xft: isn't required at the beginning so we prepend it if it's missing
|
||||
[[ "${term_font:0:1}" != "-" && \
|
||||
"${term_font:0:4}" != "xft:" ]] && \
|
||||
term_font="xft:$term_font"
|
||||
|
||||
# Xresources has two different font formats, this checks which
|
||||
# one is in use and formats it accordingly.
|
||||
case "$term_font" in
|
||||
|
@ -156,12 +386,23 @@ get_term_font() {
|
|||
term_font="${term_font/:*}"
|
||||
;;
|
||||
|
||||
"-"*) term_font="$(awk -F '\\-' '{printf $3}' <<< "$term_font")" ;;
|
||||
"-"*)
|
||||
IFS=- read -r _ _ term_font _ <<< "$term_font"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
"xfce4-terminal")
|
||||
term_font="$(awk -F '=' '/^FontName/ {a=$2} END{print a}' "${XDG_CONFIG_HOME}/xfce4/terminal/terminalrc")"
|
||||
term_font="$(awk -F '=' '/^FontName/{a=$2}/^FontUseSystem=TRUE/{a=$0} END {print a}' \
|
||||
"${XDG_CONFIG_HOME}/xfce4/terminal/terminalrc")"
|
||||
|
||||
[[ "$term_font" == "FontUseSystem=TRUE" ]] && \
|
||||
term_font="$(gsettings get org.gnome.desktop.interface monospace-font-name)"
|
||||
|
||||
term_font="$(trim_quotes "$term_font")"
|
||||
|
||||
# Default fallback font hardcoded in terminal-preferences.c
|
||||
[[ -z "$term_font" ]] && term_font="Monospace 12"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ RUN \
|
|||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
curl \
|
||||
git \
|
||||
zsh \
|
||||
zsh=5.0.2-3ubuntu6.2 \
|
||||
mercurial \
|
||||
subversion \
|
||||
golang \
|
||||
|
|
|
@ -6,7 +6,7 @@ RUN \
|
|||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
curl \
|
||||
git \
|
||||
zsh \
|
||||
zsh=5.1.1-1ubuntu2.2 \
|
||||
mercurial \
|
||||
subversion \
|
||||
golang \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM ubuntu:17.04
|
||||
FROM ubuntu:17.10
|
||||
|
||||
RUN \
|
||||
apt-get update && \
|
||||
|
@ -6,7 +6,7 @@ RUN \
|
|||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
curl \
|
||||
git \
|
||||
zsh \
|
||||
zsh=5.2-5ubuntu1.2 \
|
||||
mercurial \
|
||||
subversion \
|
||||
golang \
|
||||
|
|
40
docker/base-5.3.1/Dockerfile
Normal file
40
docker/base-5.3.1/Dockerfile
Normal file
|
@ -0,0 +1,40 @@
|
|||
FROM debian:stretch
|
||||
|
||||
# We switched here to debian, as there seems no ZSH 5.3 in ubuntu.
|
||||
|
||||
RUN \
|
||||
apt-get update && \
|
||||
echo 'golang-go golang-go/dashboard boolean false' | debconf-set-selections && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
curl \
|
||||
git \
|
||||
zsh=5.3.1-4+b2 \
|
||||
mercurial \
|
||||
subversion \
|
||||
golang \
|
||||
jq \
|
||||
nodejs \
|
||||
ruby \
|
||||
python \
|
||||
python-virtualenv \
|
||||
sudo \
|
||||
locales
|
||||
|
||||
RUN adduser --shell /bin/zsh --gecos 'fred' --disabled-password fred
|
||||
# Locale generation is different in debian. We need to enable en_US
|
||||
# locale and then regenerate locales.
|
||||
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
|
||||
RUN locale-gen "en_US.UTF-8"
|
||||
|
||||
COPY docker/fred-sudoers /etc/sudoers.d/fred
|
||||
|
||||
USER fred
|
||||
WORKDIR /home/fred
|
||||
ENV LANG=en_US.UTF-8
|
||||
ENV TERM=xterm-256color
|
||||
ENV DEFAULT_USER=fred
|
||||
ENV POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
|
||||
|
||||
RUN touch .zshrc
|
||||
|
||||
CMD ["/bin/zsh", "-l"]
|
35
docker/base-5.4.2/Dockerfile
Normal file
35
docker/base-5.4.2/Dockerfile
Normal file
|
@ -0,0 +1,35 @@
|
|||
FROM ubuntu:18.04
|
||||
|
||||
RUN \
|
||||
apt-get update && \
|
||||
echo 'golang-go golang-go/dashboard boolean false' | debconf-set-selections && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
curl \
|
||||
git \
|
||||
zsh=5.4.2-3ubuntu3 \
|
||||
mercurial \
|
||||
subversion \
|
||||
golang \
|
||||
jq \
|
||||
nodejs \
|
||||
ruby \
|
||||
python \
|
||||
python-virtualenv \
|
||||
sudo \
|
||||
locales
|
||||
|
||||
RUN adduser --shell /bin/zsh --gecos 'fred' --disabled-password fred
|
||||
RUN locale-gen "en_US.UTF-8"
|
||||
|
||||
COPY docker/fred-sudoers /etc/sudoers.d/fred
|
||||
|
||||
USER fred
|
||||
WORKDIR /home/fred
|
||||
ENV LANG=en_US.UTF-8
|
||||
ENV TERM=xterm-256color
|
||||
ENV DEFAULT_USER=fred
|
||||
ENV POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
|
||||
|
||||
RUN touch .zshrc
|
||||
|
||||
CMD ["/bin/zsh", "-l"]
|
35
docker/base-5.5.1/Dockerfile
Normal file
35
docker/base-5.5.1/Dockerfile
Normal file
|
@ -0,0 +1,35 @@
|
|||
FROM ubuntu:18.10
|
||||
|
||||
RUN \
|
||||
apt-get update && \
|
||||
echo 'golang-go golang-go/dashboard boolean false' | debconf-set-selections && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
curl \
|
||||
git \
|
||||
zsh=5.5.1-1ubuntu1 \
|
||||
mercurial \
|
||||
subversion \
|
||||
golang \
|
||||
jq \
|
||||
nodejs \
|
||||
ruby \
|
||||
python \
|
||||
python-virtualenv \
|
||||
sudo \
|
||||
locales
|
||||
|
||||
RUN adduser --shell /bin/zsh --gecos 'fred' --disabled-password fred
|
||||
RUN locale-gen "en_US.UTF-8"
|
||||
|
||||
COPY docker/fred-sudoers /etc/sudoers.d/fred
|
||||
|
||||
USER fred
|
||||
WORKDIR /home/fred
|
||||
ENV LANG=en_US.UTF-8
|
||||
ENV TERM=xterm-256color
|
||||
ENV DEFAULT_USER=fred
|
||||
ENV POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
|
||||
|
||||
RUN touch .zshrc
|
||||
|
||||
CMD ["/bin/zsh", "-l"]
|
|
@ -9,7 +9,7 @@ for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
|
|||
ln -nsf "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
|
||||
done
|
||||
|
||||
ln -s "${HOME}/p9k/powerlevel9k.zsh-theme" \
|
||||
ln -snf "${HOME}/p9k/powerlevel9k.zsh-theme" \
|
||||
"${HOME}/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup"
|
||||
|
||||
echo "zstyle ':prezto:module:prompt' theme 'powerlevel9k'" \
|
||||
|
|
7
docker/zshing/Dockerfile
Normal file
7
docker/zshing/Dockerfile
Normal file
|
@ -0,0 +1,7 @@
|
|||
ARG base
|
||||
FROM p9k:${base}
|
||||
|
||||
COPY docker/zshing/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
16
docker/zshing/install.zsh
Normal file
16
docker/zshing/install.zsh
Normal file
|
@ -0,0 +1,16 @@
|
|||
#!zsh
|
||||
|
||||
# install zshing https://github.com/zakariaGatter/zshing
|
||||
git clone https://github.com/zakariaGatter/zshing.git ~/.zshing/zshing
|
||||
|
||||
# Link P9K in zshing directory
|
||||
ln -nsf ~/p9k ~/.zshing/powerlevel9k
|
||||
|
||||
{
|
||||
echo
|
||||
echo 'ZSHING_PLUGINS=(
|
||||
"bhilburn/powerlevel9k"
|
||||
)'
|
||||
echo
|
||||
echo "source ~/.zshing/zshing/zshing.zsh"
|
||||
} >> ~/.zshrc
|
|
@ -6,6 +6,270 @@
|
|||
# https://github.com/bhilburn/powerlevel9k
|
||||
################################################################
|
||||
|
||||
typeset -gAh __P9K_COLORS
|
||||
# https://jonasjacek.github.io/colors/
|
||||
# use color names by default to allow dark/light themes to adjust colors based on names
|
||||
__P9K_COLORS=(
|
||||
black 000
|
||||
red 001
|
||||
green 002
|
||||
yellow 003
|
||||
blue 004
|
||||
magenta 005
|
||||
cyan 006
|
||||
white 007
|
||||
grey 008
|
||||
maroon 009
|
||||
lime 010
|
||||
olive 011
|
||||
navy 012
|
||||
fuchsia 013
|
||||
purple 013
|
||||
aqua 014
|
||||
teal 014
|
||||
silver 015
|
||||
grey0 016
|
||||
navyblue 017
|
||||
darkblue 018
|
||||
blue3 019
|
||||
blue3 020
|
||||
blue1 021
|
||||
darkgreen 022
|
||||
deepskyblue4 023
|
||||
deepskyblue4 024
|
||||
deepskyblue4 025
|
||||
dodgerblue3 026
|
||||
dodgerblue2 027
|
||||
green4 028
|
||||
springgreen4 029
|
||||
turquoise4 030
|
||||
deepskyblue3 031
|
||||
deepskyblue3 032
|
||||
dodgerblue1 033
|
||||
green3 034
|
||||
springgreen3 035
|
||||
darkcyan 036
|
||||
lightseagreen 037
|
||||
deepskyblue2 038
|
||||
deepskyblue1 039
|
||||
green3 040
|
||||
springgreen3 041
|
||||
springgreen2 042
|
||||
cyan3 043
|
||||
darkturquoise 044
|
||||
turquoise2 045
|
||||
green1 046
|
||||
springgreen2 047
|
||||
springgreen1 048
|
||||
mediumspringgreen 049
|
||||
cyan2 050
|
||||
cyan1 051
|
||||
darkred 052
|
||||
deeppink4 053
|
||||
purple4 054
|
||||
purple4 055
|
||||
purple3 056
|
||||
blueviolet 057
|
||||
orange4 058
|
||||
grey37 059
|
||||
mediumpurple4 060
|
||||
slateblue3 061
|
||||
slateblue3 062
|
||||
royalblue1 063
|
||||
chartreuse4 064
|
||||
darkseagreen4 065
|
||||
paleturquoise4 066
|
||||
steelblue 067
|
||||
steelblue3 068
|
||||
cornflowerblue 069
|
||||
chartreuse3 070
|
||||
darkseagreen4 071
|
||||
cadetblue 072
|
||||
cadetblue 073
|
||||
skyblue3 074
|
||||
steelblue1 075
|
||||
chartreuse3 076
|
||||
palegreen3 077
|
||||
seagreen3 078
|
||||
aquamarine3 079
|
||||
mediumturquoise 080
|
||||
steelblue1 081
|
||||
chartreuse2 082
|
||||
seagreen2 083
|
||||
seagreen1 084
|
||||
seagreen1 085
|
||||
aquamarine1 086
|
||||
darkslategray2 087
|
||||
darkred 088
|
||||
deeppink4 089
|
||||
darkmagenta 090
|
||||
darkmagenta 091
|
||||
darkviolet 092
|
||||
purple 093
|
||||
orange4 094
|
||||
lightpink4 095
|
||||
plum4 096
|
||||
mediumpurple3 097
|
||||
mediumpurple3 098
|
||||
slateblue1 099
|
||||
yellow4 100
|
||||
wheat4 101
|
||||
grey53 102
|
||||
lightslategrey 103
|
||||
mediumpurple 104
|
||||
lightslateblue 105
|
||||
yellow4 106
|
||||
darkolivegreen3 107
|
||||
darkseagreen 108
|
||||
lightskyblue3 109
|
||||
lightskyblue3 110
|
||||
skyblue2 111
|
||||
chartreuse2 112
|
||||
darkolivegreen3 113
|
||||
palegreen3 114
|
||||
darkseagreen3 115
|
||||
darkslategray3 116
|
||||
skyblue1 117
|
||||
chartreuse1 118
|
||||
lightgreen 119
|
||||
lightgreen 120
|
||||
palegreen1 121
|
||||
aquamarine1 122
|
||||
darkslategray1 123
|
||||
red3 124
|
||||
deeppink4 125
|
||||
mediumvioletred 126
|
||||
magenta3 127
|
||||
darkviolet 128
|
||||
purple 129
|
||||
darkorange3 130
|
||||
indianred 131
|
||||
hotpink3 132
|
||||
mediumorchid3 133
|
||||
mediumorchid 134
|
||||
mediumpurple2 135
|
||||
darkgoldenrod 136
|
||||
lightsalmon3 137
|
||||
rosybrown 138
|
||||
grey63 139
|
||||
mediumpurple2 140
|
||||
mediumpurple1 141
|
||||
gold3 142
|
||||
darkkhaki 143
|
||||
navajowhite3 144
|
||||
grey69 145
|
||||
lightsteelblue3 146
|
||||
lightsteelblue 147
|
||||
yellow3 148
|
||||
darkolivegreen3 149
|
||||
darkseagreen3 150
|
||||
darkseagreen2 151
|
||||
lightcyan3 152
|
||||
lightskyblue1 153
|
||||
greenyellow 154
|
||||
darkolivegreen2 155
|
||||
palegreen1 156
|
||||
darkseagreen2 157
|
||||
darkseagreen1 158
|
||||
paleturquoise1 159
|
||||
red3 160
|
||||
deeppink3 161
|
||||
deeppink3 162
|
||||
magenta3 163
|
||||
magenta3 164
|
||||
magenta2 165
|
||||
darkorange3 166
|
||||
indianred 167
|
||||
hotpink3 168
|
||||
hotpink2 169
|
||||
orchid 170
|
||||
mediumorchid1 171
|
||||
orange3 172
|
||||
lightsalmon3 173
|
||||
lightpink3 174
|
||||
pink3 175
|
||||
plum3 176
|
||||
violet 177
|
||||
gold3 178
|
||||
lightgoldenrod3 179
|
||||
tan 180
|
||||
mistyrose3 181
|
||||
thistle3 182
|
||||
plum2 183
|
||||
yellow3 184
|
||||
khaki3 185
|
||||
lightgoldenrod2 186
|
||||
lightyellow3 187
|
||||
grey84 188
|
||||
lightsteelblue1 189
|
||||
yellow2 190
|
||||
darkolivegreen1 191
|
||||
darkolivegreen1 192
|
||||
darkseagreen1 193
|
||||
honeydew2 194
|
||||
lightcyan1 195
|
||||
red1 196
|
||||
deeppink2 197
|
||||
deeppink1 198
|
||||
deeppink1 199
|
||||
magenta2 200
|
||||
magenta1 201
|
||||
orangered1 202
|
||||
indianred1 203
|
||||
indianred1 204
|
||||
hotpink 205
|
||||
hotpink 206
|
||||
mediumorchid1 207
|
||||
darkorange 208
|
||||
salmon1 209
|
||||
lightcoral 210
|
||||
palevioletred1 211
|
||||
orchid2 212
|
||||
orchid1 213
|
||||
orange1 214
|
||||
sandybrown 215
|
||||
lightsalmon1 216
|
||||
lightpink1 217
|
||||
pink1 218
|
||||
plum1 219
|
||||
gold1 220
|
||||
lightgoldenrod2 221
|
||||
lightgoldenrod2 222
|
||||
navajowhite1 223
|
||||
mistyrose1 224
|
||||
thistle1 225
|
||||
yellow1 226
|
||||
lightgoldenrod1 227
|
||||
khaki1 228
|
||||
wheat1 229
|
||||
cornsilk1 230
|
||||
grey100 231
|
||||
grey3 232
|
||||
grey7 233
|
||||
grey11 234
|
||||
grey15 235
|
||||
grey19 236
|
||||
grey23 237
|
||||
grey27 238
|
||||
grey30 239
|
||||
grey35 240
|
||||
grey39 241
|
||||
grey42 242
|
||||
grey46 243
|
||||
grey50 244
|
||||
grey54 245
|
||||
grey58 246
|
||||
grey62 247
|
||||
grey66 248
|
||||
grey70 249
|
||||
grey74 250
|
||||
grey78 251
|
||||
grey82 252
|
||||
grey85 253
|
||||
grey89 254
|
||||
grey93 255
|
||||
)
|
||||
|
||||
function termColors() {
|
||||
if [[ $POWERLEVEL9K_IGNORE_TERM_COLORS == true ]]; then
|
||||
return
|
||||
|
@ -28,339 +292,56 @@ function termColors() {
|
|||
|
||||
# get the proper color code if it does not exist as a name.
|
||||
function getColor() {
|
||||
# no need to check numerical values
|
||||
if [[ "$1" = <-> ]]; then
|
||||
if [[ "$1" = <8-15> ]]; then
|
||||
1=$(($1 - 8))
|
||||
fi
|
||||
else
|
||||
# named color added to parameter expansion print -P to test if the name exists in terminal
|
||||
local named="%K{$1}"
|
||||
# https://misc.flogisoft.com/bash/tip_colors_and_formatting
|
||||
local default="$'\033'\[49m"
|
||||
# http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html
|
||||
local quoted=$(printf "%q" $(print -P "$named"))
|
||||
if [[ $quoted = "$'\033'\[49m" && $1 != "black" ]]; then
|
||||
# color not found, so try to get the code
|
||||
# If Color is not numerical, try to get the color code.
|
||||
if [[ "$1" != <-> ]]; then
|
||||
1=$(getColorCode $1)
|
||||
fi
|
||||
fi
|
||||
echo -n "$1"
|
||||
}
|
||||
|
||||
# empty paramenter resets (stops) background color
|
||||
function backgroundColor() {
|
||||
if [[ -z $1 ]]; then
|
||||
echo -n "%k"
|
||||
else
|
||||
echo -n "%K{$(getColor $1)}"
|
||||
fi
|
||||
}
|
||||
|
||||
# empty paramenter resets (stops) foreground color
|
||||
function foregroundColor() {
|
||||
if [[ -z $1 ]]; then
|
||||
echo -n "%f"
|
||||
else
|
||||
echo -n "%F{$(getColor $1)}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get numerical color codes. That way we translate ANSI codes
|
||||
# into ZSH-Style color codes.
|
||||
function getColorCode() {
|
||||
# Check if given value is already numerical
|
||||
if [[ "$1" = <-> ]]; then
|
||||
# ANSI color codes distinguish between "foreground"
|
||||
# and "background" colors. We don't need to do that,
|
||||
# as ZSH uses a 256 color space anyway.
|
||||
if [[ "$1" = <8-15> ]]; then
|
||||
echo -n $(($1 - 8))
|
||||
else
|
||||
echo -n "$1"
|
||||
# Early exit: Check if given value is already numerical
|
||||
if [[ "$1" == <-> ]]; then
|
||||
# Pad color with zeroes
|
||||
echo -n "${(l:3::0:)1}"
|
||||
return
|
||||
fi
|
||||
else
|
||||
typeset -A codes
|
||||
# https://jonasjacek.github.io/colors/
|
||||
# use color names by default to allow dark/light themes to adjust colors based on names
|
||||
codes[black]=000
|
||||
codes[maroon]=001
|
||||
codes[green]=002
|
||||
codes[olive]=003
|
||||
codes[navy]=004
|
||||
codes[purple]=005
|
||||
codes[teal]=006
|
||||
codes[silver]=007
|
||||
codes[grey]=008
|
||||
codes[red]=009
|
||||
codes[lime]=010
|
||||
codes[yellow]=011
|
||||
codes[blue]=012
|
||||
codes[fuchsia]=013
|
||||
codes[aqua]=014
|
||||
codes[white]=015
|
||||
codes[grey0]=016
|
||||
codes[navyblue]=017
|
||||
codes[darkblue]=018
|
||||
codes[blue3]=019
|
||||
codes[blue3]=020
|
||||
codes[blue1]=021
|
||||
codes[darkgreen]=022
|
||||
codes[deepskyblue4]=023
|
||||
codes[deepskyblue4]=024
|
||||
codes[deepskyblue4]=025
|
||||
codes[dodgerblue3]=026
|
||||
codes[dodgerblue2]=027
|
||||
codes[green4]=028
|
||||
codes[springgreen4]=029
|
||||
codes[turquoise4]=030
|
||||
codes[deepskyblue3]=031
|
||||
codes[deepskyblue3]=032
|
||||
codes[dodgerblue1]=033
|
||||
codes[green3]=034
|
||||
codes[springgreen3]=035
|
||||
codes[darkcyan]=036
|
||||
codes[lightseagreen]=037
|
||||
codes[deepskyblue2]=038
|
||||
codes[deepskyblue1]=039
|
||||
codes[green3]=040
|
||||
codes[springgreen3]=041
|
||||
codes[springgreen2]=042
|
||||
codes[cyan3]=043
|
||||
codes[darkturquoise]=044
|
||||
codes[turquoise2]=045
|
||||
codes[green1]=046
|
||||
codes[springgreen2]=047
|
||||
codes[springgreen1]=048
|
||||
codes[mediumspringgreen]=049
|
||||
codes[cyan2]=050
|
||||
codes[cyan1]=051
|
||||
codes[darkred]=052
|
||||
codes[deeppink4]=053
|
||||
codes[purple4]=054
|
||||
codes[purple4]=055
|
||||
codes[purple3]=056
|
||||
codes[blueviolet]=057
|
||||
codes[orange4]=058
|
||||
codes[grey37]=059
|
||||
codes[mediumpurple4]=060
|
||||
codes[slateblue3]=061
|
||||
codes[slateblue3]=062
|
||||
codes[royalblue1]=063
|
||||
codes[chartreuse4]=064
|
||||
codes[darkseagreen4]=065
|
||||
codes[paleturquoise4]=066
|
||||
codes[steelblue]=067
|
||||
codes[steelblue3]=068
|
||||
codes[cornflowerblue]=069
|
||||
codes[chartreuse3]=070
|
||||
codes[darkseagreen4]=071
|
||||
codes[cadetblue]=072
|
||||
codes[cadetblue]=073
|
||||
codes[skyblue3]=074
|
||||
codes[steelblue1]=075
|
||||
codes[chartreuse3]=076
|
||||
codes[palegreen3]=077
|
||||
codes[seagreen3]=078
|
||||
codes[aquamarine3]=079
|
||||
codes[mediumturquoise]=080
|
||||
codes[steelblue1]=081
|
||||
codes[chartreuse2]=082
|
||||
codes[seagreen2]=083
|
||||
codes[seagreen1]=084
|
||||
codes[seagreen1]=085
|
||||
codes[aquamarine1]=086
|
||||
codes[darkslategray2]=087
|
||||
codes[darkred]=088
|
||||
codes[deeppink4]=089
|
||||
codes[darkmagenta]=090
|
||||
codes[darkmagenta]=091
|
||||
codes[darkviolet]=092
|
||||
codes[purple]=093
|
||||
codes[orange4]=094
|
||||
codes[lightpink4]=095
|
||||
codes[plum4]=096
|
||||
codes[mediumpurple3]=097
|
||||
codes[mediumpurple3]=098
|
||||
codes[slateblue1]=099
|
||||
codes[yellow4]=100
|
||||
codes[wheat4]=101
|
||||
codes[grey53]=102
|
||||
codes[lightslategrey]=103
|
||||
codes[mediumpurple]=104
|
||||
codes[lightslateblue]=105
|
||||
codes[yellow4]=106
|
||||
codes[darkolivegreen3]=107
|
||||
codes[darkseagreen]=108
|
||||
codes[lightskyblue3]=109
|
||||
codes[lightskyblue3]=110
|
||||
codes[skyblue2]=111
|
||||
codes[chartreuse2]=112
|
||||
codes[darkolivegreen3]=113
|
||||
codes[palegreen3]=114
|
||||
codes[darkseagreen3]=115
|
||||
codes[darkslategray3]=116
|
||||
codes[skyblue1]=117
|
||||
codes[chartreuse1]=118
|
||||
codes[lightgreen]=119
|
||||
codes[lightgreen]=120
|
||||
codes[palegreen1]=121
|
||||
codes[aquamarine1]=122
|
||||
codes[darkslategray1]=123
|
||||
codes[red3]=124
|
||||
codes[deeppink4]=125
|
||||
codes[mediumvioletred]=126
|
||||
codes[magenta3]=127
|
||||
codes[darkviolet]=128
|
||||
codes[purple]=129
|
||||
codes[darkorange3]=130
|
||||
codes[indianred]=131
|
||||
codes[hotpink3]=132
|
||||
codes[mediumorchid3]=133
|
||||
codes[mediumorchid]=134
|
||||
codes[mediumpurple2]=135
|
||||
codes[darkgoldenrod]=136
|
||||
codes[lightsalmon3]=137
|
||||
codes[rosybrown]=138
|
||||
codes[grey63]=139
|
||||
codes[mediumpurple2]=140
|
||||
codes[mediumpurple1]=141
|
||||
codes[gold3]=142
|
||||
codes[darkkhaki]=143
|
||||
codes[navajowhite3]=144
|
||||
codes[grey69]=145
|
||||
codes[lightsteelblue3]=146
|
||||
codes[lightsteelblue]=147
|
||||
codes[yellow3]=148
|
||||
codes[darkolivegreen3]=149
|
||||
codes[darkseagreen3]=150
|
||||
codes[darkseagreen2]=151
|
||||
codes[lightcyan3]=152
|
||||
codes[lightskyblue1]=153
|
||||
codes[greenyellow]=154
|
||||
codes[darkolivegreen2]=155
|
||||
codes[palegreen1]=156
|
||||
codes[darkseagreen2]=157
|
||||
codes[darkseagreen1]=158
|
||||
codes[paleturquoise1]=159
|
||||
codes[red3]=160
|
||||
codes[deeppink3]=161
|
||||
codes[deeppink3]=162
|
||||
codes[magenta3]=163
|
||||
codes[magenta3]=164
|
||||
codes[magenta2]=165
|
||||
codes[darkorange3]=166
|
||||
codes[indianred]=167
|
||||
codes[hotpink3]=168
|
||||
codes[hotpink2]=169
|
||||
codes[orchid]=170
|
||||
codes[mediumorchid1]=171
|
||||
codes[orange3]=172
|
||||
codes[lightsalmon3]=173
|
||||
codes[lightpink3]=174
|
||||
codes[pink3]=175
|
||||
codes[plum3]=176
|
||||
codes[violet]=177
|
||||
codes[gold3]=178
|
||||
codes[lightgoldenrod3]=179
|
||||
codes[tan]=180
|
||||
codes[mistyrose3]=181
|
||||
codes[thistle3]=182
|
||||
codes[plum2]=183
|
||||
codes[yellow3]=184
|
||||
codes[khaki3]=185
|
||||
codes[lightgoldenrod2]=186
|
||||
codes[lightyellow3]=187
|
||||
codes[grey84]=188
|
||||
codes[lightsteelblue1]=189
|
||||
codes[yellow2]=190
|
||||
codes[darkolivegreen1]=191
|
||||
codes[darkolivegreen1]=192
|
||||
codes[darkseagreen1]=193
|
||||
codes[honeydew2]=194
|
||||
codes[lightcyan1]=195
|
||||
codes[red1]=196
|
||||
codes[deeppink2]=197
|
||||
codes[deeppink1]=198
|
||||
codes[deeppink1]=199
|
||||
codes[magenta2]=200
|
||||
codes[magenta1]=201
|
||||
codes[orangered1]=202
|
||||
codes[indianred1]=203
|
||||
codes[indianred1]=204
|
||||
codes[hotpink]=205
|
||||
codes[hotpink]=206
|
||||
codes[mediumorchid1]=207
|
||||
codes[darkorange]=208
|
||||
codes[salmon1]=209
|
||||
codes[lightcoral]=210
|
||||
codes[palevioletred1]=211
|
||||
codes[orchid2]=212
|
||||
codes[orchid1]=213
|
||||
codes[orange1]=214
|
||||
codes[sandybrown]=215
|
||||
codes[lightsalmon1]=216
|
||||
codes[lightpink1]=217
|
||||
codes[pink1]=218
|
||||
codes[plum1]=219
|
||||
codes[gold1]=220
|
||||
codes[lightgoldenrod2]=221
|
||||
codes[lightgoldenrod2]=222
|
||||
codes[navajowhite1]=223
|
||||
codes[mistyrose1]=224
|
||||
codes[thistle1]=225
|
||||
codes[yellow1]=226
|
||||
codes[lightgoldenrod1]=227
|
||||
codes[khaki1]=228
|
||||
codes[wheat1]=229
|
||||
codes[cornsilk1]=230
|
||||
codes[grey100]=231
|
||||
codes[grey3]=232
|
||||
codes[grey7]=233
|
||||
codes[grey11]=234
|
||||
codes[grey15]=235
|
||||
codes[grey19]=236
|
||||
codes[grey23]=237
|
||||
codes[grey27]=238
|
||||
codes[grey30]=239
|
||||
codes[grey35]=240
|
||||
codes[grey39]=241
|
||||
codes[grey42]=242
|
||||
codes[grey46]=243
|
||||
codes[grey50]=244
|
||||
codes[grey54]=245
|
||||
codes[grey58]=246
|
||||
codes[grey62]=247
|
||||
codes[grey66]=248
|
||||
codes[grey70]=249
|
||||
codes[grey74]=250
|
||||
codes[grey78]=251
|
||||
codes[grey82]=252
|
||||
codes[grey85]=253
|
||||
codes[grey89]=254
|
||||
codes[grey93]=255
|
||||
|
||||
local colorName="${1}"
|
||||
# Check if value is none with any case.
|
||||
if [[ "${(L)colorName}" == "none" ]]; then
|
||||
echo -n 'none'
|
||||
elif [[ "${colorName}" == "foreground" ]]; then
|
||||
# for testing purposes in terminal
|
||||
if [[ "$1" == "foreground" ]]; then
|
||||
# call via `getColorCode foreground`
|
||||
for i in "${(k@)codes}"; do
|
||||
print -P "$(foregroundColor $i)$(getColor $i) - $i$(foregroundColor)"
|
||||
for i in "${(k@)__P9K_COLORS}"; do
|
||||
print -P "$(foregroundColor $i)$(getColor $i) - $i%f"
|
||||
done
|
||||
elif [[ "$1" == "background" ]]; then
|
||||
elif [[ "${colorName}" == "background" ]]; then
|
||||
# call via `getColorCode background`
|
||||
for i in "${(k@)codes}"; do
|
||||
print -P "$(backgroundColor $i)$(getColor $i) - $i$(backgroundColor)"
|
||||
for i in "${(k@)__P9K_COLORS}"; do
|
||||
print -P "$(backgroundColor $i)$(getColor $i) - $i%k"
|
||||
done
|
||||
else
|
||||
#[[ -n "$1" ]] bg="%K{$1}" || bg="%k"
|
||||
# Strip eventual "bg-" prefixes
|
||||
1=${1#bg-}
|
||||
colorName=${colorName#bg-}
|
||||
# Strip eventual "fg-" prefixes
|
||||
1=${1#fg-}
|
||||
colorName=${colorName#fg-}
|
||||
# Strip eventual "br" prefixes ("bright" colors)
|
||||
1=${1#br}
|
||||
echo -n $codes[$1]
|
||||
fi
|
||||
colorName=${colorName#br}
|
||||
echo -n $__P9K_COLORS[$colorName]
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -48,24 +48,24 @@ case $POWERLEVEL9K_MODE in
|
|||
FREEBSD_ICON $'\U1F608 ' # 😈
|
||||
ANDROID_ICON $'\uE270' #
|
||||
LINUX_ICON $'\uE271' #
|
||||
LINUX_ARCH_ICON 'Arc'
|
||||
LINUX_DEBIAN_ICON 'Deb'
|
||||
LINUX_UBUNTU_ICON 'Ubu'
|
||||
LINUX_CENTOS_ICON 'Cen'
|
||||
LINUX_COREOS_ICON 'Cor'
|
||||
LINUX_ELEMENTARY_ICON 'Elm'
|
||||
LINUX_MINT_ICON 'LMi'
|
||||
LINUX_FEDORA_ICON 'Fed'
|
||||
LINUX_GENTOO_ICON 'Gen'
|
||||
LINUX_MAGEIA_ICON 'Mag'
|
||||
LINUX_NIXOS_ICON 'Nix'
|
||||
LINUX_MANJARO_ICON 'Man'
|
||||
LINUX_DEVUAN_ICON 'Dev'
|
||||
LINUX_ALPINE_ICON 'Alp'
|
||||
LINUX_AOSC_ICON 'Aos'
|
||||
LINUX_OPENSUSE_ICON 'OSu'
|
||||
LINUX_SABAYON_ICON 'Sab'
|
||||
LINUX_SLACKWARE_ICON 'Sla'
|
||||
LINUX_ARCH_ICON $'\uE271' #
|
||||
LINUX_DEBIAN_ICON $'\uE271' #
|
||||
LINUX_UBUNTU_ICON $'\uE271' #
|
||||
LINUX_CENTOS_ICON $'\uE271' #
|
||||
LINUX_COREOS_ICON $'\uE271' #
|
||||
LINUX_ELEMENTARY_ICON $'\uE271' #
|
||||
LINUX_MINT_ICON $'\uE271' #
|
||||
LINUX_FEDORA_ICON $'\uE271' #
|
||||
LINUX_GENTOO_ICON $'\uE271' #
|
||||
LINUX_MAGEIA_ICON $'\uE271' #
|
||||
LINUX_NIXOS_ICON $'\uE271' #
|
||||
LINUX_MANJARO_ICON $'\uE271' #
|
||||
LINUX_DEVUAN_ICON $'\uE271' #
|
||||
LINUX_ALPINE_ICON $'\uE271' #
|
||||
LINUX_AOSC_ICON $'\uE271' #
|
||||
LINUX_OPENSUSE_ICON $'\uE271' #
|
||||
LINUX_SABAYON_ICON $'\uE271' #
|
||||
LINUX_SLACKWARE_ICON $'\uE271' #
|
||||
SUNOS_ICON $'\U1F31E ' # 🌞
|
||||
HOME_ICON $'\uE12C' #
|
||||
HOME_SUB_ICON $'\uE18D' #
|
||||
|
@ -148,24 +148,24 @@ case $POWERLEVEL9K_MODE in
|
|||
FREEBSD_ICON $'\U1F608 ' # 😈
|
||||
ANDROID_ICON $'\uE17B' #
|
||||
LINUX_ICON $'\uF17C' #
|
||||
LINUX_ARCH_ICON 'Arc'
|
||||
LINUX_DEBIAN_ICON 'Deb'
|
||||
LINUX_UBUNTU_ICON 'Ubu'
|
||||
LINUX_CENTOS_ICON 'Cen'
|
||||
LINUX_COREOS_ICON 'Cor'
|
||||
LINUX_ELEMENTARY_ICON 'Elm'
|
||||
LINUX_MINT_ICON 'LMi'
|
||||
LINUX_FEDORA_ICON 'Fed'
|
||||
LINUX_GENTOO_ICON 'Gen'
|
||||
LINUX_MAGEIA_ICON 'Mag'
|
||||
LINUX_NIXOS_ICON 'Nix'
|
||||
LINUX_MANJARO_ICON 'Man'
|
||||
LINUX_DEVUAN_ICON 'Dev'
|
||||
LINUX_ALPINE_ICON 'Alp'
|
||||
LINUX_AOSC_ICON 'Aos'
|
||||
LINUX_OPENSUSE_ICON 'OSu'
|
||||
LINUX_SABAYON_ICON 'Sab'
|
||||
LINUX_SLACKWARE_ICON 'Sla'
|
||||
LINUX_ARCH_ICON $'\uF17C' #
|
||||
LINUX_DEBIAN_ICON $'\uF17C' #
|
||||
LINUX_UBUNTU_ICON $'\uF17C' #
|
||||
LINUX_CENTOS_ICON $'\uF17C' #
|
||||
LINUX_COREOS_ICON $'\uF17C' #
|
||||
LINUX_ELEMENTARY_ICON $'\uF17C' #
|
||||
LINUX_MINT_ICON $'\uF17C' #
|
||||
LINUX_FEDORA_ICON $'\uF17C' #
|
||||
LINUX_GENTOO_ICON $'\uF17C' #
|
||||
LINUX_MAGEIA_ICON $'\uF17C' #
|
||||
LINUX_NIXOS_ICON $'\uF17C' #
|
||||
LINUX_MANJARO_ICON $'\uF17C' #
|
||||
LINUX_DEVUAN_ICON $'\uF17C' #
|
||||
LINUX_ALPINE_ICON $'\uF17C' #
|
||||
LINUX_AOSC_ICON $'\uF17C' #
|
||||
LINUX_OPENSUSE_ICON $'\uF17C' #
|
||||
LINUX_SABAYON_ICON $'\uF17C' #
|
||||
LINUX_SLACKWARE_ICON $'\uF17C' #
|
||||
SUNOS_ICON $'\uF185 ' #
|
||||
HOME_ICON $'\uF015' #
|
||||
HOME_SUB_ICON $'\uF07C' #
|
||||
|
@ -250,24 +250,24 @@ case $POWERLEVEL9K_MODE in
|
|||
APPLE_ICON '\u'$CODEPOINT_OF_AWESOME_APPLE #
|
||||
FREEBSD_ICON $'\U1F608 ' # 😈
|
||||
LINUX_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_ARCH_ICON 'Arc'
|
||||
LINUX_DEBIAN_ICON 'Deb'
|
||||
LINUX_UBUNTU_ICON 'Ubu'
|
||||
LINUX_CENTOS_ICON 'Cen'
|
||||
LINUX_COREOS_ICON 'Cor'
|
||||
LINUX_ELEMENTARY_ICON 'Elm'
|
||||
LINUX_MINT_ICON 'LMi'
|
||||
LINUX_FEDORA_ICON 'Fed'
|
||||
LINUX_GENTOO_ICON 'Gen'
|
||||
LINUX_MAGEIA_ICON 'Mag'
|
||||
LINUX_NIXOS_ICON 'Nix'
|
||||
LINUX_MANJARO_ICON 'Man'
|
||||
LINUX_DEVUAN_ICON 'Dev'
|
||||
LINUX_ALPINE_ICON 'Alp'
|
||||
LINUX_AOSC_ICON 'Aos'
|
||||
LINUX_OPENSUSE_ICON 'OSu'
|
||||
LINUX_SABAYON_ICON 'Sab'
|
||||
LINUX_SLACKWARE_ICON 'Sla'
|
||||
LINUX_ARCH_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_DEBIAN_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_UBUNTU_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_CENTOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_COREOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_ELEMENTARY_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_MINT_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_FEDORA_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_GENTOO_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_MAGEIA_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_NIXOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_MANJARO_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_DEVUAN_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_ALPINE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_AOSC_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_OPENSUSE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_SABAYON_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
LINUX_SLACKWARE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX #
|
||||
SUNOS_ICON '\u'$CODEPOINT_OF_AWESOME_SUN_O' ' #
|
||||
HOME_ICON '\u'$CODEPOINT_OF_AWESOME_HOME #
|
||||
HOME_SUB_ICON '\u'$CODEPOINT_OF_AWESOME_FOLDER_OPEN #
|
||||
|
|
|
@ -111,45 +111,54 @@ CURRENT_BG='NONE'
|
|||
set_default last_left_element_index 1
|
||||
set_default POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS " "
|
||||
left_prompt_segment() {
|
||||
local segment_name="${1}"
|
||||
local current_index=$2
|
||||
# Check if the segment should be joined with the previous one
|
||||
local joined
|
||||
segmentShouldBeJoined $current_index $last_left_element_index "$POWERLEVEL9K_LEFT_PROMPT_ELEMENTS" && joined=true || joined=false
|
||||
|
||||
# Colors
|
||||
local backgroundColor="${3}"
|
||||
local foregroundColor="${4}"
|
||||
|
||||
# Overwrite given background-color by user defined variable for this segment.
|
||||
local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND
|
||||
local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_BACKGROUND
|
||||
local BG_COLOR_MODIFIER=${(P)BACKGROUND_USER_VARIABLE}
|
||||
[[ -n $BG_COLOR_MODIFIER ]] && 3="$BG_COLOR_MODIFIER"
|
||||
[[ -n $BG_COLOR_MODIFIER ]] && backgroundColor="$BG_COLOR_MODIFIER"
|
||||
|
||||
# Overwrite given foreground-color by user defined variable for this segment.
|
||||
local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_FOREGROUND
|
||||
local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_FOREGROUND
|
||||
local FG_COLOR_MODIFIER=${(P)FOREGROUND_USER_VARIABLE}
|
||||
[[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER"
|
||||
[[ -n $FG_COLOR_MODIFIER ]] && foregroundColor="$FG_COLOR_MODIFIER"
|
||||
|
||||
local bg fg
|
||||
[[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="$(backgroundColor)"
|
||||
[[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="$(foregroundColor)"
|
||||
# Get color codes here to save some calls later on
|
||||
backgroundColor="$(getColorCode ${backgroundColor})"
|
||||
foregroundColor="$(getColorCode ${foregroundColor})"
|
||||
|
||||
if [[ $CURRENT_BG != 'NONE' ]] && ! isSameColor "$3" "$CURRENT_BG"; then
|
||||
echo -n "$bg%F{$CURRENT_BG}"
|
||||
local background foreground
|
||||
[[ -n "${backgroundColor}" ]] && background="$(backgroundColor ${backgroundColor})" || background="%k"
|
||||
[[ -n "${foregroundColor}" ]] && foreground="$(foregroundColor ${foregroundColor})" || foreground="%f"
|
||||
|
||||
if [[ $CURRENT_BG != 'NONE' ]] && ! isSameColor "${backgroundColor}" "$CURRENT_BG"; then
|
||||
echo -n "${background}%F{$CURRENT_BG}"
|
||||
if [[ $joined == false ]]; then
|
||||
# Middle segment
|
||||
echo -n "$(print_icon 'LEFT_SEGMENT_SEPARATOR')$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS"
|
||||
fi
|
||||
elif isSameColor "$CURRENT_BG" "$3"; then
|
||||
elif isSameColor "$CURRENT_BG" "${backgroundColor}"; then
|
||||
# Middle segment with same color as previous segment
|
||||
# We take the current foreground color as color for our
|
||||
# subsegment (or the default color). This should have
|
||||
# enough contrast.
|
||||
local complement
|
||||
[[ -n "$4" ]] && complement="$fg" || complement="$(foregroundColor $DEFAULT_COLOR)"
|
||||
echo -n "${bg}${complement}"
|
||||
[[ -n "${foregroundColor}" ]] && complement="${foreground}" || complement="$(foregroundColor $DEFAULT_COLOR)"
|
||||
echo -n "${background}${complement}"
|
||||
if [[ $joined == false ]]; then
|
||||
echo -n "$(print_icon 'LEFT_SUBSEGMENT_SEPARATOR')$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS"
|
||||
fi
|
||||
else
|
||||
# First segment
|
||||
echo -n "${bg}$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS"
|
||||
echo -n "${background}$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS"
|
||||
fi
|
||||
|
||||
local visual_identifier
|
||||
|
@ -161,26 +170,26 @@ left_prompt_segment() {
|
|||
# we need to color both the visual identifier and the whitespace.
|
||||
[[ -n "$5" ]] && visual_identifier="$visual_identifier "
|
||||
# Allow users to overwrite the color for the visual identifier only.
|
||||
local visual_identifier_color_variable=POWERLEVEL9K_${(U)1#prompt_}_VISUAL_IDENTIFIER_COLOR
|
||||
set_default $visual_identifier_color_variable $4
|
||||
visual_identifier="%F{${(P)visual_identifier_color_variable}%}$visual_identifier"
|
||||
local visual_identifier_color_variable=POWERLEVEL9K_${(U)${segment_name}#prompt_}_VISUAL_IDENTIFIER_COLOR
|
||||
set_default $visual_identifier_color_variable "${foregroundColor}"
|
||||
visual_identifier="$(foregroundColor ${(P)visual_identifier_color_variable})${visual_identifier}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Print the visual identifier
|
||||
echo -n "${visual_identifier}"
|
||||
# Print the content of the segment, if there is any
|
||||
[[ -n "$5" ]] && echo -n "${fg}${5}"
|
||||
[[ -n "$5" ]] && echo -n "${foreground}${5}"
|
||||
echo -n "${POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS}"
|
||||
|
||||
CURRENT_BG=$3
|
||||
CURRENT_BG="${backgroundColor}"
|
||||
last_left_element_index=$current_index
|
||||
}
|
||||
|
||||
# End the left prompt, closes the final segment.
|
||||
left_prompt_end() {
|
||||
if [[ -n $CURRENT_BG ]]; then
|
||||
echo -n "%k%F{$CURRENT_BG}$(print_icon 'LEFT_SEGMENT_SEPARATOR')"
|
||||
echo -n "%k$(foregroundColor ${CURRENT_BG})$(print_icon 'LEFT_SEGMENT_SEPARATOR')"
|
||||
else
|
||||
echo -n "%k"
|
||||
fi
|
||||
|
@ -203,25 +212,34 @@ CURRENT_RIGHT_BG='NONE'
|
|||
set_default last_right_element_index 1
|
||||
set_default POWERLEVEL9K_WHITESPACE_BETWEEN_RIGHT_SEGMENTS " "
|
||||
right_prompt_segment() {
|
||||
local segment_name="${1}"
|
||||
local current_index=$2
|
||||
|
||||
# Check if the segment should be joined with the previous one
|
||||
local joined
|
||||
segmentShouldBeJoined $current_index $last_right_element_index "$POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS" && joined=true || joined=false
|
||||
|
||||
# Colors
|
||||
local backgroundColor="${3}"
|
||||
local foregroundColor="${4}"
|
||||
|
||||
# Overwrite given background-color by user defined variable for this segment.
|
||||
local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_BACKGROUND
|
||||
local BACKGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_BACKGROUND
|
||||
local BG_COLOR_MODIFIER=${(P)BACKGROUND_USER_VARIABLE}
|
||||
[[ -n $BG_COLOR_MODIFIER ]] && 3="$BG_COLOR_MODIFIER"
|
||||
[[ -n $BG_COLOR_MODIFIER ]] && backgroundColor="$BG_COLOR_MODIFIER"
|
||||
|
||||
# Overwrite given foreground-color by user defined variable for this segment.
|
||||
local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)1#prompt_}_FOREGROUND
|
||||
local FOREGROUND_USER_VARIABLE=POWERLEVEL9K_${(U)${segment_name}#prompt_}_FOREGROUND
|
||||
local FG_COLOR_MODIFIER=${(P)FOREGROUND_USER_VARIABLE}
|
||||
[[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER"
|
||||
[[ -n $FG_COLOR_MODIFIER ]] && foregroundColor="$FG_COLOR_MODIFIER"
|
||||
|
||||
local bg fg
|
||||
[[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="$(backgroundColor)"
|
||||
[[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="$(foregroundColor)"
|
||||
# Get color codes here to save some calls later on
|
||||
backgroundColor="$(getColorCode ${backgroundColor})"
|
||||
foregroundColor="$(getColorCode ${foregroundColor})"
|
||||
|
||||
local background foreground
|
||||
[[ -n "${backgroundColor}" ]] && background="$(backgroundColor ${backgroundColor})" || background="%k"
|
||||
[[ -n "${foregroundColor}" ]] && foreground="$(foregroundColor ${foregroundColor})" || foreground="%f"
|
||||
|
||||
# If CURRENT_RIGHT_BG is "NONE", we are the first right segment.
|
||||
|
||||
|
@ -231,17 +249,17 @@ right_prompt_segment() {
|
|||
fi
|
||||
|
||||
if [[ $joined == false ]] || [[ "$CURRENT_RIGHT_BG" == "NONE" ]]; then
|
||||
if isSameColor "$CURRENT_RIGHT_BG" "$3"; then
|
||||
if isSameColor "$CURRENT_RIGHT_BG" "${backgroundColor}"; then
|
||||
# Middle segment with same color as previous segment
|
||||
# We take the current foreground color as color for our
|
||||
# subsegment (or the default color). This should have
|
||||
# enough contrast.
|
||||
local complement
|
||||
[[ -n "$4" ]] && complement="$fg" || complement="$(foregroundColor $DEFAULT_COLOR)"
|
||||
[[ -n "${foregroundColor}" ]] && complement="${foreground}" || complement="$(foregroundColor $DEFAULT_COLOR)"
|
||||
echo -n "$complement$(print_icon 'RIGHT_SUBSEGMENT_SEPARATOR')%f"
|
||||
else
|
||||
# Use the new BG color for the foreground with separator
|
||||
echo -n "$(foregroundColor $3)$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f"
|
||||
# Use the new Background Color as the foreground of the segment separator
|
||||
echo -n "$(foregroundColor ${backgroundColor})$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -254,13 +272,13 @@ right_prompt_segment() {
|
|||
# we need to color both the visual identifier and the whitespace.
|
||||
[[ -n "$5" ]] && visual_identifier=" $visual_identifier"
|
||||
# Allow users to overwrite the color for the visual identifier only.
|
||||
local visual_identifier_color_variable=POWERLEVEL9K_${(U)1#prompt_}_VISUAL_IDENTIFIER_COLOR
|
||||
set_default $visual_identifier_color_variable $4
|
||||
visual_identifier="%F{${(P)visual_identifier_color_variable}%}$visual_identifier"
|
||||
local visual_identifier_color_variable=POWERLEVEL9K_${(U)${segment_name}#prompt_}_VISUAL_IDENTIFIER_COLOR
|
||||
set_default $visual_identifier_color_variable "${foregroundColor}"
|
||||
visual_identifier="$(foregroundColor ${(P)visual_identifier_color_variable})${visual_identifier}"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -n "${bg}${fg}"
|
||||
echo -n "${background}${foreground}"
|
||||
|
||||
# Print whitespace only if segment is not joined or first right segment
|
||||
[[ $joined == false ]] || [[ "$CURRENT_RIGHT_BG" == "NONE" ]] && echo -n "${POWERLEVEL9K_WHITESPACE_BETWEEN_RIGHT_SEGMENTS}"
|
||||
|
@ -270,7 +288,7 @@ right_prompt_segment() {
|
|||
# Print the visual identifier
|
||||
echo -n "${visual_identifier}"
|
||||
|
||||
CURRENT_RIGHT_BG=$3
|
||||
CURRENT_RIGHT_BG="${backgroundColor}"
|
||||
last_right_element_index=$current_index
|
||||
}
|
||||
|
||||
|
@ -278,11 +296,6 @@ right_prompt_segment() {
|
|||
# Prompt Segment Definitions
|
||||
################################################################
|
||||
|
||||
# The `CURRENT_BG` variable is used to remember what the last BG color used was
|
||||
# when building the left-hand prompt. Because the RPROMPT is created from
|
||||
# right-left but reads the opposite, this isn't necessary for the other side.
|
||||
CURRENT_BG='NONE'
|
||||
|
||||
################################################################
|
||||
# Anaconda Environment
|
||||
prompt_anaconda() {
|
||||
|
@ -409,12 +422,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 +460,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 +482,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
|
||||
|
@ -623,12 +637,12 @@ prompt_context() {
|
|||
if [[ $(print -P "%#") == '#' ]]; then
|
||||
current_state="ROOT"
|
||||
elif [[ -n "$SSH_CLIENT" || -n "$SSH_TTY" ]]; then
|
||||
if sudo -n true 2>/dev/null; then
|
||||
if [[ -n "$SUDO_COMMAND" ]]; then
|
||||
current_state="REMOTE_SUDO"
|
||||
else
|
||||
current_state="REMOTE"
|
||||
fi
|
||||
elif sudo -n true 2>/dev/null; then
|
||||
elif [[ -n "$SUDO_COMMAND" ]]; then
|
||||
current_state="SUDO"
|
||||
fi
|
||||
|
||||
|
@ -651,7 +665,7 @@ prompt_user() {
|
|||
"FOREGROUND_COLOR" "yellow"
|
||||
"VISUAL_IDENTIFIER" "ROOT_ICON"
|
||||
)
|
||||
elif sudo -n true 2>/dev/null; then
|
||||
elif [[ -n "$SUDO_COMMAND" ]]; then
|
||||
user_state=(
|
||||
"STATE" "SUDO"
|
||||
"CONTENT" "${POWERLEVEL9K_USER_TEMPLATE}"
|
||||
|
@ -702,11 +716,13 @@ prompt_host() {
|
|||
# The 'custom` prompt provides a way for users to invoke commands and display
|
||||
# the output in a segment.
|
||||
prompt_custom() {
|
||||
local command=POWERLEVEL9K_CUSTOM_$3:u
|
||||
local segment_name="${3:u}"
|
||||
# Get content of custom segment
|
||||
local command="POWERLEVEL9K_CUSTOM_${segment_name}"
|
||||
local segment_content="$(eval ${(P)command})"
|
||||
|
||||
if [[ -n $segment_content ]]; then
|
||||
"$1_prompt_segment" "${0}_${3:u}" "$2" $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$segment_content"
|
||||
"$1_prompt_segment" "${0}_${3:u}" "$2" $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$segment_content" "CUSTOM_${segment_name}_ICON"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -1055,18 +1071,14 @@ prompt_history() {
|
|||
################################################################
|
||||
# Detection for virtualization (systemd based systems only)
|
||||
prompt_detect_virt() {
|
||||
if ! command -v systemd-detect-virt > /dev/null; then
|
||||
return
|
||||
fi
|
||||
local virt=$(systemd-detect-virt)
|
||||
local virt=$(systemd-detect-virt 2> /dev/null)
|
||||
if [[ "$virt" == "none" ]]; then
|
||||
if [[ "$(ls -di / | grep -o 2)" != "2" ]]; then
|
||||
virt="chroot"
|
||||
"$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "yellow" "$virt"
|
||||
else
|
||||
;
|
||||
fi
|
||||
else
|
||||
fi
|
||||
|
||||
if [[ -n "${virt}" ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "yellow" "$virt"
|
||||
fi
|
||||
}
|
||||
|
@ -1101,18 +1113,20 @@ prompt_ip() {
|
|||
else
|
||||
if defined POWERLEVEL9K_IP_INTERFACE; then
|
||||
# Get the IP address of the specified interface.
|
||||
ip=$(ip -4 a show "$POWERLEVEL9K_IP_INTERFACE" | grep -o "inet\s*[0-9.]*" | grep -o "[0-9.]*")
|
||||
ip=$(ip -4 a show "$POWERLEVEL9K_IP_INTERFACE" | grep -o "inet\s*[0-9.]*" | grep -o -E "[0-9.]+")
|
||||
else
|
||||
local interfaces callback
|
||||
# Get all network interface names that are up
|
||||
interfaces=$(ip link ls up | grep -o -E ":\s+[a-z0-9]+:" | grep -v "lo" | grep -o "[a-z0-9]*")
|
||||
callback='ip -4 a show $item | grep -o "inet\s*[0-9.]*" | grep -o "[0-9.]*"'
|
||||
interfaces=$(ip link ls up | grep -o -E ":\s+[a-z0-9]+:" | grep -v "lo" | grep -o -E "[a-z0-9]+")
|
||||
callback='ip -4 a show $item | grep -o "inet\s*[0-9.]*" | grep -o -E "[0-9.]+"'
|
||||
|
||||
ip=$(getRelevantItem "$interfaces" "$callback")
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "$ip" ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "cyan" "$DEFAULT_COLOR" "$ip" 'NETWORK_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
|
@ -1142,6 +1156,7 @@ prompt_laravel_version() {
|
|||
# Segment to display load
|
||||
set_default POWERLEVEL9K_LOAD_WHICH 5
|
||||
prompt_load() {
|
||||
local ROOT_PREFIX="${4}"
|
||||
# The load segment can have three different states
|
||||
local current_state="unknown"
|
||||
local load_select=2
|
||||
|
@ -1177,7 +1192,7 @@ prompt_load() {
|
|||
fi
|
||||
;;
|
||||
*)
|
||||
load_avg=$(cut -d" " -f${load_select} /proc/loadavg)
|
||||
load_avg=$(cut -d" " -f${load_select} ${ROOT_PREFIX}/proc/loadavg)
|
||||
cores=$(nproc)
|
||||
esac
|
||||
|
||||
|
@ -1250,6 +1265,7 @@ prompt_php_version() {
|
|||
################################################################
|
||||
# Segment to display free RAM and used Swap
|
||||
prompt_ram() {
|
||||
local ROOT_PREFIX="${4}"
|
||||
local base=''
|
||||
local ramfree=0
|
||||
if [[ "$OS" == "OSX" ]]; then
|
||||
|
@ -1261,9 +1277,9 @@ prompt_ram() {
|
|||
ramfree=$(( ramfree * 4096 ))
|
||||
else
|
||||
if [[ "$OS" == "BSD" ]]; then
|
||||
ramfree=$(grep 'avail memory' /var/run/dmesg.boot | awk '{print $4}')
|
||||
ramfree=$(grep 'avail memory' ${ROOT_PREFIX}/var/run/dmesg.boot | awk '{print $4}')
|
||||
else
|
||||
ramfree=$(grep -o -E "MemAvailable:\s+[0-9]+" /proc/meminfo | grep -o "[0-9]*")
|
||||
ramfree=$(grep -o -E "MemAvailable:\s+[0-9]+" ${ROOT_PREFIX}/proc/meminfo | grep -o -E "[0-9]+")
|
||||
base='K'
|
||||
fi
|
||||
fi
|
||||
|
@ -1428,6 +1444,7 @@ prompt_status() {
|
|||
################################################################
|
||||
# Segment to display Swap information
|
||||
prompt_swap() {
|
||||
local ROOT_PREFIX="${4}"
|
||||
local swap_used=0
|
||||
local base=''
|
||||
|
||||
|
@ -1442,8 +1459,8 @@ prompt_swap() {
|
|||
|
||||
base=$(echo "$raw_swap_used" | grep -o "[A-Z]*$")
|
||||
else
|
||||
swap_total=$(grep -o -E "SwapTotal:\s+[0-9]+" /proc/meminfo | grep -o "[0-9]*")
|
||||
swap_free=$(grep -o -E "SwapFree:\s+[0-9]+" /proc/meminfo | grep -o "[0-9]*")
|
||||
swap_total=$(grep -o -E "SwapTotal:\s+[0-9]+" ${ROOT_PREFIX}/proc/meminfo | grep -o -E "[0-9]+")
|
||||
swap_free=$(grep -o -E "SwapFree:\s+[0-9]+" ${ROOT_PREFIX}/proc/meminfo | grep -o -E "[0-9]+")
|
||||
swap_used=$(( swap_total - swap_free ))
|
||||
base='K'
|
||||
fi
|
||||
|
@ -1616,7 +1633,7 @@ set_default POWERLEVEL9K_VI_COMMAND_MODE_STRING "NORMAL"
|
|||
prompt_vi_mode() {
|
||||
case ${KEYMAP} in
|
||||
vicmd)
|
||||
"$1_prompt_segment" "$0_NORMAL" "$2" "$DEFAULT_COLOR" "default" "$POWERLEVEL9K_VI_COMMAND_MODE_STRING"
|
||||
"$1_prompt_segment" "$0_NORMAL" "$2" "$DEFAULT_COLOR" "white" "$POWERLEVEL9K_VI_COMMAND_MODE_STRING"
|
||||
;;
|
||||
main|viins|*)
|
||||
if [[ -z $POWERLEVEL9K_VI_INSERT_MODE_STRING ]]; then return; fi
|
||||
|
@ -1894,7 +1911,7 @@ prompt_powerlevel9k_setup() {
|
|||
fi
|
||||
fi
|
||||
|
||||
defined POWERLEVEL9K_LEFT_PROMPT_ELEMENTS || POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
|
||||
defined POWERLEVEL9K_LEFT_PROMPT_ELEMENTS || POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir vcs)
|
||||
defined POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS || POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs history time)
|
||||
|
||||
# Display a warning if deprecated segments are in use.
|
||||
|
|
2
shunit2
2
shunit2
|
@ -1 +1 @@
|
|||
Subproject commit 60dd60bcd1573befe38465010263ab242e55811d
|
||||
Subproject commit 07bb3292048a4982aad7247bdd7890f2bf532ece
|
|
@ -2,10 +2,12 @@
|
|||
|
||||
set -eu
|
||||
|
||||
# The default ZSH to use.
|
||||
default_version='4.3.11'
|
||||
# The default ZSH to use; it can just be the first few characters.
|
||||
# This should be the oldest version we support.
|
||||
default_version='4.'
|
||||
|
||||
setopt extended_glob glob_subst numeric_glob_sort
|
||||
setopt warn_create_global warn_nested_var 2> /dev/null
|
||||
cd "${${(%):-%x}:A:h}"
|
||||
|
||||
# TODO: Crazy Logic to munge TERM to something supported in Ubuntu 14.04
|
||||
|
@ -15,13 +17,18 @@ term=screen-256color
|
|||
# ...see Modifiers in zshexpn(1) for details.
|
||||
|
||||
# List of ZSH versions
|
||||
typeset -a versions
|
||||
typeset -aU versions
|
||||
versions=( docker/base-*/Dockerfile(N.on:h:t:s/base-//) )
|
||||
typeset -r versions
|
||||
|
||||
# List of frameworks
|
||||
typeset -a frameworks
|
||||
typeset -aU frameworks
|
||||
frameworks=( docker/*/Dockerfile(N.on:h:t) )
|
||||
frameworks=${(@)frameworks:#base-*}
|
||||
for i in {$#frameworks..1}; do
|
||||
# Remove all base entries
|
||||
[[ "${frameworks[$i]}" == base-* ]] && frameworks[$i]=()
|
||||
done
|
||||
typeset -r frameworks
|
||||
|
||||
# Known Issues
|
||||
typeset -A known_issues
|
||||
|
@ -30,6 +37,7 @@ known_issues["4.3.11-zim"]="BROKEN: Zim wants ZSH 5.2 or newer."
|
|||
known_issues["5.0.3-zim"]="DEPRECATED: Zim wants ZSH 5.2 or newer."
|
||||
known_issues["5.1.1-zim"]="DEPRECATED: Zim wants ZSH 5.2 or newer."
|
||||
known_issues["4.3.11-zulu"]="Zulu doesn't work; it needs a newer version of git."
|
||||
typeset -r known_issues
|
||||
|
||||
err()
|
||||
{
|
||||
|
@ -65,6 +73,14 @@ check_for_known_issues() {
|
|||
fi
|
||||
}
|
||||
|
||||
cmd() {
|
||||
if (( dry_run )); then
|
||||
echo "${(@q)*}" 1>&2
|
||||
else
|
||||
"${(@)*}"
|
||||
fi
|
||||
}
|
||||
|
||||
build_and_run() {
|
||||
local version="$1"
|
||||
local framework="$2"
|
||||
|
@ -75,14 +91,14 @@ build_and_run() {
|
|||
print -P "%F{green}Preparing containers...%f"
|
||||
|
||||
echo -n "p9k:base-${version}: "
|
||||
docker build \
|
||||
cmd docker build \
|
||||
--quiet \
|
||||
--tag "p9k:base-${version}" \
|
||||
--file "docker/base-${version}/Dockerfile" \
|
||||
.
|
||||
|
||||
echo -n "p9k:${version}-${framework}: "
|
||||
docker build \
|
||||
cmd docker build \
|
||||
--quiet \
|
||||
--build-arg="base=base-${version}" \
|
||||
--tag "p9k:${version}-${framework}" \
|
||||
|
@ -90,7 +106,7 @@ build_and_run() {
|
|||
.
|
||||
|
||||
print -P "%F{green}Starting ${name} container...%f"
|
||||
exec docker run \
|
||||
cmd docker run \
|
||||
--rm \
|
||||
--interactive \
|
||||
--tty \
|
||||
|
@ -105,9 +121,10 @@ show_help() {
|
|||
echo
|
||||
echo "Loads up a docker image with powershell9k configured in <framework>"
|
||||
echo
|
||||
echo " --frameworks Lists all available frameworks, newline separated."
|
||||
echo " --versions Lists all available ZSH versions, newline separated."
|
||||
echo " --zsh VER Uses ZSH with version VER."
|
||||
echo " -f --frameworks Lists all available frameworks, newline separated."
|
||||
echo " -v --versions Lists all available ZSH versions, newline separated."
|
||||
echo " -z --zsh VER Uses ZSH with version VER."
|
||||
echo " -n --dry-run Just prints the docker commands that would be run."
|
||||
echo " --help You're soaking in it."
|
||||
echo
|
||||
echo "ZSH versions:"
|
||||
|
@ -128,8 +145,9 @@ if (( $# == 0 )); then
|
|||
fi
|
||||
|
||||
# Parse flags and such.
|
||||
use_version=$default_version
|
||||
use_framework=
|
||||
asked_for_version=$default_version
|
||||
asked_for_framework=
|
||||
dry_run=0
|
||||
while (( $# > 0 )); do
|
||||
case "$1" in
|
||||
-f | --frameworks )
|
||||
|
@ -142,13 +160,9 @@ while (( $# > 0 )); do
|
|||
;;
|
||||
-z | --zsh )
|
||||
shift
|
||||
local v="$(resolve_version "$1")"
|
||||
if [[ -n "$v" ]]; then
|
||||
use_version=$v
|
||||
else
|
||||
err "No such ZSH version '${1}'"
|
||||
fi
|
||||
asked_for_version=$1
|
||||
;;
|
||||
-n | --dry-run ) dry_run=1 ;;
|
||||
-h | --help )
|
||||
show_help
|
||||
exit
|
||||
|
@ -159,21 +173,28 @@ while (( $# > 0 )); do
|
|||
exit 1
|
||||
;;
|
||||
* )
|
||||
if [[ -z "$use_framework" ]]; then
|
||||
local f="$(resolve_framework "$1")"
|
||||
if [[ -n "$f" ]]; then
|
||||
use_framework=$f
|
||||
if [[ -z "$asked_for_framework" ]]; then
|
||||
asked_for_framework=$1
|
||||
else
|
||||
err "No such framework '${1}'"
|
||||
fi
|
||||
else
|
||||
err "You can only specify one framework at a time; you already specified '${use_framework}'"
|
||||
err "You can only specify one framework at a time; you already specified '${asked_for_framework}'"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
typeset -r asked_for_version asked_for_framework
|
||||
|
||||
typeset -r use_version="$(resolve_version "${asked_for_version}")"
|
||||
if [[ -z "$use_version" ]]; then
|
||||
err "No such ZSH version '${asked_for_version}'"
|
||||
fi
|
||||
|
||||
typeset -r use_framework="$(resolve_framework "${asked_for_framework}")"
|
||||
if [[ -z "$use_framework" ]]; then
|
||||
err "No such framework '${asked_for_framework}'"
|
||||
fi
|
||||
|
||||
build_and_run "$use_version" "$use_framework"
|
||||
|
||||
# EOF
|
||||
|
|
62
test/core/color_overriding.spec
Executable file
62
test/core/color_overriding.spec
Executable file
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function testDynamicColoringOfSegmentsWork() {
|
||||
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(date)
|
||||
local POWERLEVEL9K_DATE_ICON="date-icon"
|
||||
local POWERLEVEL9K_DATE_BACKGROUND='red'
|
||||
|
||||
assertEquals "%K{001} %F{000}date-icon %f%F{000}%D{%d.%m.%y} %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testDynamicColoringOfVisualIdentifiersWork() {
|
||||
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(date)
|
||||
local POWERLEVEL9K_DATE_ICON="date-icon"
|
||||
local POWERLEVEL9K_DATE_VISUAL_IDENTIFIER_COLOR='green'
|
||||
|
||||
assertEquals "%K{007} %F{002}date-icon %f%F{000}%D{%d.%m.%y} %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testColoringOfVisualIdentifiersDoesNotOverwriteColoringOfSegment() {
|
||||
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(date)
|
||||
local POWERLEVEL9K_DATE_ICON="date-icon"
|
||||
local POWERLEVEL9K_DATE_VISUAL_IDENTIFIER_COLOR='green'
|
||||
local POWERLEVEL9K_DATE_FOREGROUND='red'
|
||||
local POWERLEVEL9K_DATE_BACKGROUND='yellow'
|
||||
|
||||
assertEquals "%K{003} %F{002}date-icon %f%F{001}%D{%d.%m.%y} %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testColorOverridingOfStatefulSegment() {
|
||||
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(host)
|
||||
local POWERLEVEL9K_SSH_ICON="ssh-icon"
|
||||
local POWERLEVEL9K_HOST_REMOTE_BACKGROUND='red'
|
||||
local POWERLEVEL9K_HOST_REMOTE_FOREGROUND='green'
|
||||
# Provoke state
|
||||
local SSH_CLIENT="x"
|
||||
|
||||
assertEquals "%K{001} %F{002}ssh-icon %f%F{002}%m %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testColorOverridingOfCustomSegment() {
|
||||
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_ICON='CW'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_VISUAL_IDENTIFIER_COLOR='green'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_FOREGROUND='red'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_BACKGROUND='red'
|
||||
|
||||
assertEquals "%K{001} %F{002}CW %f%F{001}world %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
187
test/core/joining_segments.spec
Executable file
187
test/core/joining_segments.spec
Executable file
|
@ -0,0 +1,187 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function testLeftNormalSegmentsShouldNotBeJoined() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3 custom_world4_joined custom_world5 custom_world6)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD5="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD6="echo world6"
|
||||
|
||||
assertEquals "%K{007} %F{000}world1 %K{007}%F{000} %F{000}world2 %K{007}%F{000} %F{000}world4 %K{007}%F{000} %F{000}world6 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testLeftJoinedSegments() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
|
||||
|
||||
assertEquals "%K{007} %F{000}world1 %K{007}%F{000}%F{000}world2 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testLeftTransitiveJoinedSegments() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined custom_world3_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo world3"
|
||||
|
||||
assertEquals "%K{007} %F{000}world1 %K{007}%F{000}%F{000}world2 %K{007}%F{000}%F{000}world3 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testLeftTransitiveJoiningWithConditionalJoinedSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined custom_world3_joined custom_world4_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
|
||||
|
||||
assertEquals "%K{007} %F{000}world1 %K{007}%F{000}%F{000}world2 %K{007}%F{000}%F{000}world4 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testLeftPromotingSegmentWithConditionalPredecessor() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo world3"
|
||||
|
||||
assertEquals "%K{007} %F{000}world1 %K{007}%F{000} %F{000}world3 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testLeftPromotingSegmentWithJoinedConditionalPredecessor() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined custom_world4_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
|
||||
|
||||
assertEquals "%K{007} %F{000}world1 %K{007}%F{000} %F{000}world4 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testLeftPromotingSegmentWithDeepJoinedConditionalPredecessor() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined custom_world4_joined custom_world5_joined custom_world6_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD5="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD6="echo world6"
|
||||
|
||||
assertEquals "%K{007} %F{000}world1 %K{007}%F{000} %F{000}world4 %K{007}%F{000}%F{000}world6 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testLeftJoiningBuiltinSegmentWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version php_version_joined)
|
||||
alias php="echo PHP 1.2.3"
|
||||
|
||||
assertEquals "%K{013} %F{255}PHP 1.2.3 %K{013}%F{255}%F{255}PHP 1.2.3 %k%F{013}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias php
|
||||
}
|
||||
|
||||
function testRightNormalSegmentsShouldNotBeJoined() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3 custom_world4 custom_world5_joined custom_world6)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD5="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD6="echo world6"
|
||||
|
||||
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world2 %f%F{000}%f%K{007}%F{000} world4 %f%F{000}%f%K{007}%F{000} world6%E" "$(build_right_prompt)"
|
||||
}
|
||||
|
||||
function testRightJoinedSegments() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
|
||||
|
||||
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%K{007}%F{000}world2%E" "$(build_right_prompt)"
|
||||
}
|
||||
|
||||
function testRightTransitiveJoinedSegments() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined custom_world3_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo world3"
|
||||
|
||||
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%K{007}%F{000}world2 %f%K{007}%F{000}world3%E" "$(build_right_prompt)"
|
||||
}
|
||||
|
||||
function testRightTransitiveJoiningWithConditionalJoinedSegment() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2_joined custom_world3_joined custom_world4_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo world2"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
|
||||
|
||||
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%K{007}%F{000}world2 %f%K{007}%F{000}world4%E" "$(build_right_prompt)"
|
||||
}
|
||||
|
||||
function testRightPromotingSegmentWithConditionalPredecessor() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo world3"
|
||||
|
||||
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world3%E" "$(build_right_prompt)"
|
||||
}
|
||||
|
||||
function testRightPromotingSegmentWithJoinedConditionalPredecessor() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined custom_world4_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
|
||||
|
||||
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world4%E" "$(build_right_prompt)"
|
||||
}
|
||||
|
||||
function testRightPromotingSegmentWithDeepJoinedConditionalPredecessor() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2 custom_world3_joined custom_world4_joined custom_world5_joined custom_world6_joined)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1="echo world1"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD3="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD4="echo world4"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD5="echo " # Print nothing to simulate unmet conditions
|
||||
local POWERLEVEL9K_CUSTOM_WORLD6="echo world6"
|
||||
|
||||
assertEquals "%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world4 %f%K{007}%F{000}world6%E" "$(build_right_prompt)"
|
||||
}
|
||||
|
||||
function testRightJoiningBuiltinSegmentWorks() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(php_version php_version_joined)
|
||||
alias php="echo PHP 1.2.3"
|
||||
|
||||
assertEquals "%F{013}%f%K{013}%F{255} PHP 1.2.3 %f%K{013}%F{255}PHP 1.2.3%E" "$(build_right_prompt)"
|
||||
|
||||
unalias php
|
||||
}
|
||||
source shunit2/shunit2
|
104
test/core/prompt.spec
Executable file
104
test/core/prompt.spec
Executable file
|
@ -0,0 +1,104 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function testSegmentOnRightSide() {
|
||||
# Reset RPROMPT, so a running P9K does not interfere with the test
|
||||
local RPROMPT=
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2='echo world2'
|
||||
|
||||
powerlevel9k_prepare_prompts
|
||||
|
||||
local reset_attributes=$'\e[00m'
|
||||
assertEquals "%f%b%k%F{007}%f%K{007}%F{000} world1 %f%F{000}%f%K{007}%F{000} world2%E%{${reset_attributes}%}" "${(e)RPROMPT}"
|
||||
}
|
||||
|
||||
function testDisablingRightPrompt() {
|
||||
# Reset RPROMPT, so a running P9K does not interfere with the test
|
||||
local RPROMPT=
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1 custom_world2)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD2='echo world2'
|
||||
local POWERLEVEL9K_DISABLE_RPROMPT=true
|
||||
|
||||
powerlevel9k_prepare_prompts
|
||||
|
||||
assertEquals "" "${(e)RPROMPT}"
|
||||
}
|
||||
|
||||
function testLeftMultilinePrompt() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
|
||||
|
||||
powerlevel9k_prepare_prompts
|
||||
|
||||
local nl=$'\n'
|
||||
assertEquals "╭─%f%b%k%K{007} %F{000}world1 %k%F{007}%f ${nl}╰─ " "${(e)PROMPT}"
|
||||
}
|
||||
|
||||
function testRightPromptOnSameLine() {
|
||||
# Reset RPROMPT, so a running P9K does not interfere with the test
|
||||
local RPROMPT=
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
|
||||
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
|
||||
local POWERLEVEL9K_RPROMPT_ON_NEWLINE=false # We want the RPROMPT on the same line as our left prompt
|
||||
|
||||
# Skip test, as this cannot be tested properly.
|
||||
# The "go one line up" instruction does not get
|
||||
# printed as real characters in RPROMPT.
|
||||
# On command line the assert statement produces
|
||||
# a visually identical output as we expect, but
|
||||
# it fails anyway. :(
|
||||
startSkipping
|
||||
|
||||
powerlevel9k_prepare_prompts
|
||||
assertEquals "%{\e[1A%}%F{007}%f%K{007}%F{000} world1 %f%{\e[1B%}" "${(e)RPROMPT}"
|
||||
}
|
||||
|
||||
function testPrefixingFirstLineOnLeftPrompt() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
|
||||
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
|
||||
local POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='XXX'
|
||||
|
||||
powerlevel9k_prepare_prompts
|
||||
|
||||
local nl=$'\n'
|
||||
assertEquals "XXX%f%b%k%K{007} %F{000}world1 %k%F{007}%f ${nl}╰─ " "${(e)PROMPT}"
|
||||
}
|
||||
|
||||
function testPrefixingSecondLineOnLeftPrompt() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
|
||||
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
|
||||
local POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='XXX'
|
||||
|
||||
powerlevel9k_prepare_prompts
|
||||
|
||||
local nl=$'\n'
|
||||
assertEquals "╭─%f%b%k%K{007} %F{000}world1 %k%F{007}%f ${nl}XXX" "${(e)PROMPT}"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
60
test/core/visual_identifier.spec
Executable file
60
test/core/visual_identifier.spec
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
source functions/*
|
||||
}
|
||||
|
||||
function testOverwritingIconsWork() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1_ICON='icon-here'
|
||||
|
||||
assertEquals "%K{007} %F{000}icon-here %f%F{000}world1 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testVisualIdentifierAppearsBeforeSegmentContentOnLeftSegments() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1_ICON='icon-here'
|
||||
|
||||
assertEquals "%K{007} %F{000}icon-here %f%F{000}world1 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testVisualIdentifierAppearsAfterSegmentContentOnRightSegments() {
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1_ICON='icon-here'
|
||||
|
||||
assertEquals "%F{007}%f%K{007}%F{000} world1%F{000} icon-here%f%E" "$(build_right_prompt)"
|
||||
}
|
||||
|
||||
function testVisualIdentifierPrintsNothingIfNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
|
||||
assertEquals "%K{007} %F{000}world1 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testVisualIdentifierIsPrintedInNumericalColorCode() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world1)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1='echo world1'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1_ICON="xxx"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD1_VISUAL_IDENTIFIER_COLOR="purple3"
|
||||
|
||||
assertEquals "%K{007} %F{056}xxx %f%F{000}world1 %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -22,6 +22,10 @@ function testGetColorCodeWithNumericalColor() {
|
|||
assertEquals '002' "$(getColorCode '002')"
|
||||
}
|
||||
|
||||
function testGetColorCodeWithNoneColor() {
|
||||
assertEquals 'none' "$(getColorCode 'NONE')"
|
||||
}
|
||||
|
||||
function testIsSameColorComparesAnsiForegroundAndNumericalColorCorrectly() {
|
||||
assertTrue "isSameColor 'green' '002'"
|
||||
}
|
||||
|
@ -30,13 +34,34 @@ function testIsSameColorComparesAnsiBackgroundAndNumericalColorCorrectly() {
|
|||
assertTrue "isSameColor 'bg-green' '002'"
|
||||
}
|
||||
|
||||
function testIsSameColorComparesNumericalBackgroundAndNumericalColorCorrectly() {
|
||||
assertTrue "isSameColor '010' '2'"
|
||||
function testIsSameColorComparesShortCodesCorrectly() {
|
||||
assertTrue "isSameColor '002' '2'"
|
||||
}
|
||||
|
||||
function testIsSameColorDoesNotYieldNotEqualColorsTruthy() {
|
||||
assertFalse "isSameColor 'green' '003'"
|
||||
}
|
||||
|
||||
function testIsSameColorHandlesNoneCorrectly() {
|
||||
assertTrue "isSameColor 'none' 'NOnE'"
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
function testIsSameColorCompareTwoNoneColorsCorrectly() {
|
||||
assertTrue "isSameColor 'none' 'none'"
|
||||
}
|
||||
|
||||
function testIsSameColorComparesColorWithNoneCorrectly() {
|
||||
assertFalse "isSameColor 'green' 'none'"
|
||||
}
|
||||
|
||||
function testBrightColorsWork() {
|
||||
# We had some code in the past that equalized bright colors
|
||||
# with normal ones. This code is now gone, and this test should
|
||||
# ensure that all input channels for bright colors are handled
|
||||
# correctly.
|
||||
assertTrue "isSameColor 'cyan' '006'"
|
||||
assertEquals '006' "$(getColorCode 'cyan')"
|
||||
assertEquals '006' "$(getColor 'cyan')"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
||||
|
|
|
@ -10,21 +10,15 @@ function setUp() {
|
|||
_OLD_LC_CTYPE="${LC_CTYPE}"
|
||||
# Reset actual LC_CTYPE
|
||||
unset LC_CTYPE
|
||||
|
||||
# Store old P9K mode
|
||||
_OLD_P9K_MODE="${POWERLEVEL9K_MODE}"
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Restore LC_CTYPE
|
||||
LC_CTYPE="${_OLD_LC_CTYPE}"
|
||||
|
||||
# Restore old P9K mode
|
||||
POWERLEVEL9K_MODE="${_OLD_P9K_MODE}"
|
||||
}
|
||||
|
||||
function testLcCtypeIsSetCorrectlyInDefaultMode() {
|
||||
POWERLEVEL9K_MODE="default"
|
||||
local POWERLEVEL9K_MODE="default"
|
||||
# Load Powerlevel9k
|
||||
source functions/icons.zsh
|
||||
|
||||
|
@ -32,7 +26,7 @@ function testLcCtypeIsSetCorrectlyInDefaultMode() {
|
|||
}
|
||||
|
||||
function testLcCtypeIsSetCorrectlyInAwesomePatchedMode() {
|
||||
POWERLEVEL9K_MODE="awesome-patched"
|
||||
local POWERLEVEL9K_MODE="awesome-patched"
|
||||
# Load Powerlevel9k
|
||||
source functions/icons.zsh
|
||||
|
||||
|
@ -40,7 +34,7 @@ function testLcCtypeIsSetCorrectlyInAwesomePatchedMode() {
|
|||
}
|
||||
|
||||
function testLcCtypeIsSetCorrectlyInAwesomeFontconfigMode() {
|
||||
POWERLEVEL9K_MODE="awesome-fontconfig"
|
||||
local POWERLEVEL9K_MODE="awesome-fontconfig"
|
||||
# Load Powerlevel9k
|
||||
source functions/icons.zsh
|
||||
|
||||
|
@ -48,7 +42,7 @@ function testLcCtypeIsSetCorrectlyInAwesomeFontconfigMode() {
|
|||
}
|
||||
|
||||
function testLcCtypeIsSetCorrectlyInNerdfontFontconfigMode() {
|
||||
POWERLEVEL9K_MODE="nerdfont-fontconfig"
|
||||
local POWERLEVEL9K_MODE="nerdfont-fontconfig"
|
||||
# Load Powerlevel9k
|
||||
source functions/icons.zsh
|
||||
|
||||
|
@ -56,7 +50,7 @@ function testLcCtypeIsSetCorrectlyInNerdfontFontconfigMode() {
|
|||
}
|
||||
|
||||
function testLcCtypeIsSetCorrectlyInFlatMode() {
|
||||
POWERLEVEL9K_MODE="flat"
|
||||
local POWERLEVEL9K_MODE="flat"
|
||||
# Load Powerlevel9k
|
||||
source functions/icons.zsh
|
||||
|
||||
|
@ -64,7 +58,7 @@ function testLcCtypeIsSetCorrectlyInFlatMode() {
|
|||
}
|
||||
|
||||
function testLcCtypeIsSetCorrectlyInCompatibleMode() {
|
||||
POWERLEVEL9K_MODE="compatible"
|
||||
local POWERLEVEL9K_MODE="compatible"
|
||||
# Load Powerlevel9k
|
||||
source functions/icons.zsh
|
||||
|
||||
|
@ -76,7 +70,7 @@ function testLcCtypeIsSetCorrectlyInCompatibleMode() {
|
|||
function testAllIconsAreDefinedLikeInDefaultMode() {
|
||||
# Always compare against this mode
|
||||
local _P9K_TEST_MODE="default"
|
||||
POWERLEVEL9K_MODE="${_P9K_TEST_MODE}"
|
||||
local POWERLEVEL9K_MODE="${_P9K_TEST_MODE}"
|
||||
source functions/icons.zsh
|
||||
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
|
||||
# We later check via (r) "subscript" flag that our key
|
||||
|
@ -121,6 +115,15 @@ function testAllIconsAreDefinedLikeInDefaultMode() {
|
|||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "nerdfont-complete" mode
|
||||
POWERLEVEL9K_MODE="nerdfont-complete"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "flat" mode
|
||||
POWERLEVEL9K_MODE="flat"
|
||||
source functions/icons.zsh
|
||||
|
@ -148,7 +151,7 @@ function testAllIconsAreDefinedLikeInDefaultMode() {
|
|||
function testAllIconsAreDefinedLikeInAwesomePatchedMode() {
|
||||
# Always compare against this mode
|
||||
local _P9K_TEST_MODE="awesome-patched"
|
||||
POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
|
||||
local POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
|
||||
source functions/icons.zsh
|
||||
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
|
||||
# We later check via (r) "subscript" flag that our key
|
||||
|
@ -193,6 +196,15 @@ function testAllIconsAreDefinedLikeInAwesomePatchedMode() {
|
|||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "nerdfont-complete" mode
|
||||
POWERLEVEL9K_MODE="nerdfont-complete"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "flat" mode
|
||||
POWERLEVEL9K_MODE="flat"
|
||||
source functions/icons.zsh
|
||||
|
@ -220,7 +232,7 @@ function testAllIconsAreDefinedLikeInAwesomePatchedMode() {
|
|||
function testAllIconsAreDefinedLikeInAwesomeFontconfigMode() {
|
||||
# Always compare against this mode
|
||||
local _P9K_TEST_MODE="awesome-fontconfig"
|
||||
POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
|
||||
local POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
|
||||
source functions/icons.zsh
|
||||
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
|
||||
# We later check via (r) "subscript" flag that our key
|
||||
|
@ -265,6 +277,15 @@ function testAllIconsAreDefinedLikeInAwesomeFontconfigMode() {
|
|||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "nerdfont-complete" mode
|
||||
POWERLEVEL9K_MODE="nerdfont-complete"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "flat" mode
|
||||
POWERLEVEL9K_MODE="flat"
|
||||
source functions/icons.zsh
|
||||
|
@ -292,7 +313,7 @@ function testAllIconsAreDefinedLikeInAwesomeFontconfigMode() {
|
|||
function testAllIconsAreDefinedLikeInNerdfontFontconfigMode() {
|
||||
# Always compare against this mode
|
||||
local _P9K_TEST_MODE="nerdfont-fontconfig"
|
||||
POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
|
||||
local POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
|
||||
source functions/icons.zsh
|
||||
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
|
||||
# We later check via (r) "subscript" flag that our key
|
||||
|
@ -337,6 +358,15 @@ function testAllIconsAreDefinedLikeInNerdfontFontconfigMode() {
|
|||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "nerdfont-complete" mode
|
||||
POWERLEVEL9K_MODE="nerdfont-complete"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "flat" mode
|
||||
POWERLEVEL9K_MODE="flat"
|
||||
source functions/icons.zsh
|
||||
|
@ -359,4 +389,85 @@ function testAllIconsAreDefinedLikeInNerdfontFontconfigMode() {
|
|||
unset _ICONS_UNDER_TEST
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
# Go through all icons defined in nerdfont-complete mode, and
|
||||
# check if all of them are defined in the other modes.
|
||||
function testAllIconsAreDefinedLikeInNerdfontCompleteMode() {
|
||||
# Always compare against this mode
|
||||
local _P9K_TEST_MODE="nerdfont-complete"
|
||||
local POWERLEVEL9K_MODE="$_P9K_TEST_MODE"
|
||||
source functions/icons.zsh
|
||||
# _ICONS_UNDER_TEST is an array of just the keys of $icons.
|
||||
# We later check via (r) "subscript" flag that our key
|
||||
# is in the values of our flat array.
|
||||
typeset -ah _ICONS_UNDER_TEST
|
||||
_ICONS_UNDER_TEST=(${(k)icons[@]})
|
||||
|
||||
# Switch to "default" mode
|
||||
POWERLEVEL9K_MODE="default"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
# Iterate over all keys found in the _ICONS_UNDER_TEST
|
||||
# array and compare it with the icons array of the
|
||||
# current POWERLEVEL9K_MODE.
|
||||
# Use parameter expansion, to directly check if the
|
||||
# key exists in the flat current array of keys. That
|
||||
# is quite complicated, but there seems no easy way
|
||||
# to check the mere existance of a key in an array.
|
||||
# The usual way would always return the value, so that
|
||||
# would do the wrong thing as we have some (on purpose)
|
||||
# empty values.
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "awesome-patched" mode
|
||||
POWERLEVEL9K_MODE="awesome-patched"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "awesome-fontconfig" mode
|
||||
POWERLEVEL9K_MODE="awesome-fontconfig"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "nerdfont-fontconfig" mode
|
||||
POWERLEVEL9K_MODE="nerdfont-fontconfig"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "flat" mode
|
||||
POWERLEVEL9K_MODE="flat"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
# Switch to "compatible" mode
|
||||
POWERLEVEL9K_MODE="compatible"
|
||||
source functions/icons.zsh
|
||||
typeset -ah current_icons
|
||||
current_icons=(${(k)icons[@]})
|
||||
for key in ${_ICONS_UNDER_TEST}; do
|
||||
assertTrue "The key ${key} does exist in ${_P9K_TEST_MODE} mode, but not in ${POWERLEVEL9K_MODE}!" "(( ${+current_icons[(r)$key]} ))"
|
||||
done
|
||||
|
||||
unset current_icons
|
||||
unset _ICONS_UNDER_TEST
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -106,4 +106,4 @@ function testSegmentShouldNotBeJoinedIfPredecessingSegmentIsNotJoinedButConditio
|
|||
unset segments
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
||||
|
|
|
@ -17,68 +17,66 @@ function setUp() {
|
|||
}
|
||||
|
||||
function testJoinedSegments() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_joined)
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp %K{blue}%F{black}%F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp %K{004}%F{000}%F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
cd -
|
||||
}
|
||||
|
||||
function testTransitiveJoinedSegments() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir root_indicator_joined dir_joined)
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp %K{blue}%F{black}%F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp %K{004}%F{000}%F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
cd -
|
||||
}
|
||||
|
||||
function testJoiningWithConditionalSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir background_jobs dir_joined)
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp %K{blue}%F{black} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp %K{004}%F{000} %F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
cd -
|
||||
}
|
||||
|
||||
function testDynamicColoringOfSegmentsWork() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='red'
|
||||
local POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='red'
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{red} %F{black}/tmp %k%F{red}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{001} %F{000}/tmp %k%F{001}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_DIR_DEFAULT_BACKGROUND
|
||||
cd -
|
||||
}
|
||||
|
||||
function testDynamicColoringOfVisualIdentifiersWork() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR='green'
|
||||
POWERLEVEL9K_FOLDER_ICON="icon-here"
|
||||
local POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR='green'
|
||||
local POWERLEVEL9K_FOLDER_ICON="icon-here"
|
||||
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{blue} %F{green%}icon-here %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{002}icon-here %F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR
|
||||
unset POWERLEVEL9K_FOLDER_ICON
|
||||
cd -
|
||||
}
|
||||
|
||||
function testColoringOfVisualIdentifiersDoesNotOverwriteColoringOfSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR='green'
|
||||
POWERLEVEL9K_DIR_DEFAULT_FOREGROUND='red'
|
||||
POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='yellow'
|
||||
POWERLEVEL9K_FOLDER_ICON="icon-here"
|
||||
local POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR='green'
|
||||
local POWERLEVEL9K_DIR_DEFAULT_FOREGROUND='red'
|
||||
local POWERLEVEL9K_DIR_DEFAULT_BACKGROUND='yellow'
|
||||
local POWERLEVEL9K_FOLDER_ICON="icon-here"
|
||||
|
||||
# Re-Source the icons, as the POWERLEVEL9K_MODE is directly
|
||||
# evaluated there.
|
||||
|
@ -86,19 +84,15 @@ function testColoringOfVisualIdentifiersDoesNotOverwriteColoringOfSegment() {
|
|||
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{yellow} %F{green%}icon-here %F{red}/tmp %k%F{yellow}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{003} %F{002}icon-here %F{001}/tmp %k%F{003}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_DIR_DEFAULT_VISUAL_IDENTIFIER_COLOR
|
||||
unset POWERLEVEL9K_DIR_DEFAULT_FOREGROUND
|
||||
unset POWERLEVEL9K_DIR_DEFAULT_BACKGROUND
|
||||
unset POWERLEVEL9K_FOLDER_ICON
|
||||
cd -
|
||||
}
|
||||
|
||||
function testOverwritingIconsWork() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_FOLDER_ICON='icon-here'
|
||||
local POWERLEVEL9K_FOLDER_ICON='icon-here'
|
||||
#local testFolder=$(mktemp -d -p p9k)
|
||||
# Move testFolder under home folder
|
||||
#mv testFolder ~
|
||||
|
@ -106,31 +100,24 @@ function testOverwritingIconsWork() {
|
|||
#cd ~/$testFolder
|
||||
|
||||
cd /tmp
|
||||
assertEquals "%K{blue} %F{black%}icon-here %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}icon-here %F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_DIR_FOLDER_ICON
|
||||
cd -
|
||||
# rm -fr ~/$testFolder
|
||||
}
|
||||
|
||||
function testNewlineOnRpromptCanBeDisabled() {
|
||||
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
|
||||
POWERLEVEL9K_RPROMPT_ON_NEWLINE=false
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
POWERLEVEL9K_CUSTOM_RWORLD='echo rworld'
|
||||
local POWERLEVEL9K_PROMPT_ON_NEWLINE=true
|
||||
local POWERLEVEL9K_RPROMPT_ON_NEWLINE=false
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local POWERLEVEL9K_CUSTOM_RWORLD='echo rworld'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
|
||||
local -a POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(custom_rworld)
|
||||
|
||||
powerlevel9k_prepare_prompts
|
||||
assertEquals '$(print_icon MULTILINE_FIRST_PROMPT_PREFIX)[39m[0m[49m[47m [30mworld [49m[37m[39m $(print_icon MULTILINE_LAST_PROMPT_PREFIX)[1A[39m[0m[49m[37m[39m[47m[30m rworld[K[00m[1B' "$(print -P ${PROMPT}${RPROMPT})"
|
||||
|
||||
unset POWERLEVEL9K_PROMPT_ON_NEWLINE
|
||||
unset POWERLEVEL9K_RPROMPT_ON_NEWLINE
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
unset POWERLEVEL9K_CUSTOM_RWORLD
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
||||
|
|
69
test/segments/anaconda.spec
Executable file
69
test/segments/anaconda.spec
Executable file
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testAnacondaSegmentPrintsNothingIfNoAnacondaPathIsSet() {
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda custom_world)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
# Unset anacona variables
|
||||
unset CONDA_ENV_PATH
|
||||
unset CONDA_PREFIX
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testAnacondaSegmentWorksIfOnlyAnacondaPathIsSet() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
|
||||
local POWERLEVEL9K_PYTHON_ICON="icon-here"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
CONDA_ENV_PATH=/tmp
|
||||
unset CONDA_PREFIX
|
||||
|
||||
assertEquals "%K{004} %F{000}icon-here %f%F{000}(tmp) %k%F{004}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testAnacondaSegmentWorksIfOnlyAnacondaPrefixIsSet() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
|
||||
local POWERLEVEL9K_PYTHON_ICON="icon-here"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset CONDA_ENV_PATH
|
||||
local CONDA_PREFIX="test"
|
||||
|
||||
assertEquals "%K{004} %F{000}icon-here %f%F{000}(test) %k%F{004}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testAnacondaSegmentWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(anaconda)
|
||||
local POWERLEVEL9K_PYTHON_ICON="icon-here"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
local CONDA_ENV_PATH=/tmp
|
||||
local CONDA_PREFIX="test"
|
||||
|
||||
assertEquals "%K{004} %F{000}icon-here %f%F{000}(tmptest) %k%F{004}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
61
test/segments/aws_eb_env.spec
Executable file
61
test/segments/aws_eb_env.spec
Executable file
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testAwsEbEnvSegmentPrintsNothingIfNoElasticBeanstalkEnvironmentIsSet() {
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env custom_world)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSet() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test/.elasticbeanstalk
|
||||
echo "test:\n environment: test" > /tmp/powerlevel9k-test/.elasticbeanstalk/config.yml
|
||||
cd /tmp/powerlevel9k-test
|
||||
|
||||
assertEquals "%K{000} %F{002}🌱 %f%F{002}test %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
cd -
|
||||
}
|
||||
|
||||
function testAwsEbEnvSegmentWorksIfElasticBeanstalkEnvironmentIsSetInParentDirectory() {
|
||||
# Skip test, because currently we cannot detect
|
||||
# if the configuration is in a parent directory
|
||||
startSkipping # Skip test
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(aws_eb_env)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test/.elasticbeanstalk
|
||||
mkdir -p /tmp/powerlevel9k-test/1/12/123/1234/12345
|
||||
echo "test:\n environment: test" > /tmp/powerlevel9k-test/.elasticbeanstalk/config.yml
|
||||
cd /tmp/powerlevel9k-test/1/12/123/1234/12345
|
||||
|
||||
assertEquals "%K{000} %F{002}🌱 %f%F{002}test %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
cd -
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
78
test/segments/background_jobs.spec
Executable file
78
test/segments/background_jobs.spec
Executable file
|
@ -0,0 +1,78 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testBackgroundJobsSegmentPrintsNothingWithoutBackgroundJobs() {
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs custom_world)
|
||||
alias jobs="nojobs 2>/dev/null"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias jobs
|
||||
}
|
||||
|
||||
function testBackgroundJobsSegmentWorksWithOneBackgroundJob() {
|
||||
unset POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
|
||||
jobs() {
|
||||
echo '[1] + 30444 suspended nvim xx'
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{006}⚙%f %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction jobs
|
||||
}
|
||||
|
||||
function testBackgroundJobsSegmentWorksWithMultipleBackgroundJobs() {
|
||||
local POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
|
||||
jobs() {
|
||||
echo "[1] 31190 suspended nvim xx"
|
||||
echo "[2] - 31194 suspended nvim xx2"
|
||||
echo "[3] + 31206 suspended nvim xx3"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{006}⚙%f %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction jobs
|
||||
}
|
||||
|
||||
function testBackgroundJobsSegmentWithVerboseMode() {
|
||||
local POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=true
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(background_jobs)
|
||||
jobs() {
|
||||
echo "[1] 31190 suspended nvim xx"
|
||||
echo "[2] - 31194 suspended nvim xx2"
|
||||
echo "[3] + 31206 suspended nvim xx3"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{006}⚙ %f%F{006}3 %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction jobs
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
177
test/segments/battery.spec
Executable file
177
test/segments/battery.spec
Executable file
|
@ -0,0 +1,177 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder
|
||||
FOLDER=/tmp/powerlevel9k-test
|
||||
mkdir -p "${FOLDER}"
|
||||
cd $FOLDER
|
||||
|
||||
# Prepare folder for pmset (OSX)
|
||||
PMSET_PATH=$FOLDER/usr/bin
|
||||
mkdir -p $PMSET_PATH
|
||||
# Prepare folder for $BATTERY (Linux)
|
||||
BATTERY_PATH=$FOLDER/sys/class/power_supply
|
||||
mkdir -p $BATTERY_PATH
|
||||
mkdir -p $BATTERY_PATH/BAT0
|
||||
mkdir -p $BATTERY_PATH/BAT1
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}" &>/dev/null
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test &>/dev/null
|
||||
unset PMSET_PATH
|
||||
unset BATTERY_PATH
|
||||
unset FOLDER
|
||||
unset P9K_HOME
|
||||
}
|
||||
|
||||
# Mock Battery
|
||||
# For mocking pmset on OSX this function takes one argument (the
|
||||
# content that pmset should echo).
|
||||
# For mocking the battery on Linux this function takes two
|
||||
# arguments: $1 is the capacity; $2 the battery status.
|
||||
function makeBatterySay() {
|
||||
if [[ -z "${FOLDER}" ]]; then
|
||||
echo "Fake root path is not correctly set!"
|
||||
exit 1
|
||||
fi
|
||||
# OSX
|
||||
echo "#!/bin/sh" > $PMSET_PATH/pmset
|
||||
echo "echo \"$1\"" >> $PMSET_PATH/pmset
|
||||
chmod +x $PMSET_PATH/pmset
|
||||
|
||||
# Linux
|
||||
local capacity="$1"
|
||||
echo "$capacity" > $BATTERY_PATH/BAT0/capacity
|
||||
echo "$capacity" > $BATTERY_PATH/BAT1/capacity
|
||||
local battery_status="$2"
|
||||
echo "$battery_status" > $BATTERY_PATH/BAT0/status
|
||||
echo "$battery_status" > $BATTERY_PATH/BAT1/status
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsLowWhileDischargingOnOSX() {
|
||||
local OS='OSX' # Fake OSX
|
||||
makeBatterySay "Now drawing from 'Battery Power'
|
||||
-InternalBattery-0 (id=1234567) 4%; discharging; 0:05 remaining present: true"
|
||||
|
||||
assertEquals "%K{000} %F{001}🔋 %f%F{001}4%% (0:05) " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsLowWhileChargingOnOSX() {
|
||||
local OS='OSX' # Fake OSX
|
||||
makeBatterySay "Now drawing from 'Battery Power'
|
||||
-InternalBattery-0 (id=1234567) 4%; charging; 0:05 remaining present: true"
|
||||
|
||||
assertEquals "%K{000} %F{003}🔋 %f%F{003}4%% (0:05) " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsAlmostFullWhileDischargingOnOSX() {
|
||||
local OS='OSX' # Fake OSX
|
||||
makeBatterySay "Now drawing from 'Battery Power'
|
||||
-InternalBattery-0 (id=1234567) 98%; discharging; 3:57 remaining present: true"
|
||||
|
||||
assertEquals "%K{000} %F{007}🔋 %f%F{007}98%% (3:57) " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsAlmostFullWhileChargingOnOSX() {
|
||||
local OS='OSX' # Fake OSX
|
||||
makeBatterySay "Now drawing from 'Battery Power'
|
||||
-InternalBattery-0 (id=1234567) 98%; charging; 3:57 remaining present: true"
|
||||
|
||||
assertEquals "%K{000} %F{003}🔋 %f%F{003}98%% (3:57) " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsFullOnOSX() {
|
||||
local OS='OSX' # Fake OSX
|
||||
makeBatterySay "Now drawing from 'AC Power'
|
||||
-InternalBattery-0 (id=1234567) 99%; charged; 0:00 remaining present: true"
|
||||
|
||||
assertEquals "%K{000} %F{002}🔋 %f%F{002}99%% " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsCalculatingOnOSX() {
|
||||
local OS='OSX' # Fake OSX
|
||||
makeBatterySay "Now drawing from 'Battery Power'
|
||||
-InternalBattery-0 (id=1234567) 99%; discharging; (no estimate) present: true"
|
||||
|
||||
assertEquals "%K{000} %F{007}🔋 %f%F{007}99%% (...) " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsLowWhileDischargingOnLinux() {
|
||||
local OS='Linux' # Fake Linux
|
||||
makeBatterySay "4" "Discharging"
|
||||
|
||||
assertEquals "%K{000} %F{001}🔋 %f%F{001}4%% " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsLowWhileChargingOnLinux() {
|
||||
local OS='Linux' # Fake Linux
|
||||
makeBatterySay "4" "Charging"
|
||||
|
||||
assertEquals "%K{000} %F{003}🔋 %f%F{003}4%% " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsNormalWhileDischargingOnLinux() {
|
||||
local OS='Linux' # Fake Linux
|
||||
makeBatterySay "10" "Discharging"
|
||||
|
||||
assertEquals "%K{000} %F{007}🔋 %f%F{007}10%% " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsNormalWhileChargingOnLinux() {
|
||||
local OS='Linux' # Fake Linux
|
||||
makeBatterySay "10" "Charging"
|
||||
|
||||
assertEquals "%K{000} %F{003}🔋 %f%F{003}10%% " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsFullOnLinux() {
|
||||
local OS='Linux' # Fake Linux
|
||||
makeBatterySay "100" "Full"
|
||||
|
||||
assertEquals "%K{000} %F{002}🔋 %f%F{002}100%% " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsNormalWithAcpiEnabledOnLinux() {
|
||||
local OS='Linux' # Fake Linux
|
||||
makeBatterySay "50" "Discharging"
|
||||
echo "echo 'Batter 0: Discharging, 50%, 01:38:54 remaining'" > ${FOLDER}/usr/bin/acpi
|
||||
chmod +x ${FOLDER}/usr/bin/acpi
|
||||
# For running on Mac, we need to mock date :(
|
||||
[[ -f /usr/local/bin/gdate ]] && alias date=gdate
|
||||
|
||||
assertEquals "%K{000} %F{007}🔋 %f%F{007}50%% (1:38) " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
|
||||
unalias date &>/dev/null
|
||||
# unaliasing date fails where it was never aliased (e.g. on Linux).
|
||||
# This causes the whole test to fail, because the return code is
|
||||
# non-zero.
|
||||
return 0
|
||||
}
|
||||
|
||||
function testBatterySegmentIfBatteryIsCalculatingWithAcpiEnabledOnLinux() {
|
||||
local OS='Linux' # Fake Linux
|
||||
makeBatterySay "50" "Discharging"
|
||||
# Todo: Include real acpi output!
|
||||
echo "echo 'Batter 0: Discharging, 50%, rate remaining'" > ${FOLDER}/usr/bin/acpi
|
||||
chmod +x ${FOLDER}/usr/bin/acpi
|
||||
|
||||
assertEquals "%K{000} %F{007}🔋 %f%F{007}50%% (...) " "$(prompt_battery left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -7,90 +7,98 @@ SHUNIT_PARENT=$0
|
|||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function testCommandExecutionTimeIsNotShownIfTimeIsBelowThreshold() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world command_execution_time)
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
_P9K_COMMAND_DURATION=2
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
unset _P9K_COMMAND_DURATION
|
||||
# Override payload
|
||||
local _P9K_COMMAND_DURATION=2
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testCommandExecutionTimeThresholdCouldBeChanged() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
|
||||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1
|
||||
_P9K_COMMAND_DURATION=2.03
|
||||
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}Dur %F{yellow1}2.03 %k%F{red}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD
|
||||
# Override payload
|
||||
local _P9K_COMMAND_DURATION=2.03
|
||||
|
||||
assertEquals "%K{001} %F{226}Dur %F{226}2.03 %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testCommandExecutionTimeThresholdCouldBeSetToZero() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
|
||||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
|
||||
_P9K_COMMAND_DURATION=0.03
|
||||
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
|
||||
local _P9K_COMMAND_DURATION=0.03
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}Dur %F{yellow1}0.03 %k%F{red}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD
|
||||
assertEquals "%K{001} %F{226}Dur %F{226}0.03 %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testCommandExecutionTimePrecisionCouldBeChanged() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
|
||||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
|
||||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4
|
||||
_P9K_COMMAND_DURATION=0.0001
|
||||
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
|
||||
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}Dur %F{yellow1}0.0001 %k%F{red}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION
|
||||
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD
|
||||
# Override payload
|
||||
local _P9K_COMMAND_DURATION=0.0001
|
||||
|
||||
assertEquals "%K{001} %F{226}Dur %F{226}0.0001 %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testCommandExecutionTimePrecisionCouldBeSetToZero() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
|
||||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
|
||||
_P9K_COMMAND_DURATION=23.5001
|
||||
local POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}Dur %F{yellow1}23 %k%F{red}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
unset POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION
|
||||
# Override payload
|
||||
local _P9K_COMMAND_DURATION=23.5001
|
||||
|
||||
assertEquals "%K{001} %F{226}Dur %F{226}23 %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
|
||||
_P9K_COMMAND_DURATION=180
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}Dur %F{yellow1}03:00 %k%F{red}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
# Override payload
|
||||
local _P9K_COMMAND_DURATION=180
|
||||
|
||||
assertEquals "%K{001} %F{226}Dur %F{226}03:00 %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
|
||||
_P9K_COMMAND_DURATION=7200
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}Dur %F{yellow1}02:00:00 %k%F{red}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
# Override payload
|
||||
local _P9K_COMMAND_DURATION=7200
|
||||
|
||||
assertEquals "%K{001} %F{226}Dur %F{226}02:00:00 %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
113
test/segments/context.spec
Executable file
113
test/segments/context.spec
Executable file
|
@ -0,0 +1,113 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
# Test specific settings
|
||||
OLD_DEFAULT_USER=$DEFAULT_USER
|
||||
unset DEFAULT_USER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Restore old variables
|
||||
[[ -n "$OLD_DEFAULT_USER" ]] && DEFAULT_USER=$OLD_DEFAULT_USER
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function testContextSegmentDoesNotGetRenderedWithDefaultUser() {
|
||||
local DEFAULT_USER=$(whoami)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context custom_world)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testContextSegmentDoesGetRenderedWhenSshConnectionIsOpen() {
|
||||
function sudo() {
|
||||
return 0
|
||||
}
|
||||
local SSH_CLIENT="putty"
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction sudo
|
||||
}
|
||||
|
||||
function testContextSegmentWithForeignUser() {
|
||||
function sudo() {
|
||||
return 0
|
||||
}
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction sudo
|
||||
}
|
||||
|
||||
# TODO: How to test root?
|
||||
function testContextSegmentWithRootUser() {
|
||||
startSkipping # Skip test
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testOverridingContextTemplate() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
|
||||
local POWERLEVEL9K_CONTEXT_TEMPLATE=xx
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}xx %k%F{000}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testContextSegmentIsShownIfDefaultUserIsSetWhenForced() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
|
||||
local POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
|
||||
local DEFAULT_USER=$(whoami)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}%n@%m %k%F{000}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testContextSegmentIsShownIfForced() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context)
|
||||
local POWERLEVEL9K_ALWAYS_SHOW_USER=true
|
||||
local DEFAULT_USER=$(whoami)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}$(whoami) %k%F{000}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
86
test/segments/custom.spec
Executable file
86
test/segments/custom.spec
Executable file
|
@ -0,0 +1,86 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testCustomDirectOutputSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testCustomClosureSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
|
||||
function p9k_hello_world() {
|
||||
echo "world"
|
||||
}
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='p9k_hello_world'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testSettingBackgroundForCustomSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_BACKGROUND="yellow"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{000}world %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testSettingForegroundForCustomSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_FOREGROUND="red"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{001}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testSettingVisualIdentifierForCustomSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_ICON="hw"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}hw %f%F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testSettingVisualIdentifierForegroundColorForCustomSegment() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD="echo world"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_ICON="hw"
|
||||
local POWERLEVEL9K_CUSTOM_WORLD_VISUAL_IDENTIFIER_COLOR="red"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{001}hw %f%F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
83
test/segments/detect_virt.spec
Executable file
83
test/segments/detect_virt.spec
Executable file
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function testDetectVirtSegmentPrintsNothingIfSystemdIsNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias systemd-detect-virt="novirt"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias systemd-detect-virt
|
||||
}
|
||||
|
||||
function testDetectVirtSegmentIfSystemdReturnsPlainName() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
|
||||
alias systemd-detect-virt="echo 'xxx'"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}xxx %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias systemd-detect-virt
|
||||
}
|
||||
|
||||
function testDetectVirtSegmentIfRootFsIsOnExpectedInode() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
|
||||
# Well. This is a weak test, as it fixates the implementation,
|
||||
# but it is necessary, as the implementation relys on the root
|
||||
# directory having the inode number "2"..
|
||||
alias systemd-detect-virt="echo 'none'"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
# The original command in the implementation is "ls -di / | grep -o 2",
|
||||
# which translates to: Show the inode number of "/" and test if it is "2".
|
||||
alias ls="echo '2'"
|
||||
|
||||
assertEquals "%K{000} %F{003}none %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias ls
|
||||
unalias systemd-detect-virt
|
||||
}
|
||||
|
||||
function testDetectVirtSegmentIfRootFsIsNotOnExpectedInode() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(detect_virt)
|
||||
# Well. This is a weak test, as it fixates the implementation,
|
||||
# but it is necessary, as the implementation relys on the root
|
||||
# directory having the inode number "2"..
|
||||
alias systemd-detect-virt="echo 'none'"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
# The original command in the implementation is "ls -di / | grep -o 2",
|
||||
# which translates to: Show the inode number of "/" and test if it is "2".
|
||||
alias ls="echo '3'"
|
||||
|
||||
assertEquals "%K{000} %F{003}chroot %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias ls
|
||||
unalias systemd-detect-virt
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -7,179 +7,199 @@ SHUNIT_PARENT=$0
|
|||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
# Every test should at least use the dir segment
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
P9K_HOME="${PWD}"
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset P9K_HOME
|
||||
}
|
||||
|
||||
function testDirPathAbsoluteWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_ABSOLUTE=true
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd ~
|
||||
assertEquals "%K{blue} %F{black}/home/travis %k%F{blue}%f " "$(build_left_prompt)"
|
||||
|
||||
# Unfortunately, we cannot fake Linux or OSX here, because
|
||||
# of /home or /Users path.. That is why we change the test
|
||||
# according to the OS of the host.
|
||||
if [[ "${OS}" == 'Linux' ]]; then
|
||||
assertEquals "%K{004} %F{000}/home/${USER} %k%F{004}%f " "$(build_left_prompt)"
|
||||
elif [[ "${OS}" == 'OSX' ]]; then
|
||||
assertEquals "%K{004} %F{000}/Users/${USER} %k%F{004}%f " "$(build_left_prompt)"
|
||||
fi
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_DIR_PATH_ABSOLUTE
|
||||
}
|
||||
|
||||
function testTruncateFoldersWorks() {
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
|
||||
|
||||
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
assertEquals "%K{blue} %F{black}…/12345678/123456789 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}…/12345678/123456789 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testTruncateFolderWithHomeDirWorks() {
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
|
||||
CURRENT_DIR=$(pwd)
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
|
||||
local CURRENT_DIR=$(pwd)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd ~
|
||||
FOLDER="powerlevel9k-test-${RANDOM}"
|
||||
local FOLDER="powerlevel9k-test-${RANDOM}"
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
# Switch back to home folder as this causes the problem.
|
||||
cd ..
|
||||
|
||||
assertEquals "%K{blue} %F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}~ %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
rmdir $FOLDER
|
||||
cd ${CURRENT_DIR}
|
||||
|
||||
unset CURRENT_DIR
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
}
|
||||
|
||||
function testTruncateMiddleWorks() {
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
|
||||
|
||||
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp/po…st/1/12/123/1234/12…45/12…56/12…67/12…78/123456789 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp/po…st/1/12/123/1234/12…45/12…56/12…67/12…78/123456789 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testTruncationFromRightWorks() {
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
|
||||
|
||||
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp/po…/1/12/123/12…/12…/12…/12…/12…/123456789 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp/po…/1/12/123/12…/12…/12…/12…/12…/123456789 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testTruncateToLastWorks() {
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_last"
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_last"
|
||||
|
||||
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
assertEquals "%K{blue} %F{black}123456789 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}123456789 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testTruncateToFirstAndLastWorks() {
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_first_and_last"
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_to_first_and_last"
|
||||
|
||||
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp/powerlevel9k-test/…/…/…/…/…/…/…/12345678/123456789 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp/powerlevel9k-test/…/…/…/…/…/…/…/12345678/123456789 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testTruncateAbsoluteWorks() {
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
|
||||
|
||||
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
assertEquals "%K{blue} %F{black}…89 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}…89 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testTruncationFromRightWithEmptyDelimiter() {
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_DELIMITER=""
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_DELIMITER=""
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
|
||||
|
||||
FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=/tmp/powerlevel9k-test/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp/po/1/12/123/12/12/12/12/12/123456789 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp/po/1/12/123/12/12/12/12/12/123456789 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_DELIMITER
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testTruncateWithFolderMarkerWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_with_folder_marker"
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_with_folder_marker"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local BASEFOLDER=/tmp/powerlevel9k-test
|
||||
local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567
|
||||
|
@ -187,20 +207,20 @@ function testTruncateWithFolderMarkerWorks() {
|
|||
# Setup folder marker
|
||||
touch $BASEFOLDER/1/12/.shorten_folder_marker
|
||||
cd $FOLDER
|
||||
assertEquals "%K{blue} %F{black}/…/12/123/1234/12345/123456/1234567 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/…/12/123/1234/12345/123456/1234567 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr $BASEFOLDER
|
||||
unset BASEFOLDER
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
}
|
||||
|
||||
function testTruncateWithFolderMarkerWithChangedFolderMarker() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_with_folder_marker"
|
||||
POWERLEVEL9K_SHORTEN_FOLDER_MARKER='.xxx'
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY="truncate_with_folder_marker"
|
||||
local POWERLEVEL9K_SHORTEN_FOLDER_MARKER='.xxx'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local BASEFOLDER=/tmp/powerlevel9k-test
|
||||
local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567
|
||||
|
@ -208,15 +228,10 @@ function testTruncateWithFolderMarkerWithChangedFolderMarker() {
|
|||
# Setup folder marker
|
||||
touch $BASEFOLDER/1/12/.xxx
|
||||
cd $FOLDER
|
||||
assertEquals "%K{blue} %F{black}/…/12/123/1234/12345/123456/1234567 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/…/12/123/1234/12345/123456/1234567 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr $BASEFOLDER
|
||||
unset BASEFOLDER
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_SHORTEN_FOLDER_MARKER
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
}
|
||||
|
||||
function testTruncateWithPackageNameWorks() {
|
||||
|
@ -237,18 +252,19 @@ function testTruncateWithPackageNameWorks() {
|
|||
# Go back to deeper folder
|
||||
cd "${FOLDER}"
|
||||
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
|
||||
assertEquals "%K{blue} %F{black}My_Package/1/12/123/12…/12…/12…/12…/12…/123456789 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{004} %F{000}My_Package/1/12/123/12…/12…/12…/12…/12…/123456789 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
# Go back
|
||||
cd $p9kFolder
|
||||
rm -fr $BASEFOLDER
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
}
|
||||
|
||||
function testTruncateWithPackageNameIfRepoIsSymlinkedInsideDeepFolder() {
|
||||
|
@ -276,18 +292,19 @@ function testTruncateWithPackageNameIfRepoIsSymlinkedInsideDeepFolder() {
|
|||
# Go to deep folder inside linked repo
|
||||
cd linked-repo/asdfasdf/qwerqwer
|
||||
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
|
||||
assertEquals "%K{blue} %F{black}My_Package/as…/qwerqwer %k%F{blue}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{004} %F{000}My_Package/as…/qwerqwer %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
# Go back
|
||||
cd $p9kFolder
|
||||
rm -fr $BASEFOLDER
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
}
|
||||
|
||||
function testTruncateWithPackageNameIfRepoIsSymlinkedInsideGitDir() {
|
||||
|
@ -311,123 +328,162 @@ function testTruncateWithPackageNameIfRepoIsSymlinkedInsideGitDir() {
|
|||
|
||||
cd linked-repo/.git/refs/heads
|
||||
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
|
||||
assertEquals "%K{blue} %F{black}My_Package/.g…/re…/heads %k%F{blue}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{004} %F{000}My_Package/.g…/re…/heads %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
# Go back
|
||||
cd $p9kFolder
|
||||
rm -fr $BASEFOLDER
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
}
|
||||
|
||||
function testHomeFolderDetectionWorks() {
|
||||
POWERLEVEL9K_HOME_ICON='home-icon'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_HOME_ICON='home-icon'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd ~
|
||||
assertEquals "%K{blue} %F{black%}home-icon %F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}home-icon %F{000}~ %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_HOME_ICON
|
||||
}
|
||||
|
||||
function testHomeSubfolderDetectionWorks() {
|
||||
POWERLEVEL9K_HOME_SUB_ICON='sub-icon'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_HOME_SUB_ICON='sub-icon'
|
||||
|
||||
FOLDER=~/powerlevel9k-test
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=~/powerlevel9k-test
|
||||
mkdir $FOLDER
|
||||
cd $FOLDER
|
||||
assertEquals "%K{blue} %F{black%}sub-icon %F{black}~/powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}sub-icon %F{000}~/powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr $FOLDER
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_HOME_SUB_ICON
|
||||
}
|
||||
|
||||
function testOtherFolderDetectionWorks() {
|
||||
POWERLEVEL9K_FOLDER_ICON='folder-icon'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_FOLDER_ICON='folder-icon'
|
||||
|
||||
FOLDER=/tmp/powerlevel9k-test
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER=/tmp/powerlevel9k-test
|
||||
mkdir $FOLDER
|
||||
cd $FOLDER
|
||||
assertEquals "%K{blue} %F{black%}folder-icon %F{black}/tmp/powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}folder-icon %F{000}/tmp/powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr $FOLDER
|
||||
unset FOLDER
|
||||
unset POWERLEVEL9K_FOLDER_ICON
|
||||
}
|
||||
|
||||
function testChangingDirPathSeparator() {
|
||||
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
local FOLDER="/tmp/powerlevel9k-test/1/2"
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
assertEquals "%K{blue} %F{black}xXxtmpxXxpowerlevel9k-testxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}xXxtmpxXxpowerlevel9k-testxXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset FOLDER
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
|
||||
}
|
||||
|
||||
function testHomeFolderAbbreviation() {
|
||||
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local dir=$PWD
|
||||
|
||||
cd ~/
|
||||
# default
|
||||
POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
|
||||
assertEquals "%K{blue} %F{black}~ %k%F{blue}%f " "$(build_left_prompt)"
|
||||
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{004} %F{000}~ %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
# substituted
|
||||
POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
|
||||
assertEquals "%K{blue} %F{black}qQq %k%F{blue}%f " "$(build_left_prompt)"
|
||||
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{004} %F{000}qQq %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd /tmp
|
||||
# default
|
||||
POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
|
||||
assertEquals "%K{blue} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='~'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{004} %F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
# substituted
|
||||
POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
|
||||
assertEquals "%K{blue} %F{black}/tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
local POWERLEVEL9K_HOME_FOLDER_ABBREVIATION='qQq'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{004} %F{000}/tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd "$dir"
|
||||
}
|
||||
|
||||
function testOmittingFirstCharacterWorks() {
|
||||
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
POWERLEVEL9K_FOLDER_ICON='folder-icon'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
local POWERLEVEL9K_FOLDER_ICON='folder-icon'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{blue} %F{black%}folder-icon %F{black}tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}folder-icon %F{000}tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_FOLDER_ICON
|
||||
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
|
||||
}
|
||||
|
||||
function testOmittingFirstCharacterWorksWithChangingPathSeparator() {
|
||||
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
POWERLEVEL9K_FOLDER_ICON='folder-icon'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
local POWERLEVEL9K_FOLDER_ICON='folder-icon'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test/1/2
|
||||
cd /tmp/powerlevel9k-test/1/2
|
||||
|
||||
assertEquals "%K{blue} %F{black%}folder-icon %F{black}tmpxXxpowerlevel9k-testxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}folder-icon %F{000}tmpxXxpowerlevel9k-testxXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_FOLDER_ICON
|
||||
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
|
||||
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
|
||||
}
|
||||
|
||||
# This test makes it obvious that combining a truncation strategy
|
||||
|
@ -438,210 +494,278 @@ function testOmittingFirstCharacterWorksWithChangingPathSeparator() {
|
|||
# But it does more sense in combination with other truncation
|
||||
# strategies.
|
||||
function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndDefaultTruncation() {
|
||||
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_folders'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test/1/2
|
||||
cd /tmp/powerlevel9k-test/1/2
|
||||
|
||||
assertEquals "%K{blue} %F{black}xXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}xXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
|
||||
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndMiddleTruncation() {
|
||||
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_middle'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test/1/2
|
||||
cd /tmp/powerlevel9k-test/1/2
|
||||
|
||||
assertEquals "%K{blue} %F{black}tmpxXxpo…stxXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}tmpxXxpo…stxXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
|
||||
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testOmittingFirstCharacterWorksWithChangingPathSeparatorAndRightTruncation() {
|
||||
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_from_right'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test/1/2
|
||||
cd /tmp/powerlevel9k-test/1/2
|
||||
|
||||
assertEquals "%K{blue} %F{black}tmpxXxpo…xXx1xXx2 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}tmpxXxpo…xXx1xXx2 %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
|
||||
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testTruncateToUniqueWorks() {
|
||||
POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_to_unique'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER=true
|
||||
local POWERLEVEL9K_DIR_PATH_SEPARATOR='xXx'
|
||||
local POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
local POWERLEVEL9K_SHORTEN_STRATEGY='truncate_to_unique'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test/adam/devl
|
||||
mkdir -p /tmp/powerlevel9k-test/alice/devl
|
||||
mkdir -p /tmp/powerlevel9k-test/alice/docs
|
||||
mkdir -p /tmp/powerlevel9k-test/bob/docs
|
||||
cd /tmp/powerlevel9k-test/alice/devl
|
||||
|
||||
assertEquals "%K{blue} %F{black}txXxpxXxalxXxde %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}txXxpxXxalxXxde %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_SEPARATOR
|
||||
unset POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
}
|
||||
|
||||
function testBoldHomeDirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd ~
|
||||
|
||||
assertEquals "%K{blue} %F{black}%B~%b %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}%B~%b %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
|
||||
}
|
||||
|
||||
function testBoldHomeSubdirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p ~/powerlevel9k-test
|
||||
cd ~/powerlevel9k-test
|
||||
|
||||
assertEquals "%K{blue} %F{black}~/%Bpowerlevel9k-test%b %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}~/%Bpowerlevel9k-test%b %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr ~/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
|
||||
}
|
||||
|
||||
function testBoldRootDirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd /
|
||||
|
||||
assertEquals "%K{blue} %F{black}%B/%b %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}%B/%b %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
|
||||
}
|
||||
|
||||
function testBoldRootSubdirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{blue} %F{black}/%Btmp%b %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/%Btmp%b %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
|
||||
}
|
||||
|
||||
function testBoldRootSubSubdirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD=true
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test
|
||||
cd /tmp/powerlevel9k-test
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp/%Bpowerlevel9k-test%b %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp/%Bpowerlevel9k-test%b %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_BOLD
|
||||
}
|
||||
|
||||
function testHighlightHomeWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd ~
|
||||
|
||||
assertEquals "%K{blue} %F{black}%F{red}~ %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}%F{red}~ %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
|
||||
}
|
||||
|
||||
function testHighlightHomeSubdirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p ~/powerlevel9k-test
|
||||
cd ~/powerlevel9k-test
|
||||
|
||||
assertEquals "%K{blue} %F{black}~/%F{red}powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}~/%F{red}powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr ~/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
|
||||
}
|
||||
|
||||
function testHighlightRootWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd /
|
||||
|
||||
assertEquals "%K{blue} %F{black}%F{red}/ %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}%F{red}/ %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
|
||||
}
|
||||
|
||||
function testHighlightRootSubdirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
cd /tmp
|
||||
|
||||
assertEquals "%K{blue} %F{black}/%F{red}tmp %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/%F{red}tmp %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
|
||||
}
|
||||
|
||||
function testHighlightRootSubSubdirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND='red'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir /tmp/powerlevel9k-test
|
||||
cd /tmp/powerlevel9k-test
|
||||
|
||||
assertEquals "%K{blue} %F{black}/tmp/%F{red}powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}/tmp/%F{red}powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_HIGHLIGHT_FOREGROUND
|
||||
}
|
||||
|
||||
function testDirSeparatorColorHomeSubdirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND='red'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND='red'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p ~/powerlevel9k-test
|
||||
cd ~/powerlevel9k-test
|
||||
|
||||
assertEquals "%K{blue} %F{black}~%F{red}/%F{black}powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}~%F{red}/%F{black}powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr ~/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND
|
||||
}
|
||||
|
||||
function testDirSeparatorColorRootSubSubdirWorks() {
|
||||
POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND='red'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
local POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND='red'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
mkdir -p /tmp/powerlevel9k-test
|
||||
cd /tmp/powerlevel9k-test
|
||||
|
||||
assertEquals "%K{blue} %F{black}%F{red}/%F{black}tmp%F{red}/%F{black}powerlevel9k-test %k%F{blue}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{004} %F{000}%F{red}/%F{black}tmp%F{red}/%F{black}powerlevel9k-test %k%F{004}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset POWERLEVEL9K_DIR_PATH_SEPARATOR_FOREGROUND
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
||||
|
|
131
test/segments/disk_usage.spec
Executable file
131
test/segments/disk_usage.spec
Executable file
|
@ -0,0 +1,131 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
# Test specific
|
||||
P9K_HOME=$(pwd)
|
||||
FOLDER=/tmp/powerlevel9k-test
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset FOLDER
|
||||
unset P9K_HOME
|
||||
|
||||
# Remove IP cache file
|
||||
rm -f ${POWERLEVEL9K_PUBLIC_IP_FILE}
|
||||
}
|
||||
|
||||
function testDiskUsageSegmentWhenDiskIsAlmostFull() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
|
||||
df() {
|
||||
echo "Filesystem 1K-blocks Used Available Use% Mounted on
|
||||
/dev/disk1 487219288 471466944 15496344 97% /"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{001} %F{007}hdd %f%F{007}97%% %k%F{001}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction df
|
||||
}
|
||||
|
||||
function testDiskUsageSegmentWhenDiskIsVeryFull() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
|
||||
df() {
|
||||
echo "Filesystem 1K-blocks Used Available Use% Mounted on
|
||||
/dev/disk1 487219288 471466944 15496344 94% /"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{000}hdd %f%F{000}94%% %k%F{003}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction df
|
||||
}
|
||||
|
||||
function testDiskUsageSegmentWhenDiskIsQuiteEmpty() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
|
||||
df() {
|
||||
echo "Filesystem 1K-blocks Used Available Use% Mounted on
|
||||
/dev/disk1 487219288 471466944 15496344 4% /"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}hdd %f%F{003}4%% %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction df
|
||||
}
|
||||
|
||||
function testDiskUsageSegmentPrintsNothingIfDiskIsQuiteEmptyAndOnlyWarningsShouldBeDisplayed() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage custom_world)
|
||||
df() {
|
||||
echo "Filesystem 1K-blocks Used Available Use% Mounted on
|
||||
/dev/disk1 487219288 471466944 15496344 4% /"
|
||||
}
|
||||
|
||||
local POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=true
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction df
|
||||
}
|
||||
|
||||
function testDiskUsageSegmentWarningLevelCouldBeAdjusted() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
|
||||
local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=10
|
||||
df() {
|
||||
echo "Filesystem 1K-blocks Used Available Use% Mounted on
|
||||
/dev/disk1 487219288 471466944 15496344 11% /"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{000}hdd %f%F{000}11%% %k%F{003}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction df
|
||||
}
|
||||
|
||||
function testDiskUsageSegmentCriticalLevelCouldBeAdjusted() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(disk_usage)
|
||||
local POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=5
|
||||
local POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=10
|
||||
df() {
|
||||
echo "Filesystem 1K-blocks Used Available Use% Mounted on
|
||||
/dev/disk1 487219288 471466944 15496344 11% /"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{001} %F{007}hdd %f%F{007}11%% %k%F{001}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction df
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
|
|||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function mockGo() {
|
||||
|
@ -35,52 +33,56 @@ function mockGoEmptyGopath() {
|
|||
|
||||
function testGo() {
|
||||
alias go=mockGo
|
||||
POWERLEVEL9K_GO_ICON=""
|
||||
local POWERLEVEL9K_GO_ICON=""
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(go_version)
|
||||
|
||||
PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{green} %F{grey93%} %F{grey93}go1.5.3 %k%F{green}%f " "$(build_left_prompt)"
|
||||
local PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
|
||||
|
||||
assertEquals "%K{002} %F{255} %F{255}go1.5.3 %k%F{002}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_GO_ICON
|
||||
unset PWD
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unalias go
|
||||
}
|
||||
|
||||
function testGoSegmentPrintsNothingIfEmptyGopath() {
|
||||
alias go=mockGoEmptyGopath
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias go=mockGoEmptyGopath
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testGoSegmentPrintsNothingIfNotInGopath() {
|
||||
alias go=mockGo
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias go=mockGo
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testGoSegmentPrintsNothingIfGoIsNotAvailable() {
|
||||
alias go=noGo
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world go_version)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias go=noGo
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
unalias go
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
||||
|
|
231
test/segments/ip.spec
Executable file
231
test/segments/ip.spec
Executable file
|
@ -0,0 +1,231 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testIpSegmentPrintsNothingOnOsxIfNotConnected() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
|
||||
alias networksetup='echo "not connected"'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local OS="OSX" # Fake OSX
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias networksetup
|
||||
}
|
||||
|
||||
function testIpSegmentPrintsNothingOnLinuxIfNotConnected() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip custom_world)
|
||||
alias ip='echo "not connected"'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local OS="Linux" # Fake Linux
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias ip
|
||||
}
|
||||
|
||||
function testIpSegmentWorksOnOsxWithNoInterfaceSpecified() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
|
||||
alias networksetup="echo 'An asterisk (*) denotes that a network service is disabled.
|
||||
(1) Ethernet
|
||||
(Hardware Port: Ethernet, Device: en0)
|
||||
|
||||
(2) FireWire
|
||||
(Hardware Port: FireWire, Device: fw0)
|
||||
|
||||
(3) Wi-Fi
|
||||
(Hardware Port: Wi-Fi, Device: en1)
|
||||
|
||||
(4) Bluetooth PAN
|
||||
(Hardware Port: Bluetooth PAN, Device: en3)
|
||||
|
||||
(5) Thunderbolt Bridge
|
||||
(Hardware Port: Thunderbolt Bridge, Device: bridge0)
|
||||
|
||||
(6) Apple USB Ethernet Adapter
|
||||
(Hardware Port: Apple USB Ethernet Adapter, Device: en4)
|
||||
'"
|
||||
|
||||
alias ipconfig="_(){ echo '1.2.3.4'; };_"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local OS='OSX' # Fake OSX
|
||||
|
||||
assertEquals "%K{006} %F{000}IP %f%F{000}1.2.3.4 %k%F{006}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias ipconfig
|
||||
unalias networksetup
|
||||
}
|
||||
|
||||
# There could be more than one confiured network interfaces.
|
||||
# `networksetup -listnetworkserviceorder` lists the interfaces
|
||||
# in hierarchical order, but from outside this is not obvious
|
||||
# (implementation detail). So we need a test for this case.
|
||||
function testIpSegmentWorksOnOsxWithMultipleInterfacesSpecified() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
|
||||
alias networksetup="echo 'An asterisk (*) denotes that a network service is disabled.
|
||||
(1) Ethernet
|
||||
(Hardware Port: Ethernet, Device: en0)
|
||||
|
||||
(2) FireWire
|
||||
(Hardware Port: FireWire, Device: fw0)
|
||||
|
||||
(3) Wi-Fi
|
||||
(Hardware Port: Wi-Fi, Device: en1)
|
||||
|
||||
(4) Bluetooth PAN
|
||||
(Hardware Port: Bluetooth PAN, Device: en3)
|
||||
|
||||
(5) Thunderbolt Bridge
|
||||
(Hardware Port: Thunderbolt Bridge, Device: bridge0)
|
||||
|
||||
(6) Apple USB Ethernet Adapter
|
||||
(Hardware Port: Apple USB Ethernet Adapter, Device: en4)
|
||||
'"
|
||||
|
||||
# Return a unique IP address for every interface
|
||||
ipconfig() {
|
||||
case "${2}" {
|
||||
en0)
|
||||
echo 1.2.3.4
|
||||
;;
|
||||
fw0)
|
||||
echo 2.3.4.5
|
||||
;;
|
||||
en1)
|
||||
echo 3.4.5.6
|
||||
;;
|
||||
en3)
|
||||
echo 4.5.6.7
|
||||
;;
|
||||
}
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local OS='OSX' # Fake OSX
|
||||
|
||||
assertEquals "%K{006} %F{000}IP %f%F{000}1.2.3.4 %k%F{006}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction ipconfig
|
||||
unalias networksetup
|
||||
}
|
||||
|
||||
function testIpSegmentWorksOnOsxWithInterfaceSpecified() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
|
||||
local POWERLEVEL9K_IP_INTERFACE='xxx'
|
||||
alias ipconfig="_(){ echo '1.2.3.4'; };_"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local OS='OSX' # Fake OSX
|
||||
|
||||
assertEquals "%K{006} %F{000}IP %f%F{000}1.2.3.4 %k%F{006}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias ipconfig
|
||||
}
|
||||
|
||||
function testIpSegmentWorksOnLinuxWithNoInterfaceSpecified() {
|
||||
setopt aliases
|
||||
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
|
||||
# That command is harder to test, as it is used at first
|
||||
# to get all relevant network interfaces and then for
|
||||
# getting the configuration of that segment..
|
||||
ip(){
|
||||
if [[ "$*" == 'link ls up' ]]; then
|
||||
echo "1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
|
||||
link/ether 08:00:27:7e:84:45 brd ff:ff:ff:ff:ff:ff";
|
||||
fi
|
||||
|
||||
if [[ "$*" == '-4 a show eth0' ]]; then
|
||||
echo '2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
|
||||
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
|
||||
valid_lft forever preferred_lft forever';
|
||||
fi
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local OS='Linux' # Fake Linux
|
||||
|
||||
assertEquals "%K{006} %F{000}IP %f%F{000}10.0.2.15 %k%F{006}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction ip
|
||||
}
|
||||
|
||||
function testIpSegmentWorksOnLinuxWithMultipleInterfacesSpecified() {
|
||||
setopt aliases
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
|
||||
# That command is harder to test, as it is used at first
|
||||
# to get all relevant network interfaces and then for
|
||||
# getting the configuration of that segment..
|
||||
ip(){
|
||||
if [[ "$*" == 'link ls up' ]]; then
|
||||
echo "1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
|
||||
link/ether 08:00:27:7e:84:45 brd ff:ff:ff:ff:ff:ff
|
||||
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
|
||||
link/ether 08:00:27:7e:84:45 brd ff:ff:ff:ff:ff:ff
|
||||
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
|
||||
link/ether 08:00:27:7e:84:45 brd ff:ff:ff:ff:ff:ff";
|
||||
fi
|
||||
|
||||
if [[ "$*" == '-4 a show eth1' ]]; then
|
||||
echo '3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
|
||||
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
|
||||
valid_lft forever preferred_lft forever';
|
||||
fi
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local OS='Linux' # Fake Linux
|
||||
|
||||
assertEquals "%K{006} %F{000}IP %f%F{000}10.0.2.15 %k%F{006}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction ip
|
||||
}
|
||||
|
||||
function testIpSegmentWorksOnLinuxWithInterfaceSpecified() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ip)
|
||||
local POWERLEVEL9K_IP_INTERFACE='xxx'
|
||||
ip(){
|
||||
echo '2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
|
||||
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
|
||||
valid_lft forever preferred_lft forever';
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local OS='Linux' # Fake Linux
|
||||
|
||||
assertEquals "%K{006} %F{000}IP %f%F{000}10.0.2.15 %k%F{006}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction ip
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
|
|||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function mockKubectl() {
|
||||
|
@ -66,33 +64,41 @@ function mockKubectlOtherNamespace() {
|
|||
}
|
||||
|
||||
function testKubeContext() {
|
||||
alias kubectl=mockKubectl
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
|
||||
alias kubectl=mockKubectl
|
||||
|
||||
assertEquals "%K{magenta} %F{white%}⎈ %F{white}minikube/default %k%F{magenta}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{005} %F{007}⎈ %F{007}minikube/default %k%F{005}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unalias kubectl
|
||||
}
|
||||
function testKubeContextOtherNamespace() {
|
||||
alias kubectl=mockKubectlOtherNamespace
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(kubecontext)
|
||||
alias kubectl=mockKubectlOtherNamespace
|
||||
|
||||
assertEquals "%K{magenta} %F{white%}⎈ %F{white}minikube/kube-system %k%F{magenta}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{005} %F{007}⎈ %F{007}minikube/kube-system %k%F{005}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unalias kubectl
|
||||
}
|
||||
function testKubeContextPrintsNothingIfKubectlNotAvailable() {
|
||||
alias kubectl=noKubectl
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world kubecontext)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias kubectl=noKubectl
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
unalias kubectl
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
||||
|
|
|
@ -7,8 +7,6 @@ SHUNIT_PARENT=$0
|
|||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function mockLaravelVersion() {
|
||||
|
@ -28,43 +26,47 @@ 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{white}5.4.23 %k%F{maroon}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{009} %F{007}x %F{007}5.4.23 %k%F{009}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_LARAVEL_ICON
|
||||
unalias php
|
||||
}
|
||||
|
||||
function testLaravelVersionSegmentIfArtisanIsNotAvailable() {
|
||||
alias php=mockNoLaravelVersion
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
POWERLEVEL9K_LARAVEL_ICON='x'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world laravel_version)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local POWERLEVEL9K_LARAVEL_ICON='x'
|
||||
alias php=mockNoLaravelVersion
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_LARAVEL_ICON
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
unalias php
|
||||
}
|
||||
|
||||
function testLaravelVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
|
||||
alias php=noPhp
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
POWERLEVEL9K_LARAVEL_ICON='x'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world laravel_version)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local POWERLEVEL9K_LARAVEL_ICON='x'
|
||||
alias php=noPhp
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_LARAVEL_ICON
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
unalias php
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
||||
|
|
149
test/segments/load.spec
Executable file
149
test/segments/load.spec
Executable file
|
@ -0,0 +1,149 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and git init it.
|
||||
FOLDER=/tmp/powerlevel9k-test/load-test
|
||||
mkdir -p "${FOLDER}"
|
||||
cd $FOLDER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
}
|
||||
|
||||
function testLoadSegmentWorksOnOsx() {
|
||||
sysctl() {
|
||||
if [[ "$*" == 'vm.loadavg' ]]; then
|
||||
echo "vm.loadavg: { 1,38 1,45 2,16 }";
|
||||
fi
|
||||
|
||||
if [[ "$*" == '-n hw.logicalcpu' ]]; then
|
||||
echo "4";
|
||||
fi
|
||||
}
|
||||
|
||||
local POWERLEVEL9K_LOAD_WHICH=1
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="OSX" # Fake OSX
|
||||
|
||||
assertEquals "%K{002} %F{000}L %f%F{000}1.38 " "$(prompt_load left 1 false ${FOLDER})"
|
||||
|
||||
unfunction sysctl
|
||||
}
|
||||
|
||||
function testLoadSegmentWorksOnBsd() {
|
||||
sysctl() {
|
||||
if [[ "$*" == 'vm.loadavg' ]]; then
|
||||
echo "vm.loadavg: { 1,38 1,45 2,16 }";
|
||||
fi
|
||||
|
||||
if [[ "$*" == '-n hw.ncpu' ]]; then
|
||||
echo "4";
|
||||
fi
|
||||
}
|
||||
|
||||
local POWERLEVEL9K_LOAD_WHICH=1
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="BSD" # Fake BSD
|
||||
|
||||
assertEquals "%K{002} %F{000}L %f%F{000}1.38 " "$(prompt_load left 1 false ${FOLDER})"
|
||||
|
||||
unfunction sysctl
|
||||
}
|
||||
|
||||
function testLoadSegmentWorksOnLinux() {
|
||||
# Prepare loadavg
|
||||
mkdir proc
|
||||
echo "1.38 0.01 0.05 1/87 8641" > proc/loadavg
|
||||
|
||||
alias nproc="echo 4"
|
||||
local POWERLEVEL9K_LOAD_WHICH=1
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="Linux" # Fake Linux
|
||||
|
||||
assertEquals "%K{002} %F{000}L %f%F{000}1.38 " "$(prompt_load left 1 false ${FOLDER})"
|
||||
|
||||
unalias nproc
|
||||
}
|
||||
|
||||
# Test normal state. This test is not OS specific.
|
||||
# We test it as the Linux version, but that
|
||||
# does not matter here.
|
||||
function testLoadSegmentNormalState() {
|
||||
# Prepare loadavg
|
||||
mkdir proc
|
||||
echo "1.00 0.01 0.05 1/87 8641" > proc/loadavg
|
||||
|
||||
alias nproc="echo 4"
|
||||
local POWERLEVEL9K_LOAD_WHICH=1
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="Linux" # Fake Linux
|
||||
|
||||
assertEquals "%K{002} %F{000}L %f%F{000}1.00 " "$(prompt_load left 1 false ${FOLDER})"
|
||||
|
||||
unalias nproc
|
||||
}
|
||||
|
||||
# Test warning state. This test is not OS specific.
|
||||
# We test it as the Linux version, but that
|
||||
# does not matter here.
|
||||
function testLoadSegmentWarningState() {
|
||||
# Prepare loadavg
|
||||
mkdir proc
|
||||
echo "2.01 0.01 0.05 1/87 8641" > proc/loadavg
|
||||
|
||||
alias nproc="echo 4"
|
||||
local POWERLEVEL9K_LOAD_WHICH=1
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="Linux" # Fake Linux
|
||||
|
||||
assertEquals "%K{003} %F{000}L %f%F{000}2.01 " "$(prompt_load left 1 false ${FOLDER})"
|
||||
|
||||
unalias nproc
|
||||
}
|
||||
|
||||
# Test critical state. This test is not OS specific.
|
||||
# We test it as the Linux version, but that
|
||||
# does not matter here.
|
||||
function testLoadSegmentCriticalState() {
|
||||
# Prepare loadavg
|
||||
mkdir proc
|
||||
echo "2.81 0.01 0.05 1/87 8641" > proc/loadavg
|
||||
|
||||
alias nproc="echo 4"
|
||||
local POWERLEVEL9K_LOAD_WHICH=1
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="Linux" # Fake Linux
|
||||
|
||||
assertEquals "%K{001} %F{000}L %f%F{000}2.81 " "$(prompt_load left 1 false ${FOLDER})"
|
||||
|
||||
unalias nproc
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
41
test/segments/node_version.spec
Executable file
41
test/segments/node_version.spec
Executable file
|
@ -0,0 +1,41 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testNodeVersionSegmentPrintsNothingWithoutNode() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias node="nonode 2>/dev/null"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias node
|
||||
}
|
||||
|
||||
function testNodeVersionSegmentWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(node_version)
|
||||
node() {
|
||||
echo "v1.2.3"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{007}⬢ %f%F{007}1.2.3 %k%F{002}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction node
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
99
test/segments/nodeenv.spec
Executable file
99
test/segments/nodeenv.spec
Executable file
|
@ -0,0 +1,99 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
# Test specfic
|
||||
# unset all possible user specified variables
|
||||
unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset NODE_VIRTUAL_ENV
|
||||
}
|
||||
|
||||
function testNodeenvSegmentPrintsNothingWithoutNode() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias node="nonode 2>/dev/null"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias node
|
||||
}
|
||||
|
||||
function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvIsNotSet() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
node() {
|
||||
echo "v1.2.3"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction node
|
||||
}
|
||||
|
||||
function testNodeenvSegmentPrintsNothingIfNodeVirtualEnvDisablePromptIsSet() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
node() {
|
||||
echo "v1.2.3"
|
||||
}
|
||||
NODE_VIRTUAL_ENV="node-env"
|
||||
NODE_VIRTUAL_ENV_DISABLE_PROMPT=true
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
|
||||
unset NODE_VIRTUAL_ENV
|
||||
unfunction node
|
||||
}
|
||||
|
||||
function testNodeenvSegmentPrintsAtLeastNodeEnvWithoutNode() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
|
||||
alias node="nonode 2>/dev/null"
|
||||
NODE_VIRTUAL_ENV="node-env"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{002}⬢ %f%F{002}[node-env] %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unset NODE_VIRTUAL_ENV
|
||||
unalias node
|
||||
}
|
||||
|
||||
function testNodeenvSegmentWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nodeenv)
|
||||
node() {
|
||||
echo "v1.2.3"
|
||||
}
|
||||
NODE_VIRTUAL_ENV="node-env"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{002}⬢ %f%F{002}v1.2.3[node-env] %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction node
|
||||
unset NODE_VIRTUAL_ENV
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
72
test/segments/nvm.spec
Executable file
72
test/segments/nvm.spec
Executable file
|
@ -0,0 +1,72 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and git init it.
|
||||
FOLDER=/tmp/powerlevel9k-test/nvm-test
|
||||
mkdir -p "${FOLDER}/bin"
|
||||
OLD_PATH=$PATH
|
||||
PATH=${FOLDER}/bin:$PATH
|
||||
cd $FOLDER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Restore old path
|
||||
PATH="${OLD_PATH}"
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
}
|
||||
|
||||
function testNvmSegmentPrintsNothingIfNvmIsNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testNvmSegmentWorksWithoutHavingADefaultAlias() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
function nvm_version() {
|
||||
[[ ${1} == 'current' ]] && echo 'v4.6.0' || echo 'v1.4.0'
|
||||
}
|
||||
|
||||
assertEquals "%K{005} %F{000}⬢ %f%F{000}4.6.0 %k%F{005}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testNvmSegmentPrintsNothingWhenOnDefaultVersion() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(nvm custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
function nvm_version() {
|
||||
[[ ${1} == 'current' ]] && echo 'v4.6.0' || echo 'v4.6.0'
|
||||
}
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
42
test/segments/php_version.spec
Executable file
42
test/segments/php_version.spec
Executable file
|
@ -0,0 +1,42 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testPhpVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias php="nophp"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias php
|
||||
}
|
||||
|
||||
function testPhpVersionSegmentWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(php_version)
|
||||
alias php="echo 'PHP 5.6.27 (cli) (built: Oct 23 2016 11:47:58)
|
||||
Copyright (c) 1997-2016 The PHP Group
|
||||
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
|
||||
'"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{013} %F{255}PHP 5.6.27 %k%F{013}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias php
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
222
test/segments/public_ip.spec
Executable file
222
test/segments/public_ip.spec
Executable file
|
@ -0,0 +1,222 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
# Test specific
|
||||
P9K_HOME=$(pwd)
|
||||
FOLDER=/tmp/powerlevel9k-test
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
# Change cache file, so that the users environment don't
|
||||
# interfere with the tests.
|
||||
POWERLEVEL9K_PUBLIC_IP_FILE=$FOLDER/public_ip_file
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset FOLDER
|
||||
unset P9K_HOME
|
||||
|
||||
# Unset cache file
|
||||
unset POWERLEVEL9K_PUBLIC_IP_FILE
|
||||
}
|
||||
|
||||
function testPublicIpSegmentPrintsNothingByDefaultIfHostIsNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip custom_world)
|
||||
local POWERLEVEL9K_PUBLIC_IP_HOST='http://unknown.xyz'
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
# We need to overwrite dig, as this is a fallback method that
|
||||
# uses an alternative host.
|
||||
alias dig='nodig'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias dig
|
||||
}
|
||||
|
||||
function testPublicIpSegmentPrintsNoticeIfNotConnected() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
|
||||
local POWERLEVEL9K_PUBLIC_IP_HOST='http://unknown.xyz'
|
||||
local POWERLEVEL9K_PUBLIC_IP_NONE="disconnected"
|
||||
# We need to overwrite dig, as this is a fallback method that
|
||||
# uses an alternative host.
|
||||
alias dig='nodig'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}disconnected %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias dig
|
||||
}
|
||||
|
||||
function testPublicIpSegmentWorksWithWget() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
|
||||
alias dig='nodig'
|
||||
alias curl='nocurl'
|
||||
wget() {
|
||||
echo "wget 1.2.3.4"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}wget 1.2.3.4 %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction wget
|
||||
unalias dig
|
||||
unalias curl
|
||||
}
|
||||
|
||||
function testPublicIpSegmentUsesCurlAsFallbackMethodIfWgetIsNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
|
||||
alias dig='nodig'
|
||||
alias wget='nowget'
|
||||
curl() {
|
||||
echo "curl 1.2.3.4"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}curl 1.2.3.4 %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction curl
|
||||
unalias dig
|
||||
unalias wget
|
||||
}
|
||||
|
||||
function testPublicIpSegmentUsesDigAsFallbackMethodIfWgetAndCurlAreNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
|
||||
alias curl='nocurl'
|
||||
alias wget='nowget'
|
||||
dig() {
|
||||
echo "dig 1.2.3.4"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}dig 1.2.3.4 %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction dig
|
||||
unalias curl
|
||||
unalias wget
|
||||
}
|
||||
|
||||
function testPublicIpSegmentCachesFile() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
|
||||
dig() {
|
||||
echo "first"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}first %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
dig() {
|
||||
echo "second"
|
||||
}
|
||||
|
||||
# Segment should not have changed!
|
||||
assertEquals "%K{000} %F{007}first %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction dig
|
||||
}
|
||||
|
||||
function testPublicIpSegmentRefreshesCachesFileAfterTimeout() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
|
||||
local POWERLEVEL9K_PUBLIC_IP_TIMEOUT=2
|
||||
dig() {
|
||||
echo "first"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}first %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
sleep 3
|
||||
dig() {
|
||||
echo "second"
|
||||
}
|
||||
|
||||
# Segment should not have changed!
|
||||
assertEquals "%K{000} %F{007}second %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction dig
|
||||
}
|
||||
|
||||
function testPublicIpSegmentRefreshesCachesFileIfEmpty() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
|
||||
dig() {
|
||||
echo "first"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}first %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
# Truncate cache file
|
||||
echo "" >! $POWERLEVEL9K_PUBLIC_IP_FILE
|
||||
|
||||
dig() {
|
||||
echo "second"
|
||||
}
|
||||
|
||||
# Segment should not have changed!
|
||||
assertEquals "%K{000} %F{007}second %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction dig
|
||||
}
|
||||
|
||||
function testPublicIpSegmentWhenGoingOnline() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(public_ip)
|
||||
local POWERLEVEL9K_PUBLIC_IP_METHODS="dig"
|
||||
local POWERLEVEL9K_PUBLIC_IP_NONE="disconnected"
|
||||
alias dig="nodig"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}disconnected %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias dig
|
||||
|
||||
dig() {
|
||||
echo "second"
|
||||
}
|
||||
|
||||
# Segment should not have changed!
|
||||
assertEquals "%K{000} %F{007}second %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction dig
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
66
test/segments/ram.spec
Executable file
66
test/segments/ram.spec
Executable file
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and git init it.
|
||||
FOLDER=/tmp/powerlevel9k-test/ram-test
|
||||
mkdir -p "${FOLDER}"
|
||||
cd $FOLDER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
}
|
||||
|
||||
function testRamSegmentWorksOnOsx() {
|
||||
alias vm_stat="echo 'Mach Virtual Memory Statistics: (page size of 4096 bytes)
|
||||
Pages free: 299687.
|
||||
Pages active: 1623792.
|
||||
Pages inactive: 1313411.
|
||||
'"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="OSX" # Fake OSX
|
||||
|
||||
assertEquals "%K{003} %F{000}RAM %f%F{000}6.15G " "$(prompt_ram left 1 false ${FOLDER})"
|
||||
|
||||
unalias vm_stat
|
||||
}
|
||||
|
||||
function testRamSegmentWorksOnBsd() {
|
||||
mkdir -p var/run
|
||||
echo "avail memory 5678B 299687 4444G 299" > var/run/dmesg.boot
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="BSD" # Fake BSD
|
||||
|
||||
assertEquals "%K{003} %F{000}RAM %f%F{000}0.29M " "$(prompt_ram left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
function testRamSegmentWorksOnLinux() {
|
||||
mkdir proc
|
||||
echo "MemAvailable: 299687" > proc/meminfo
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="Linux" # Fake Linux
|
||||
|
||||
assertEquals "%K{003} %F{000}RAM %f%F{000}0.29G " "$(prompt_ram left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -14,8 +14,6 @@ function setUp() {
|
|||
PATH="${RUST_TEST_FOLDER}:${PATH}"
|
||||
|
||||
export TERM="xterm-256color"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
|
@ -29,22 +27,25 @@ function mockRust() {
|
|||
}
|
||||
|
||||
function testRust() {
|
||||
mockRust
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version)
|
||||
mockRust
|
||||
|
||||
assertEquals "%K{208} %F{black%}Rust %F{black}0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
assertEquals "%K{208} %F{000}Rust %F{000}0.4.1a-alpha %k%F{208}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testRustPrintsNothingIfRustIsNotAvailable() {
|
||||
POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(custom_world rust_version)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_CUSTOM_WORLD
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
||||
|
|
80
test/segments/ssh.spec
Executable file
80
test/segments/ssh.spec
Executable file
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testSshSegmentPrintsNothingIfNoSshConnection() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo "world"'
|
||||
local POWERLEVEL9K_SSH_ICON="ssh-icon"
|
||||
# Weak test: Emulate No SSH connection by unsetting
|
||||
# $SSH_CLIENT and $SSH_TTY
|
||||
unset SSH_CLIENT
|
||||
unset SSH_TTY
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testSshSegmentWorksIfOnlySshClientIsSet() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
|
||||
local POWERLEVEL9K_SSH_ICON="ssh-icon"
|
||||
# Weak test: Emulate No SSH connection by unsetting
|
||||
# $SSH_CLIENT and $SSH_TTY
|
||||
SSH_CLIENT='ssh-client'
|
||||
unset SSH_TTY
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}ssh-icon%f %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unset SSH_CLIENT
|
||||
}
|
||||
|
||||
function testSshSegmentWorksIfOnlySshTtyIsSet() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
|
||||
local POWERLEVEL9K_SSH_ICON="ssh-icon"
|
||||
# Weak test: Emulate No SSH connection by unsetting
|
||||
# $SSH_CLIENT and $SSH_TTY
|
||||
SSH_TTY='ssh-tty'
|
||||
unset SSH_CLIENT
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}ssh-icon%f %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unset SSH_TTY
|
||||
}
|
||||
|
||||
function testSshSegmentWorksIfAllNecessaryVariablesAreSet() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh)
|
||||
local POWERLEVEL9K_SSH_ICON="ssh-icon"
|
||||
# Weak test: Emulate No SSH connection by unsetting
|
||||
# $SSH_CLIENT and $SSH_TTY
|
||||
SSH_CLIENT='ssh-client'
|
||||
SSH_TTY='ssh-tty'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{003}ssh-icon%f %k%F{000}%f " "$(build_left_prompt)"
|
||||
|
||||
unset SSH_TTY
|
||||
unset SSH_CLIENT
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -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
|
||||
|
@ -17,69 +15,99 @@ 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
|
||||
|
||||
assertEquals "%K{white} %F{black}world %k%F{white}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
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)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{002}✔%f %k%F{000}%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
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}1 %k%F{red}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local RETVAL=1
|
||||
|
||||
assertEquals "%K{001} %F{226}↵ %f%F{226}1 %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testPipestatusInErrorCase() {
|
||||
local -a 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
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}0|0|1|0 %k%F{red}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local -a RETVALS
|
||||
RETVALS=(0 0 1 0)
|
||||
|
||||
assertEquals "%K{001} %F{226}↵ %f%F{226}0|0|1|0 %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testStatusCrossWinsOverVerbose() {
|
||||
local 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
|
||||
|
||||
assertEquals "%K{black} %F{red%}✘%f %k%F{black}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local RETVAL=1
|
||||
|
||||
assertEquals "%K{000} %F{001}✘%f %k%F{000}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testStatusShowsSignalNameInErrorCase() {
|
||||
local 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
|
||||
|
||||
assertEquals "%K{red} %F{yellow1%}↵ %f%F{yellow1}SIGILL(4) %k%F{red}%f " "$(build_left_prompt)"
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
local RETVAL=132
|
||||
|
||||
assertEquals "%K{001} %F{226}↵ %f%F{226}SIGILL(4) %k%F{001}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testStatusSegmentIntegrated() {
|
||||
local 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=()
|
||||
local POWERLEVEL9K_STATUS_CROSS=true
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
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{001}✘%f %k%F{000}%f " "${(e)PROMPT}"
|
||||
}
|
||||
|
||||
source shunit2/source/2.1/src/shunit2
|
||||
source shunit2/shunit2
|
58
test/segments/swap.spec
Executable file
58
test/segments/swap.spec
Executable file
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and git init it.
|
||||
FOLDER=/tmp/powerlevel9k-test/swap-test
|
||||
mkdir -p "${FOLDER}"
|
||||
cd $FOLDER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
}
|
||||
|
||||
function testSwapSegmentWorksOnOsx() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
|
||||
sysctl() {
|
||||
echo "vm.swapusage: total = 3072,00M used = 1620,50M free = 1451,50M (encrypted)"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="OSX" # Fake OSX
|
||||
|
||||
assertEquals "%K{003} %F{000}SWP %f%F{000}1.58G " "$(prompt_swap left 1 false ${FOLDER})"
|
||||
|
||||
unfunction sysctl
|
||||
}
|
||||
|
||||
function testSwapSegmentWorksOnLinux() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swap)
|
||||
mkdir proc
|
||||
echo "SwapTotal: 1000000" > proc/meminfo
|
||||
echo "SwapFree: 1000" >> proc/meminfo
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
local OS="Linux" # Fake Linux
|
||||
|
||||
assertEquals "%K{003} %F{000}SWP %f%F{000}0.95G " "$(prompt_swap left 1 false ${FOLDER})"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
57
test/segments/swift_version.spec
Executable file
57
test/segments/swift_version.spec
Executable file
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and git init it.
|
||||
FOLDER=/tmp/powerlevel9k-test
|
||||
mkdir -p "${FOLDER}"
|
||||
cd $FOLDER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
}
|
||||
|
||||
function testSwiftSegmentPrintsNothingIfSwiftIsNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swift_version custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias swift="noswift"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias swift
|
||||
}
|
||||
|
||||
function testSwiftSegmentWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(swift_version)
|
||||
function swift() {
|
||||
echo "Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1)\nTarget: x86_64-apple-macosx10.9"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{005} %F{007}Swift %f%F{007}3.0.1 %k%F{005}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction swift
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
117
test/segments/symfony_version.spec
Executable file
117
test/segments/symfony_version.spec
Executable file
|
@ -0,0 +1,117 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and git init it.
|
||||
FOLDER=/tmp/powerlevel9k-test
|
||||
mkdir -p "${FOLDER}"
|
||||
cd $FOLDER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
}
|
||||
|
||||
function testSymfonyVersionSegmentPrintsNothingIfPhpIsNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
alias php="nophp"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unalias php
|
||||
}
|
||||
|
||||
function testSymfonyVersionSegmentPrintsNothingIfSymfonyIsNotAvailable() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
|
||||
# "Symfony" is not a command, but rather a framework.
|
||||
# To sucessfully execute this test, we just need to
|
||||
# navigate into a folder that does not contain symfony.
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testSymfonyVersionPrintsNothingIfPhpThrowsAnError() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
mkdir app
|
||||
touch app/AppKernel.php
|
||||
function php() {
|
||||
echo "Warning: Unsupported declare strict_types in /Users/dr/Privat/vendor/ocramius/proxy-manager/src/ProxyManager/Configuration.php on line 19
|
||||
|
||||
Parse error: parse error, expecting `;´ or `{´ in /Users/dr/Privat/vendor/ocramius/proxy-manager/src/ProxyManager/Configuration.php on line 97"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction php
|
||||
}
|
||||
|
||||
function testSymfonyVersionSegmentWorks() {
|
||||
startSkipping # Skip test
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
|
||||
mkdir app
|
||||
touch app/AppKernel.php
|
||||
|
||||
function php() {
|
||||
echo "Symfony version 3.1.4 - app/dev/debug"
|
||||
}
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{240} %F{000}SF %f%F{000}3.1.4 %k%F{240}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction php
|
||||
}
|
||||
|
||||
function testSymfonyVersionSegmentWorksInNestedFolder() {
|
||||
startSkipping # Skip test
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(symfony2_version)
|
||||
mkdir app
|
||||
touch app/AppKernel.php
|
||||
|
||||
function php() {
|
||||
echo "Symfony version 3.1.4 - app/dev/debug"
|
||||
}
|
||||
|
||||
mkdir -p src/P9K/AppBundle
|
||||
cd src/P9K/AppBundle
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{240} %F{000}SF %f%F{000}3.1.4 %k%F{240}%f " "$(build_left_prompt)"
|
||||
|
||||
unfunction php
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
58
test/segments/todo.spec
Executable file
58
test/segments/todo.spec
Executable file
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and git init it.
|
||||
FOLDER=/tmp/powerlevel9k-test
|
||||
mkdir -p "${FOLDER}"
|
||||
mkdir ${FOLDER}/bin
|
||||
OLD_PATH=$PATH
|
||||
PATH=${FOLDER}/bin:$PATH
|
||||
cd $FOLDER
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Reset PATH
|
||||
PATH=$OLD_PATH
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
}
|
||||
|
||||
function testTodoSegmentPrintsNothingIfTodoShIsNotInstalled() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo custom_world)
|
||||
local POWERLEVEL9K_CUSTOM_WORLD='echo world'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{000}world %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testTodoSegmentWorksAsExpected() {
|
||||
# TODO: Skript in den PATH legen!
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(todo)
|
||||
echo '#!/bin/sh' > ${FOLDER}/bin/todo.sh
|
||||
echo 'echo "TODO: 34 of 100 tasks shown";' >> ${FOLDER}/bin/todo.sh
|
||||
chmod +x ${FOLDER}/bin/todo.sh
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{244} %F{000}☑ %f%F{000}100 %k%F{244}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
378
test/segments/vcs-git.spec
Executable file
378
test/segments/vcs-git.spec
Executable file
|
@ -0,0 +1,378 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and git init it.
|
||||
FOLDER=/tmp/powerlevel9k-test/vcs-test
|
||||
mkdir -p "${FOLDER}"
|
||||
cd $FOLDER
|
||||
|
||||
# Set username and email
|
||||
OLD_GIT_AUTHOR_NAME=$GIT_AUTHOR_NAME
|
||||
GIT_AUTHOR_NAME="Testing Tester"
|
||||
OLD_GIT_AUTHOR_EMAIL=$GIT_AUTHOR_EMAIL
|
||||
GIT_AUTHOR_EMAIL="test@powerlevel9k.theme"
|
||||
|
||||
# Set default username if not already set!
|
||||
if [[ -z $(git config user.name) ]]; then
|
||||
GIT_AUTHOR_NAME_SET_BY_TEST=true
|
||||
git config --global user.name "${GIT_AUTHOR_NAME}"
|
||||
fi
|
||||
# Set default email if not already set!
|
||||
if [[ -z $(git config user.email) ]]; then
|
||||
GIT_AUTHOR_EMAIL_SET_BY_TEST=true
|
||||
git config --global user.email "${GIT_AUTHOR_EMAIL}"
|
||||
fi
|
||||
|
||||
# Initialize FOLDER as git repository
|
||||
git init 1>/dev/null
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
if [[ -n "${OLD_GIT_AUTHOR_NAME}" ]]; then
|
||||
GIT_AUTHOR_NAME=$OLD_GIT_AUTHOR
|
||||
unset OLD_GIT_AUTHOR_NAME
|
||||
else
|
||||
unset GIT_AUTHOR_NAME
|
||||
fi
|
||||
|
||||
if [[ -n "${OLD_GIT_AUTHOR_EMAIL}" ]]; then
|
||||
GIT_AUTHOR_EMAIL=$OLD_GIT_AUTHOR_EMAIL
|
||||
unset OLD_GIT_AUTHOR_EMAIL
|
||||
else
|
||||
unset GIT_AUTHOR_EMAIL
|
||||
fi
|
||||
|
||||
if [[ "${GIT_AUTHOR_NAME_SET_BY_TEST}" == "true" ]]; then
|
||||
git config --global --unset user.name
|
||||
fi
|
||||
if [[ "${GIT_AUTHOR_EMAIL_SET_BY_TEST}" == "true" ]]; then
|
||||
git config --global --unset user.email
|
||||
fi
|
||||
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}"
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
unset FOLDER
|
||||
}
|
||||
|
||||
function testColorOverridingForCleanStateWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
|
||||
local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{006} master %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testColorOverridingForModifiedStateWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red'
|
||||
local POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='yellow'
|
||||
|
||||
touch testfile
|
||||
git add testfile
|
||||
git commit -m "test" 1>/dev/null
|
||||
echo "test" > testfile
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{001} master ● %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testColorOverridingForUntrackedStateWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND='cyan'
|
||||
local POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND='yellow'
|
||||
|
||||
touch testfile
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{006} master ? %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testGitIconWorks() {
|
||||
local POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_GIT_ICON='Git-Icon'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000}Git-Icon %f%F{000} master %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testGitlabIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_GIT_GITLAB_ICON='GL-Icon'
|
||||
|
||||
# Add a GitLab project as remote origin. This is
|
||||
# sufficient to show the GitLab-specific icon.
|
||||
git remote add origin https://gitlab.com/dritter/gitlab-test-project.git
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000}GL-Icon %f%F{000} master %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testBitbucketIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_GIT_BITBUCKET_ICON='BB-Icon'
|
||||
|
||||
# Add a BitBucket project as remote origin. This is
|
||||
# sufficient to show the BitBucket-specific icon.
|
||||
git remote add origin https://dritter@bitbucket.org/dritter/dr-test.git
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000}BB-Icon %f%F{000} master %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testGitHubIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_GIT_GITHUB_ICON='GH-Icon'
|
||||
|
||||
# Add a GitHub project as remote origin. This is
|
||||
# sufficient to show the GitHub-specific icon.
|
||||
git remote add origin https://github.com/dritter/test.git
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000}GH-Icon %f%F{000} master %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testUntrackedFilesIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
|
||||
|
||||
# Create untracked file
|
||||
touch "i-am-untracked.txt"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} master ? %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testStagedFilesIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_STAGED_ICON='+'
|
||||
|
||||
# Create staged file
|
||||
touch "i-am-added.txt"
|
||||
git add i-am-added.txt &>/dev/null
|
||||
git commit -m "initial commit" &>/dev/null
|
||||
echo "xx" >> i-am-added.txt
|
||||
git add i-am-added.txt &>/dev/null
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{000} master + %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testUnstagedFilesIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_UNSTAGED_ICON='M'
|
||||
|
||||
# Create unstaged (modified, but not added to index) file
|
||||
touch "i-am-modified.txt"
|
||||
git add i-am-modified.txt
|
||||
git commit -m "Add File" 1>/dev/null
|
||||
echo "xx" > i-am-modified.txt
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{000} master M %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testStashIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_STASH_ICON='S'
|
||||
|
||||
# Create modified file
|
||||
touch "i-am-modified.txt"
|
||||
git add i-am-modified.txt
|
||||
git commit -m "Add File" 1>/dev/null
|
||||
echo "xx" > i-am-modified.txt
|
||||
git stash 1>/dev/null
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} master S1 %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testTagIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_TAG_ICON='T'
|
||||
|
||||
touch "file.txt"
|
||||
git add file.txt
|
||||
git commit -m "Add File" 1>/dev/null
|
||||
git tag "v0.0.1"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} master Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testTagIconInDetachedHeadState() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_TAG_ICON='T'
|
||||
|
||||
touch "file.txt"
|
||||
git add file.txt
|
||||
git commit -m "Add File" &>/dev/null
|
||||
git tag "v0.0.1"
|
||||
touch "file2.txt"
|
||||
git add file2.txt
|
||||
git commit -m "Add File2" &>/dev/null
|
||||
git checkout v0.0.1 &>/dev/null
|
||||
local hash=$(git rev-list -n 1 --abbrev-commit --abbrev=8 HEAD)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} ${hash} Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testActionHintWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
|
||||
touch "i-am-modified.txt"
|
||||
git add i-am-modified.txt
|
||||
git commit -m "Add File" &>/dev/null
|
||||
|
||||
git clone . ../vcs-test2 &>/dev/null
|
||||
echo "xx" >> i-am-modified.txt
|
||||
git commit -a -m "Modified file" &>/dev/null
|
||||
|
||||
cd ../vcs-test2
|
||||
echo "yy" >> i-am-modified.txt
|
||||
git commit -a -m "Provoke conflict" &>/dev/null
|
||||
git pull &>/dev/null
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{000} master %F{red}| merge%f %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testIncomingHintWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON='I'
|
||||
|
||||
touch "i-am-modified.txt"
|
||||
git add i-am-modified.txt
|
||||
git commit -m "Add File" &>/dev/null
|
||||
|
||||
git clone . ../vcs-test2 &>/dev/null
|
||||
echo "xx" >> i-am-modified.txt
|
||||
git commit -a -m "Modified file" &>/dev/null
|
||||
|
||||
cd ../vcs-test2
|
||||
git fetch &>/dev/null
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} master I1 %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testOutgoingHintWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON='o'
|
||||
|
||||
touch "i-am-modified.txt"
|
||||
git add i-am-modified.txt
|
||||
git commit -m "Add File" &>/dev/null
|
||||
|
||||
git clone . ../vcs-test2 &>/dev/null
|
||||
|
||||
cd ../vcs-test2
|
||||
|
||||
echo "xx" >> i-am-modified.txt
|
||||
git commit -a -m "Modified file" &>/dev/null
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} master o1 %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testShorteningCommitHashWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_SHOW_CHANGESET=true
|
||||
local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
|
||||
|
||||
touch "file.txt"
|
||||
git add file.txt
|
||||
git commit -m "Add File" 1>/dev/null
|
||||
local hash=$(git rev-list -n 1 --abbrev-commit --abbrev=3 HEAD)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
# This test needs to call powerlevel9k_vcs_init, where
|
||||
# the changeset is truncated.
|
||||
powerlevel9k_vcs_init
|
||||
assertEquals "%K{002} %F{000}${hash} master %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_SHOW_CHANGESET=false
|
||||
local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
|
||||
|
||||
touch "file.txt"
|
||||
git add file.txt
|
||||
git commit -m "Add File" 1>/dev/null
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
# This test needs to call powerlevel9k_vcs_init, where
|
||||
# the changeset is truncated.
|
||||
powerlevel9k_vcs_init
|
||||
assertEquals "%K{002} %F{000} master %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
207
test/segments/vcs-hg.spec
Executable file
207
test/segments/vcs-hg.spec
Executable file
|
@ -0,0 +1,207 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
|
||||
P9K_HOME=$(pwd)
|
||||
### Test specific
|
||||
# Create default folder and hg init it.
|
||||
FOLDER=/tmp/powerlevel9k-test/vcs-test
|
||||
mkdir -p "${FOLDER}"
|
||||
cd $FOLDER
|
||||
|
||||
export HGUSER="Test bot <bot@example.com>"
|
||||
|
||||
hg init 1>/dev/null
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
# Go back to powerlevel9k folder
|
||||
cd "${P9K_HOME}"
|
||||
# Remove eventually created test-specific folder
|
||||
rm -fr "${FOLDER}" &>/dev/null
|
||||
# At least remove test folder completely
|
||||
rm -fr /tmp/powerlevel9k-test &>/dev/null
|
||||
unset FOLDER
|
||||
unset HGUSER
|
||||
}
|
||||
|
||||
function testColorOverridingForCleanStateWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_CLEAN_FOREGROUND='cyan'
|
||||
local POWERLEVEL9K_VCS_CLEAN_BACKGROUND='white'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{007} %F{006} default %k%F{007}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testColorOverridingForModifiedStateWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_MODIFIED_FOREGROUND='red'
|
||||
local POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='yellow'
|
||||
|
||||
touch testfile
|
||||
hg add testfile
|
||||
hg commit -m "test" 1>/dev/null
|
||||
echo "test" > testfile
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{001} default ● %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
# There is no staging area in mercurial, therefore there are no "untracked"
|
||||
# files.. In case there are added files, we show the VCS segment with a
|
||||
# yellow background.
|
||||
# This may be improved in future versions, to be a bit more consistent with
|
||||
# the git part.
|
||||
function testAddedFilesIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
touch "myfile.txt"
|
||||
hg add myfile.txt
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{000} default ● %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
# We don't support tagging in mercurial right now..
|
||||
function testTagIconWorks() {
|
||||
startSkipping # Skip test
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_TAG_ICON='T'
|
||||
|
||||
touch "file.txt"
|
||||
hg add file.txt
|
||||
hg commit -m "Add File" 1>/dev/null
|
||||
hg tag "v0.0.1"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} default Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testTagIconInDetachedHeadState() {
|
||||
startSkipping # Skip test
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_TAG_ICON='T'
|
||||
|
||||
touch "file.txt"
|
||||
hg add file.txt
|
||||
hg commit -m "Add File" &>/dev/null
|
||||
hg tag "v0.0.1"
|
||||
touch "file2.txt"
|
||||
hg add file2.txt
|
||||
hg commit -m "Add File2" &>/dev/null
|
||||
hg checkout v0.0.1 &>/dev/null
|
||||
local hash=$(hg id)
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} ${hash} Tv0.0.1 %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testActionHintWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
touch "i-am-modified.txt"
|
||||
hg add i-am-modified.txt
|
||||
hg commit -m "Add File" &>/dev/null
|
||||
|
||||
hg clone . ../vcs-test2 &>/dev/null
|
||||
echo "xx" >> i-am-modified.txt
|
||||
hg commit -m "Modified file" &>/dev/null
|
||||
|
||||
cd ../vcs-test2
|
||||
echo "yy" >> i-am-modified.txt
|
||||
hg commit -m "Provoke conflict" 2>/dev/null
|
||||
hg pull 1>/dev/null
|
||||
hg merge --tool internal:merge >/dev/null 2>&1
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{003} %F{000} default %F{red}| merging%f %k%F{003}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testShorteningCommitHashWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_SHOW_CHANGESET=true
|
||||
local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
|
||||
|
||||
touch "file.txt"
|
||||
hg add file.txt
|
||||
hg commit -m "Add File" 1>/dev/null
|
||||
local hash=$(hg id | head -c ${POWERLEVEL9K_CHANGESET_HASH_LENGTH})
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
# This test needs to call powerlevel9k_vcs_init, where
|
||||
# the changeset is truncated.
|
||||
powerlevel9k_vcs_init
|
||||
|
||||
assertEquals "%K{002} %F{000}${hash} default %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testShorteningCommitHashIsNotShownIfShowChangesetIsFalse() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_SHOW_CHANGESET=false
|
||||
local POWERLEVEL9K_CHANGESET_HASH_LENGTH='4'
|
||||
|
||||
touch "file.txt"
|
||||
hg add file.txt
|
||||
hg commit -m "Add File" 1>/dev/null
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
# This test needs to call powerlevel9k_vcs_init, where
|
||||
# the changeset is truncated.
|
||||
powerlevel9k_vcs_init
|
||||
|
||||
assertEquals "%K{002} %F{000} default %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testMercurialIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_HG_ICON='HG-Icon'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000}HG-Icon %f%F{000} default %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
function testBookmarkIconWorks() {
|
||||
local -a POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(vcs)
|
||||
local POWERLEVEL9K_VCS_BOOKMARK_ICON='B'
|
||||
hg bookmark "initial"
|
||||
|
||||
# Load Powerlevel9k
|
||||
source ${P9K_HOME}/powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{002} %F{000} default Binitial %k%F{002}%f " "$(build_left_prompt)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
|
@ -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
|
48
test/segments/vi_mode.spec
Executable file
48
test/segments/vi_mode.spec
Executable file
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
# Required for shunit2 to run correctly
|
||||
setopt shwordsplit
|
||||
SHUNIT_PARENT=$0
|
||||
|
||||
function setUp() {
|
||||
export TERM="xterm-256color"
|
||||
}
|
||||
|
||||
function testViInsertModeWorks() {
|
||||
local KEYMAP='viins'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{004}INSERT " "$(prompt_vi_mode left 1 false)"
|
||||
}
|
||||
|
||||
function testViInsertModeWorksWhenLabeledAsMain() {
|
||||
local KEYMAP='main'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{004}INSERT " "$(prompt_vi_mode left 1 false)"
|
||||
}
|
||||
|
||||
function testViCommandModeWorks() {
|
||||
local KEYMAP='vicmd'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{007}NORMAL " "$(prompt_vi_mode left 1 false)"
|
||||
}
|
||||
|
||||
function testViInsertModeStringIsCustomizable() {
|
||||
local KEYMAP='viins'
|
||||
|
||||
# Load Powerlevel9k
|
||||
source powerlevel9k.zsh-theme
|
||||
|
||||
assertEquals "%K{000} %F{004}INSERT " "$(prompt_vi_mode left 1 false)"
|
||||
}
|
||||
|
||||
source shunit2/shunit2
|
17
test/suite.spec
Executable file
17
test/suite.spec
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env zsh
|
||||
#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
|
||||
local failed=false
|
||||
|
||||
for test in **/*.spec; do
|
||||
echo
|
||||
echo "Now executing ${test}"
|
||||
if [[ "${test}" == "test/suite.spec" ]]; then
|
||||
continue;
|
||||
fi
|
||||
./${test} || failed=true
|
||||
done
|
||||
|
||||
if [[ "${failed}" == "true" ]]; then
|
||||
exit 1
|
||||
fi
|
Loading…
Reference in a new issue