yadm/test/104_accept_init.bats

178 lines
4.3 KiB
Bash

load common
load_fixtures
setup() {
destroy_tmp
create_worktree "$T_DIR_WORK"
}
@test "Command 'init'" {
echo "
When 'init' command is provided,
Create new repo with attributes:
- 0600 permissions
- not bare
- worktree = \$HOME
- showUntrackedFiles = no
- yadm.managed = true
Report the repo as initialized
Exit with 0
"
#; run init
run $T_YADM_Y init
#; validate status and output
[ $status -eq 0 ]
[[ "$output" =~ Initialized ]]
#; validate repo attributes
test_perms $T_DIR_REPO "drw.--.--."
test_repo_attribute $T_DIR_REPO core.bare false
test_repo_attribute $T_DIR_REPO core.worktree "$HOME"
test_repo_attribute $T_DIR_REPO status.showUntrackedFiles no
test_repo_attribute $T_DIR_REPO yadm.managed true
}
@test "Command 'init' -w (alternate worktree)" {
echo "
When 'init' command is provided,
and '-w' is provided,
Create new repo with attributes:
- 0600 permissions
- not bare
- worktree = \$YADM_WORK
- showUntrackedFiles = no
- yadm.managed = true
Report the repo as initialized
Exit with 0
"
#; run init
run $T_YADM_Y init -w "$T_DIR_WORK"
#; validate status and output
[ $status -eq 0 ]
[[ "$output" =~ Initialized ]]
#; validate repo attributes
test_perms $T_DIR_REPO "drw.--.--."
test_repo_attribute $T_DIR_REPO core.bare false
test_repo_attribute $T_DIR_REPO core.worktree "$T_DIR_WORK"
test_repo_attribute $T_DIR_REPO status.showUntrackedFiles no
test_repo_attribute $T_DIR_REPO yadm.managed true
}
@test "Command 'init' (existing repo)" {
echo "
When 'init' command is provided,
and a repo already exists,
Refuse to create a new repo
Exit with 1
"
#; create existing repo content
mkdir -p $T_DIR_REPO
local testfile="$T_DIR_REPO/testfile"
touch "$testfile"
#; run init
run $T_YADM_Y init
#; validate status and output
[ $status -eq 1 ]
[[ "$output" =~ already.exists ]]
#; verify existing repo is intact
if [ ! -e $testfile ]; then
echo "ERROR: existing repo has been changed"
return 1
fi
}
@test "Command 'init' -f (force overwrite repo)" {
echo "
When 'init' command is provided,
and '-f' is provided
and a repo already exists,
Remove existing repo
Create new repo with attributes:
- 0600 permissions
- not bare
- worktree = \$HOME
- showUntrackedFiles = no
- yadm.managed = true
Report the repo as initialized
Exit with 0
"
#; create existing repo content
mkdir -p $T_DIR_REPO
local testfile="$T_DIR_REPO/testfile"
touch "$testfile"
#; run init
run $T_YADM_Y init -f
#; validate status and output
[ $status -eq 0 ]
[[ "$output" =~ Initialized ]]
#; verify existing repo is gone
if [ -e $testfile ]; then
echo "ERROR: existing repo files remain"
return 1
fi
#; validate repo attributes
test_perms $T_DIR_REPO "drw.--.--."
test_repo_attribute $T_DIR_REPO core.bare false
test_repo_attribute $T_DIR_REPO core.worktree "$HOME"
test_repo_attribute $T_DIR_REPO status.showUntrackedFiles no
test_repo_attribute $T_DIR_REPO yadm.managed true
}
@test "Command 'init' -f -w (force overwrite repo with alternate worktree)" {
echo "
When 'init' command is provided,
and '-f' is provided
and '-w' is provided
and a repo already exists,
Remove existing repo
Create new repo with attributes:
- 0600 permissions
- not bare
- worktree = \$YADM_WORK
- showUntrackedFiles = no
- yadm.managed = true
Report the repo as initialized
Exit with 0
"
#; create existing repo content
mkdir -p $T_DIR_REPO
local testfile="$T_DIR_REPO/testfile"
touch "$testfile"
#; run init
run $T_YADM_Y init -f -w "$T_DIR_WORK"
#; validate status and output
[ $status -eq 0 ]
[[ "$output" =~ Initialized ]]
#; verify existing repo is gone
if [ -e $testfile ]; then
echo "ERROR: existing repo files remain"
return 1
fi
#; validate repo attributes
test_perms $T_DIR_REPO "drw.--.--."
test_repo_attribute $T_DIR_REPO core.bare false
test_repo_attribute $T_DIR_REPO core.worktree "$T_DIR_WORK"
test_repo_attribute $T_DIR_REPO status.showUntrackedFiles no
test_repo_attribute $T_DIR_REPO yadm.managed true
}