From b8b112cb7b88e008eab6a9390b3b5766fcd34ecc Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 28 Sep 2024 22:24:06 -0400 Subject: [PATCH 1/3] fix: exit non-zero if any deployment tasks fails --- plugins/common/docker.go | 12 ++++ tests/unit/app-json-4.bats | 125 +++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 tests/unit/app-json-4.bats diff --git a/plugins/common/docker.go b/plugins/common/docker.go index e99fca680..18c90b41e 100644 --- a/plugins/common/docker.go +++ b/plugins/common/docker.go @@ -3,6 +3,7 @@ package common import ( "fmt" "os" + "strconv" "strings" "time" ) @@ -64,6 +65,17 @@ func ContainerWait(containerID string) bool { if err != nil { return false } + + stdout := result.StdoutContents() + if stdout != "0" { + exitCode, err := strconv.Atoi(stdout) + if err != nil { + return false + } + + return exitCode == 0 + } + return result.ExitCode == 0 } diff --git a/tests/unit/app-json-4.bats b/tests/unit/app-json-4.bats new file mode 100644 index 000000000..5cd491f7a --- /dev/null +++ b/tests/unit/app-json-4.bats @@ -0,0 +1,125 @@ +#!/usr/bin/env bats +load test_helper + +setup_file() { + install_pack +} + +setup() { + global_setup + create_app +} + +teardown() { + destroy_app + global_teardown +} + +@test "(app-json) app.json failing dokku.predeploy" { + run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true" + echo "output: $output" + echo "status: $status" + assert_success + + run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_failing_dokku_predeploy + echo "output: $output" + echo "status: $status" + assert_output_contains "Execution of predeploy task failed" + assert_failure +} + +@test "(app-json) app.json failing dokku.postdeploy" { + run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true" + echo "output: $output" + echo "status: $status" + assert_success + + run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_failing_dokku_postdeploy + echo "output: $output" + echo "status: $status" + assert_output_contains "Execution of postdeploy task failed" + assert_failure +} + +@test "(app-json) app.json failing postdeploy" { + run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true" + echo "output: $output" + echo "status: $status" + assert_success + + run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_failing_postdeploy + echo "output: $output" + echo "status: $status" + assert_output_contains "Execution of first deploy postdeploy task failed" + assert_failure +} + +@test "(app-json) app.json failing release" { + run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true" + echo "output: $output" + echo "status: $status" + assert_success + + run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_failing_release + echo "output: $output" + echo "status: $status" + assert_output_contains "Execution of release task failed" + assert_failure +} + +add_failing_dokku_predeploy() { + local APP="$1" + local APP_REPO_DIR="$2" + [[ -z "$APP" ]] && local APP="$TEST_APP" + + cat >"$APP_REPO_DIR/app.json" <"$APP_REPO_DIR/app.json" <"$APP_REPO_DIR/app.json" <"$APP_REPO_DIR/Procfile" < Date: Sat, 28 Sep 2024 22:30:58 -0400 Subject: [PATCH 2/3] fix: correct lint issue --- tests/unit/app-json-4.bats | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/app-json-4.bats b/tests/unit/app-json-4.bats index 5cd491f7a..283d88034 100644 --- a/tests/unit/app-json-4.bats +++ b/tests/unit/app-json-4.bats @@ -122,4 +122,4 @@ add_failing_release() { web: python3 -u web.py release: exit 1 EOF -} \ No newline at end of file +} From 9490034412e7aa58fb08a445d36fc3b03e05e8aa Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 29 Sep 2024 00:04:58 -0400 Subject: [PATCH 3/3] tests: update tests for cnb builder --- tests/unit/app-json.bats | 2 +- tests/unit/ps-cnb.bats | 2 +- tests/unit/run_1.bats | 2 +- tests/unit/test_helper.bash | 9 +++++++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/unit/app-json.bats b/tests/unit/app-json.bats index 3db220920..acdd54854 100644 --- a/tests/unit/app-json.bats +++ b/tests/unit/app-json.bats @@ -99,7 +99,7 @@ teardown() { echo "status: $status" assert_success - run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt + run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt_cnb echo "output: $output" echo "status: $status" assert_success diff --git a/tests/unit/ps-cnb.bats b/tests/unit/ps-cnb.bats index 61dc10ba8..c24044428 100644 --- a/tests/unit/ps-cnb.bats +++ b/tests/unit/ps-cnb.bats @@ -22,7 +22,7 @@ teardown() { echo "status: $status" assert_success - run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt + run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt_cnb echo "output: $output" echo "status: $status" assert_success diff --git a/tests/unit/run_1.bats b/tests/unit/run_1.bats index f84d9c0af..91574f126 100644 --- a/tests/unit/run_1.bats +++ b/tests/unit/run_1.bats @@ -73,7 +73,7 @@ teardown() { echo "status: $status" assert_success - run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt + run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP add_requirements_txt_cnb echo "output: $output" echo "status: $status" assert_success diff --git a/tests/unit/test_helper.bash b/tests/unit/test_helper.bash index 188b4ab69..60b4e522c 100644 --- a/tests/unit/test_helper.bash +++ b/tests/unit/test_helper.bash @@ -587,6 +587,15 @@ add_requirements_txt() { echo "flask" >>"$APP_REPO_DIR/requirements.txt" } +add_requirements_txt_cnb() { + local APP="$1" + local APP_REPO_DIR="$2" + [[ -z "$APP" ]] && local APP="$TEST_APP" + + mv "$APP_REPO_DIR/app-cnb.json" "$APP_REPO_DIR/app.json" + add_requirements_txt "$APP" "$APP_REPO_DIR" +} + create_network() { local NETWORK_NAME="${1:-$TEST_NETWORK}"