151 lines
4.1 KiB
Bash
151 lines
4.1 KiB
Bash
|
#!/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
|