mirror of
https://github.com/TheLocehiliosan/yadm
synced 2024-10-27 20:34:27 +00:00
Add tests for bootstrap command (#42)
This commit is contained in:
parent
7d3c9e1cb5
commit
3f1a8364ae
@ -16,12 +16,13 @@ function configuration_test() {
|
|||||||
|
|
||||||
echo -e "STATUS:$status\nOUTPUT:$output"
|
echo -e "STATUS:$status\nOUTPUT:$output"
|
||||||
echo "CONFIGURED PATHS:"
|
echo "CONFIGURED PATHS:"
|
||||||
echo " YADM_DIR:$YADM_DIR"
|
echo " YADM_DIR:$YADM_DIR"
|
||||||
echo " YADM_REPO:$YADM_REPO"
|
echo " YADM_REPO:$YADM_REPO"
|
||||||
echo " YADM_CONFIG:$YADM_CONFIG"
|
echo " YADM_CONFIG:$YADM_CONFIG"
|
||||||
echo "YADM_ENCRYPT:$YADM_ENCRYPT"
|
echo " YADM_ENCRYPT:$YADM_ENCRYPT"
|
||||||
echo "YADM_ARCHIVE:$YADM_ARCHIVE"
|
echo " YADM_ARCHIVE:$YADM_ARCHIVE"
|
||||||
echo " GIT_DIR:$GIT_DIR"
|
echo "YADM_BOOTSTRAP:$YADM_BOOTSTRAP"
|
||||||
|
echo " GIT_DIR:$GIT_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "Default paths" {
|
@test "Default paths" {
|
||||||
@ -32,6 +33,7 @@ function configuration_test() {
|
|||||||
YADM_CONFIG=$DEFAULT_YADM_DIR/$DEFAULT_CONFIG
|
YADM_CONFIG=$DEFAULT_YADM_DIR/$DEFAULT_CONFIG
|
||||||
YADM_ENCRYPT=$DEFAULT_YADM_DIR/$DEFAULT_ENCRYPT
|
YADM_ENCRYPT=$DEFAULT_YADM_DIR/$DEFAULT_ENCRYPT
|
||||||
YADM_ARCHIVE=$DEFAULT_YADM_DIR/$DEFAULT_ARCHIVE
|
YADM_ARCHIVE=$DEFAULT_YADM_DIR/$DEFAULT_ARCHIVE
|
||||||
|
YADM_BOOTSTRAP=$DEFAULT_YADM_DIR/$DEFAULT_BOOTSTRAP
|
||||||
GIT_DIR=$DEFAULT_YADM_DIR/$DEFAULT_REPO
|
GIT_DIR=$DEFAULT_YADM_DIR/$DEFAULT_REPO
|
||||||
"
|
"
|
||||||
|
|
||||||
@ -43,6 +45,7 @@ function configuration_test() {
|
|||||||
[ "$YADM_CONFIG" = "$DEFAULT_YADM_DIR/$DEFAULT_CONFIG" ]
|
[ "$YADM_CONFIG" = "$DEFAULT_YADM_DIR/$DEFAULT_CONFIG" ]
|
||||||
[ "$YADM_ENCRYPT" = "$DEFAULT_YADM_DIR/$DEFAULT_ENCRYPT" ]
|
[ "$YADM_ENCRYPT" = "$DEFAULT_YADM_DIR/$DEFAULT_ENCRYPT" ]
|
||||||
[ "$YADM_ARCHIVE" = "$DEFAULT_YADM_DIR/$DEFAULT_ARCHIVE" ]
|
[ "$YADM_ARCHIVE" = "$DEFAULT_YADM_DIR/$DEFAULT_ARCHIVE" ]
|
||||||
|
[ "$YADM_BOOTSTRAP" = "$DEFAULT_YADM_DIR/$DEFAULT_BOOTSTRAP" ]
|
||||||
[ "$GIT_DIR" = "$DEFAULT_YADM_DIR/$DEFAULT_REPO" ]
|
[ "$GIT_DIR" = "$DEFAULT_YADM_DIR/$DEFAULT_REPO" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,6 +64,7 @@ function configuration_test() {
|
|||||||
[ "$YADM_CONFIG" = "$T_DIR_YADM/$DEFAULT_CONFIG" ]
|
[ "$YADM_CONFIG" = "$T_DIR_YADM/$DEFAULT_CONFIG" ]
|
||||||
[ "$YADM_ENCRYPT" = "$T_DIR_YADM/$DEFAULT_ENCRYPT" ]
|
[ "$YADM_ENCRYPT" = "$T_DIR_YADM/$DEFAULT_ENCRYPT" ]
|
||||||
[ "$YADM_ARCHIVE" = "$T_DIR_YADM/$DEFAULT_ARCHIVE" ]
|
[ "$YADM_ARCHIVE" = "$T_DIR_YADM/$DEFAULT_ARCHIVE" ]
|
||||||
|
[ "$YADM_BOOTSTRAP" = "$T_DIR_YADM/$DEFAULT_BOOTSTRAP" ]
|
||||||
[ "$GIT_DIR" = "$T_DIR_YADM/$DEFAULT_REPO" ]
|
[ "$GIT_DIR" = "$T_DIR_YADM/$DEFAULT_REPO" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,3 +182,28 @@ function configuration_test() {
|
|||||||
[ "$status" == 1 ]
|
[ "$status" == 1 ]
|
||||||
[[ "$output" =~ must\ specify\ a\ fully\ qualified ]]
|
[[ "$output" =~ must\ specify\ a\ fully\ qualified ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "Override YADM_BOOTSTRAP" {
|
||||||
|
echo "
|
||||||
|
Override YADM_BOOTSTRAP using --yadm-bootstrap /custom/bootstrap
|
||||||
|
YADM_BOOTSTRAP should become /custom/bootstrap
|
||||||
|
"
|
||||||
|
|
||||||
|
TEST_ARGS=(--yadm-bootstrap /custom/bootstrap)
|
||||||
|
configuration_test "${TEST_ARGS[@]}"
|
||||||
|
|
||||||
|
[ "$YADM_BOOTSTRAP" = "/custom/bootstrap" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "Override YADM_BOOTSTRAP (not fully qualified)" {
|
||||||
|
echo "
|
||||||
|
Override YADM_BOOTSTRAP using --yadm-bootstrap relative/bootstrap
|
||||||
|
yadm should fail, and report the error
|
||||||
|
"
|
||||||
|
|
||||||
|
TEST_ARGS=(--yadm-bootstrap relative/bootstrap)
|
||||||
|
configuration_test "${TEST_ARGS[@]}"
|
||||||
|
|
||||||
|
[ "$status" == 1 ]
|
||||||
|
[[ "$output" =~ must\ specify\ a\ fully\ qualified ]]
|
||||||
|
}
|
||||||
|
66
test/005_unit_bootstrap_available.bats
Normal file
66
test/005_unit_bootstrap_available.bats
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
load common
|
||||||
|
T_YADM_BOOTSTRAP=; # populated by load_fixtures
|
||||||
|
load_fixtures
|
||||||
|
status=; # populated by bats run()
|
||||||
|
|
||||||
|
setup() {
|
||||||
|
destroy_tmp
|
||||||
|
make_parents "$T_YADM_BOOTSTRAP"
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown() {
|
||||||
|
destroy_tmp
|
||||||
|
}
|
||||||
|
|
||||||
|
function available_test() {
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
YADM_TEST=1 source "$T_YADM"
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
YADM_BOOTSTRAP="$T_YADM_BOOTSTRAP"
|
||||||
|
status=0
|
||||||
|
{ bootstrap_available; } || {
|
||||||
|
status=$?
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
echo -e "STATUS:$status"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "Bootstrap missing" {
|
||||||
|
echo "
|
||||||
|
When bootstrap command is missing
|
||||||
|
return 1
|
||||||
|
"
|
||||||
|
|
||||||
|
available_test
|
||||||
|
[ "$status" == 1 ]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "Bootstrap not executable" {
|
||||||
|
echo "
|
||||||
|
When bootstrap command is not executable
|
||||||
|
return 1
|
||||||
|
"
|
||||||
|
|
||||||
|
touch "$T_YADM_BOOTSTRAP"
|
||||||
|
|
||||||
|
available_test
|
||||||
|
[ "$status" == 1 ]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "Bootstrap executable" {
|
||||||
|
echo "
|
||||||
|
When bootstrap command is not executable
|
||||||
|
return 0
|
||||||
|
"
|
||||||
|
|
||||||
|
touch "$T_YADM_BOOTSTRAP"
|
||||||
|
chmod a+x "$T_YADM_BOOTSTRAP"
|
||||||
|
|
||||||
|
available_test
|
||||||
|
[ "$status" == 0 ]
|
||||||
|
|
||||||
|
}
|
78
test/112_accept_bootstrap.bats
Normal file
78
test/112_accept_bootstrap.bats
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
load common
|
||||||
|
load_fixtures
|
||||||
|
status=;output=; #; populated by bats run()
|
||||||
|
|
||||||
|
setup() {
|
||||||
|
destroy_tmp
|
||||||
|
build_repo
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "Command 'bootstrap' (missing file)" {
|
||||||
|
echo "
|
||||||
|
When 'bootstrap' command is provided,
|
||||||
|
and the bootstrap file is missing
|
||||||
|
Report error
|
||||||
|
Exit with 1
|
||||||
|
"
|
||||||
|
|
||||||
|
#; run clone
|
||||||
|
run "${T_YADM_Y[@]}" bootstrap
|
||||||
|
echo "STATUS:$status"
|
||||||
|
echo "OUTPUT:$output"
|
||||||
|
|
||||||
|
#; validate status and output
|
||||||
|
[[ "$output" =~ Cannot\ execute\ bootstrap ]]
|
||||||
|
[ "$status" -eq 1 ]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "Command 'bootstrap' (not executable)" {
|
||||||
|
echo "
|
||||||
|
When 'bootstrap' command is provided,
|
||||||
|
and the bootstrap file is present
|
||||||
|
but is not executable
|
||||||
|
Report error
|
||||||
|
Exit with 1
|
||||||
|
"
|
||||||
|
|
||||||
|
touch "$T_YADM_BOOTSTRAP"
|
||||||
|
|
||||||
|
#; run clone
|
||||||
|
run "${T_YADM_Y[@]}" bootstrap
|
||||||
|
echo "STATUS:$status"
|
||||||
|
echo "OUTPUT:$output"
|
||||||
|
|
||||||
|
#; validate status and output
|
||||||
|
[[ "$output" =~ is\ not\ an\ executable\ program ]]
|
||||||
|
[ "$status" -eq 1 ]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "Command 'bootstrap' (bootstrap run)" {
|
||||||
|
echo "
|
||||||
|
When 'bootstrap' command is provided,
|
||||||
|
and the bootstrap file is present
|
||||||
|
and is executable
|
||||||
|
Announce the execution
|
||||||
|
Execute bootstrap
|
||||||
|
Exit with the exit code of bootstrap
|
||||||
|
"
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "#!/bin/bash"
|
||||||
|
echo "echo Bootstrap successful"
|
||||||
|
echo "exit 123"
|
||||||
|
} > "$T_YADM_BOOTSTRAP"
|
||||||
|
chmod a+x "$T_YADM_BOOTSTRAP"
|
||||||
|
|
||||||
|
#; run clone
|
||||||
|
run "${T_YADM_Y[@]}" bootstrap
|
||||||
|
echo "STATUS:$status"
|
||||||
|
echo "OUTPUT:$output"
|
||||||
|
|
||||||
|
#; validate status and output
|
||||||
|
[[ "$output" =~ Executing\ $T_YADM_BOOTSTRAP ]]
|
||||||
|
[[ "$output" =~ Bootstrap\ successful ]]
|
||||||
|
[ "$status" -eq 123 ]
|
||||||
|
|
||||||
|
}
|
@ -6,6 +6,7 @@ function load_fixtures() {
|
|||||||
export DEFAULT_CONFIG="config"
|
export DEFAULT_CONFIG="config"
|
||||||
export DEFAULT_ENCRYPT="encrypt"
|
export DEFAULT_ENCRYPT="encrypt"
|
||||||
export DEFAULT_ARCHIVE="files.gpg"
|
export DEFAULT_ARCHIVE="files.gpg"
|
||||||
|
export DEFAULT_BOOTSTRAP="bootstrap"
|
||||||
|
|
||||||
export T_YADM="$PWD/yadm"
|
export T_YADM="$PWD/yadm"
|
||||||
export T_TMP="$BATS_TMPDIR/ytmp"
|
export T_TMP="$BATS_TMPDIR/ytmp"
|
||||||
@ -15,6 +16,7 @@ function load_fixtures() {
|
|||||||
export T_YADM_CONFIG="$T_DIR_YADM/config"
|
export T_YADM_CONFIG="$T_DIR_YADM/config"
|
||||||
export T_YADM_ENCRYPT="$T_DIR_YADM/encrypt"
|
export T_YADM_ENCRYPT="$T_DIR_YADM/encrypt"
|
||||||
export T_YADM_ARCHIVE="$T_DIR_YADM/files.gpg"
|
export T_YADM_ARCHIVE="$T_DIR_YADM/files.gpg"
|
||||||
|
export T_YADM_BOOTSTRAP="$T_DIR_YADM/bootstrap"
|
||||||
|
|
||||||
export T_YADM_Y
|
export T_YADM_Y
|
||||||
T_YADM_Y=( "$T_YADM" -Y "$T_DIR_YADM" )
|
T_YADM_Y=( "$T_YADM" -Y "$T_DIR_YADM" )
|
||||||
|
Loading…
Reference in New Issue
Block a user