178 lines
4.3 KiB
Text
178 lines
4.3 KiB
Text
|
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
|
||
|
}
|