bash-it/test/themes/base.theme.svn.bats

117 lines
2.8 KiB
Bash

# shellcheck shell=bats
load "${MAIN_BASH_IT_DIR?}/test/test_helper.bash"
function local_setup_file() {
setup_libs "colors" #"theme"
load "${BASH_IT?}/themes/base.theme.bash"
}
function setup_repo {
upstream="$(mktemp -d)"
pushd "$upstream" > /dev/null || return
# Create a dummy SVN folder - this will not work with an actual `svn` command,
# but will be enough to trigger the SVN check in the base theme.
mkdir .svn
echo "$upstream"
}
function setup_svn_path {
local svn_path="$1"
# Make sure that the requested SVN script is available
assert_file_exist "$svn_path/svn"
# Make sure that the requested SVN script is on the path
export PATH="$svn_path:$PATH"
}
@test 'themes base: SVN: detect SVN repo' {
repo="$(setup_repo)"
pushd "$repo" || return
setup_svn_path "$BASH_IT/test/fixtures/svn/working"
# Init the base theme again so that the working SVN script is detected
run _bash_it_appearance_scm_init
assert_success
_bash_it_appearance_scm_init
scm
# Make sure that the SVN command is used
assert_equal "${SCM?}" "${SCM_SVN?}"
}
@test 'themes base: SVN: detect SVN repo even from a subfolder' {
repo="$(setup_repo)"
pushd "$repo" || return
mkdir foo
pushd foo || return
setup_svn_path "$BASH_IT/test/fixtures/svn/working"
# Init the base theme again so that the working SVN script is detected
run _bash_it_appearance_scm_init
assert_success
_bash_it_appearance_scm_init
scm
# Make sure that the SVN command is used
assert_equal "${SCM?}" "${SCM_SVN?}"
}
@test 'themes base: SVN: no SCM if no .svn folder can be found' {
repo="$(setup_repo)"
pushd "$repo" || return
rm -rf .svn
setup_svn_path "$BASH_IT/test/fixtures/svn/working"
# Init the base theme again so that the working SVN script is detected
run _bash_it_appearance_scm_init
assert_success
_bash_it_appearance_scm_init
scm
# Make sure that no SVN command is used
assert_equal "${SCM?}" "${SCM_NONE?}"
}
@test 'themes base: SVN: ignore SVN repo when using broken SVN command' {
repo="$(setup_repo)"
pushd "$repo" || return
setup_svn_path "$BASH_IT/test/fixtures/svn/broken"
# Init the base theme again so that the working SVN script is detected
run _bash_it_appearance_scm_init
assert_success
_bash_it_appearance_scm_init
scm
# Make sure that no SVN command is not used
assert_equal "${SCM?}" "${SCM_NONE?}"
}
@test 'themes base: SVN: ignore SVN repo even from a subfolder when using a broken SVN' {
repo="$(setup_repo)"
pushd "$repo" || return
mkdir foo
pushd foo || return
setup_svn_path "$BASH_IT/test/fixtures/svn/broken"
# Init the base theme again so that the working SVN script is detected
run _bash_it_appearance_scm_init
assert_success
_bash_it_appearance_scm_init
scm
# Make sure that no SVN command is used
assert_equal "${SCM?}" "${SCM_NONE?}"
}