178 lines
4.5 KiB
Bash
178 lines
4.5 KiB
Bash
load common
|
|
load_fixtures
|
|
status=;output=; #; populated by bats run()
|
|
|
|
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
|
|
}
|