test: test arguments, notes, local tag lookup

This commit is contained in:
2023-09-23 09:17:24 +02:00
parent 510ce66570
commit 575bfbb0fb
19 changed files with 398 additions and 139 deletions

View File

@ -17,6 +17,13 @@ setup(){
_common_setup
}
teardown(){
# https://github.com/bats-core/bats-core/issues/383#issuecomment-738628888
if [[ -z "${BATS_TEST_COMPLETED}" ]]; then
_undeploy_app
fi
}
@test "validate app argument" {
run $ABRA app deploy
assert_failure
@ -43,6 +50,8 @@ setup(){
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
_checkout_recipe "$TEST_RECIPE"
}
# bats test_tags=slow
@ -77,25 +86,26 @@ setup(){
run $ABRA app deploy "$TEST_APP_DOMAIN" --no-input --no-converge-checks
assert_success
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
refute_output --partial 'behind 3'
# NOTE(d1): nuke it to ensure clean git state
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE"
assert_success
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE"
_fetch_recipe "$TEST_RECIPE"
_undeploy_app
}
# bats test_tags=slow
@test "ensure recipe not up to date if --offline" {
latestCommit="$(git -C "$ABRA_DIR/recipes/$TEST_RECIPE" rev-parse --short HEAD)"
refute [ -z "$latestCommit" ];
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" reset --hard HEAD~3
assert_success
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
assert_output --partial 'behind 3'
# NOTE(d1): need to use --chaos to force same commit
run $ABRA app deploy "$TEST_APP_DOMAIN" \
--no-input --no-converge-checks --offline
--no-input --no-converge-checks --chaos --offline
assert_success
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
@ -103,23 +113,46 @@ setup(){
_undeploy_app
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" checkout "$latestCommit"
# NOTE(d1): nuke it to ensure clean git state
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE"
assert_success
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
refute_output --partial 'behind 3'
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE"
_fetch_recipe "$TEST_RECIPE"
}
# bats test_tags=slow
@test "deploy latest commit if no published versions and no --chaos" {
latestCommit="$(git -C "$ABRA_DIR/recipes/$TEST_RECIPE" rev-parse --short HEAD)"
run $ABRA app deploy "$TEST_APP_DOMAIN" --no-input --no-converge-checks
run bash -c 'git -C "$ABRA_DIR/recipes/$TEST_RECIPE" tag -l | wc -l'
assert_success
refute_output '0'
run bash -c 'git -C "$ABRA_DIR/recipes/$TEST_RECIPE" tag -l | \
xargs -I{} git -C "$ABRA_DIR/recipes/$TEST_RECIPE" tag -d {}'
assert_success
assert_output --partial 'Deleted tag'
run bash -c 'git -C "$ABRA_DIR/recipes/$TEST_RECIPE" tag -l | wc -l'
assert_success
assert_output '0'
# NOTE(d1): need to pass --offline to stop tags being pulled again
run $ABRA app deploy "$TEST_APP_DOMAIN" \
--no-input --no-converge-checks --offline
assert_success
assert_output --partial "$latestCommit"
assert_output --partial 'using latest commit'
refute_output --partial 'chaos'
_undeploy_app
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" fetch --all
assert_success
run bash -c 'git -C "$ABRA_DIR/recipes/$TEST_RECIPE" tag -l | wc -l'
assert_success
refute_output '0'
}
# bats test_tags=slow
@ -143,9 +176,11 @@ setup(){
_undeploy_app
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" checkout "$latestCommit"
# NOTE(d1): nuke it to ensure clean git state
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE"
assert_success
refute_output --partial 'behind 3'
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE"
_fetch_recipe "$TEST_RECIPE"
}
# bats test_tags=slow
@ -274,3 +309,18 @@ setup(){
_undeploy_app
}
@test "error if specific version does not exist" {
run $ABRA app deploy "$TEST_APP_DOMAIN" DOESNTEXIST --no-input --no-converge-checks
assert_failure
assert_output --partial "doesn't seem to have version DOESNTEXIST available"
}
# bats test_tags=slow
@test "deploy specific version" {
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.2.0+1.21.0" --no-input
assert_success
assert_output --partial "0.2.0+1.21.0"
_undeploy_app
}