mirror of
https://github.com/TheLocehiliosan/yadm
synced 2024-10-27 20:34:27 +00:00
d2cd3b1b26
Tests will be run using `bats`.
178 lines
4.3 KiB
Bash
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
|
|
}
|