home/.zsh/themes/spaceship-prompt/tests/dir.test.zsh

151 lines
4.1 KiB
Bash
Raw Normal View History

2023-09-06 14:03:56 +02:00
#!/usr/bin/env zsh
# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0
# ------------------------------------------------------------------------------
# SHUNIT2 HOOKS
# ------------------------------------------------------------------------------
oneTimeSetUp() {
export TERM="xterm-256color"
SPACESHIP_PROMPT_FIRST_PREFIX_SHOW=true
SPACESHIP_PROMPT_ADD_NEWLINE=false
SPACESHIP_PROMPT_ORDER=(dir)
source "spaceship.zsh"
}
setUp() {
SPACESHIP_DIR_SHOW=true
SPACESHIP_DIR_PREFIX="in "
SPACESHIP_DIR_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"
SPACESHIP_DIR_TRUNC=3
SPACESHIP_DIR_TRUNC_REPO=true
SPACESHIP_DIR_COLOR="cyan"
}
oneTimeTearDown() {
unset SPACESHIP_PROMPT_FIRST_PREFIX_SHOW
unset SPACESHIP_PROMPT_ADD_NEWLINE
unset SPACESHIP_PROMPT_ORDER
}
tearDown() {
unset SPACESHIP_DIR_SHOW
unset SPACESHIP_DIR_PREFIX
unset SPACESHIP_DIR_SUFFIX
unset SPACESHIP_DIR_TRUNC
unset SPACESHIP_DIR_TRUNC_REPO
unset SPACESHIP_DIR_COLOR
}
# ------------------------------------------------------------------------------
# TEST CASES
# ------------------------------------------------------------------------------
test_dir_home() {
cd ~
local expected="%{%B%}in %{%b%}%{%B%F{$SPACESHIP_DIR_COLOR}%}%(4~||)%3~%{%b%f%}%{%B%} %{%b%}"
local actual="$(spaceship::testkit::render_prompt)"
assertEquals "render dir" "$expected" "$actual"
}
test_dir_color() {
SPACESHIP_DIR_COLOR=blue
local expected="%{%B%}in %{%b%}%{%B%F{$SPACESHIP_DIR_COLOR}%}%(4~||)%3~%{%b%f%}%{%B%} %{%b%}"
local actual="$(spaceship::testkit::render_prompt)"
assertEquals "render dir with custom color" "$expected" "$actual"
}
test_dir_prefix() {
SPACESHIP_DIR_PREFIX='prefix'
SPACESHIP_DIR_SUFFIX=''
local expected="%{%B%}$SPACESHIP_DIR_PREFIX%{%b%}%{%B%F{cyan}%}%(4~||)%3~%{%b%f%}"
local actual="$(spaceship::testkit::render_prompt)"
assertEquals "render dir with prefix" "$expected" "$actual"
}
test_dir_suffix() {
SPACESHIP_DIR_PREFIX=''
SPACESHIP_DIR_SUFFIX='suffix'
local expected="%{%B%F{cyan}%}%(4~||)%3~%{%b%f%}%{%B%}$SPACESHIP_DIR_SUFFIX%{%b%}"
local actual="$(spaceship::testkit::render_prompt)"
assertEquals "render dir with suffix" "$expected" "$actual"
}
test_dir_trunc() {
SPACESHIP_DIR_TRUNC=2
local expected="%{%B%}in %{%b%}%{%B%F{cyan}%}%($((SPACESHIP_DIR_TRUNC+1))~||)%$SPACESHIP_DIR_TRUNC~%{%b%f%}%{%B%} %{%b%}"
local actual="$(spaceship::testkit::render_prompt)"
assertEquals "render truncated dir" "$expected" "$actual"
}
test_dir_trunc_git() {
local REPO="$SHUNIT_TMPDIR/dir/trunc_git/dir1/dir2/dir3"
mkdir -p $REPO/dir4/dir5
cd $REPO
command git config init.defaultBranch >/dev/null
command git init >/dev/null
cd $REPO/dir4/dir5
local expected="%{%B%}in %{%b%}%{%B%F{cyan}%}dir3/dir4/dir5%{%b%f%}%{%B%} %{%b%}"
local actual="$(spaceship::testkit::render_prompt)"
assertEquals "render truncated dir in git repos" "$expected" "$actual"
}
test_dir_trunc_git_submodule() {
local FOLDER="$SHUNIT_TMPDIR/dir/trunc_git_submodule"
local REPO="$FOLDER/dir1/dir2/dir3"
local SUBMODULE="$FOLDER/dir1/dir2/dir4"
# Allow adding submodules via file transport
# See: https://bugs.launchpad.net/ubuntu/+source/git/+bug/1993586
command git config --global protocol.file.allow always
mkdir -p $REPO
mkdir -p $SUBMODULE
cd $SUBMODULE
command git init >/dev/null
command touch sample.txt
command git add sample.txt >/dev/null
command git commit -m "Add sample file" >/dev/null
cd $REPO
command git init >/dev/null
command touch sample.txt
command git add sample.txt >/dev/null
command git commit -m "Add sample file" >/dev/null
command git submodule add $SUBMODULE 2&>/dev/null
cd dir4
local expected="%{%B%}in %{%b%}%{%B%F{cyan}%}dir4%{%b%f%}%{%B%} %{%b%}"
local actual="$(spaceship::testkit::render_prompt)"
assertEquals "render submodule dir in the git repo" "$expected" "$actual"
}
# ------------------------------------------------------------------------------
# SHUNIT2
# Run tests with shunit2
# ------------------------------------------------------------------------------
source tests/shunit2/shunit2