Files
dokku/tests/unit/app-json-3.bats
Jose Diaz-Gonzalez 5846301a48 tests: make it possible to specify an alternative base domain for tests
When developing Dokku, it is useful to use a real domain to test actual functionality. This is impossible if the domain is hardcoded to dokku.me in testing.
2023-08-05 20:58:26 -04:00

84 lines
2.1 KiB
Bash

#!/usr/bin/env bats
load test_helper
setup() {
global_setup
create_app
}
teardown() {
destroy_app
global_teardown
}
@test "(app-json) persist scale" {
local CUSTOM_TMP=$(mktemp -d "/tmp/${DOKKU_DOMAIN}.XXXXX")
trap 'popd &>/dev/null || true; rm -rf "$TMP"' INT TERM
CUSTOM_TMP="$CUSTOM_TMP" run deploy_app python "dokku@$DOKKU_DOMAIN:$TEST_APP" persist_scale_callback_a
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku --quiet ps:scale $TEST_APP"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "web: 1"
assert_output_contains "worker: 1"
assert_output_contains "cron: 0" 0
run persist_scale_callback_b "$TEST_APP" "$CUSTOM_TMP"
echo "output: $output"
echo "status: $status"
assert_success
run git -C "$CUSTOM_TMP" add app.json Procfile
echo "output: $output"
echo "status: $status"
assert_success
run git -C "$CUSTOM_TMP" commit -m 'Update scaling parameters'
echo "output: $output"
echo "status: $status"
assert_success
run git -C "$CUSTOM_TMP" push target master:master
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku --quiet ps:scale $TEST_APP"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "web: 1"
assert_output_contains "worker: 1" 0
assert_output_contains "worker: 0" 0
assert_output_contains "cron: 1" 1
}
persist_scale_callback_a() {
local APP="$1"
local APP_REPO_DIR="$2"
[[ -z "$APP" ]] && local APP="$TEST_APP"
rm "$APP_REPO_DIR/Procfile"
touch "$APP_REPO_DIR/Procfile"
echo "web: python3 web.py" >>"$APP_REPO_DIR/Procfile"
echo "worker: python3 worker.py" >>"$APP_REPO_DIR/Procfile"
mv "$APP_REPO_DIR/app-5205a.json" "$APP_REPO_DIR/app.json"
}
persist_scale_callback_b() {
local APP="$1"
local APP_REPO_DIR="$2"
[[ -z "$APP" ]] && local APP="$TEST_APP"
rm "$APP_REPO_DIR/Procfile"
touch "$APP_REPO_DIR/Procfile"
echo "web: python3 web.py" >>"$APP_REPO_DIR/Procfile"
echo "cron: python3 worker.py" >>"$APP_REPO_DIR/Procfile"
mv "$APP_REPO_DIR/app-5205b.json" "$APP_REPO_DIR/app.json"
}