mirror of
https://github.com/wfxr/forgit.git
synced 2026-09-10 07:16:23 -04:00
50 lines
1.7 KiB
Bash
50 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
function set_up_before_script() {
|
|
source bin/git-forgit
|
|
|
|
# Ignore global git config files
|
|
export GIT_CONFIG_SYSTEM=/dev/null
|
|
export GIT_CONFIG_GLOBAL=/dev/null
|
|
|
|
unset FORGIT_WORKTREE_ADD_DIR
|
|
|
|
# Create a temporary git repository for testing
|
|
MAIN_WORKTREE_ROOT="$(cd -P -- "$(bashunit::temp_dir)" && pwd)/main"
|
|
git init -q "$MAIN_WORKTREE_ROOT"
|
|
cd "$MAIN_WORKTREE_ROOT" || return 1
|
|
git config user.email "test@example.com"
|
|
git config user.name "Test User"
|
|
echo "initial" >README.md
|
|
git add README.md
|
|
git commit -q -m "Initial commit"
|
|
}
|
|
|
|
function test_worktree_add_dir_defaults_to_dot_wt_in_main_worktree_root() {
|
|
assert_same "$MAIN_WORKTREE_ROOT/.wt" "$(_forgit_worktree_add_dir)"
|
|
}
|
|
|
|
function test_worktree_add_dir_resolves_a_relative_path_against_main_worktree_root() {
|
|
assert_same "$MAIN_WORKTREE_ROOT/.worktrees" \
|
|
"$(FORGIT_WORKTREE_ADD_DIR=.worktrees _forgit_worktree_add_dir)"
|
|
}
|
|
|
|
function test_worktree_add_dir_resolves_a_nested_relative_path() {
|
|
assert_same "$MAIN_WORKTREE_ROOT/build/wt" \
|
|
"$(FORGIT_WORKTREE_ADD_DIR=build/wt _forgit_worktree_add_dir)"
|
|
}
|
|
|
|
function test_worktree_add_dir_uses_an_absolute_path_as_is() {
|
|
assert_same "/somewhere/else" \
|
|
"$(FORGIT_WORKTREE_ADD_DIR=/somewhere/else _forgit_worktree_add_dir)"
|
|
}
|
|
|
|
function test_worktree_add_dir_resolves_a_relative_path_from_a_linked_worktree() {
|
|
local linked_worktree="$MAIN_WORKTREE_ROOT/.worktrees/linked"
|
|
git worktree add -q -b linked "$linked_worktree" >/dev/null 2>&1
|
|
cd "$linked_worktree" || return 1
|
|
|
|
assert_same "$MAIN_WORKTREE_ROOT/.worktrees" \
|
|
"$(FORGIT_WORKTREE_ADD_DIR=.worktrees _forgit_worktree_add_dir)"
|
|
}
|