Merge pull request #8246 from dokku/8242-tests
Add tests to prove that Procfile tasks all work for every builder
This commit is contained in:
@@ -6,7 +6,6 @@ set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
trigger-builder-nixpacks-builder-build() {
|
||||
set -x
|
||||
declare desc="builder-nixpacks builder-build plugin trigger"
|
||||
declare trigger="builder-build"
|
||||
declare BUILDER_TYPE="$1" APP="$2" SOURCECODE_WORK_DIR="$3"
|
||||
@@ -257,7 +256,6 @@ trigger-builder-nixpacks-builder-build() {
|
||||
|
||||
plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||
popd &>/dev/null || pushd "/tmp" >/dev/null
|
||||
set +x
|
||||
}
|
||||
|
||||
trigger-builder-nixpacks-builder-build "$@"
|
||||
|
||||
@@ -8,6 +8,7 @@ web: python3 -u web.py first.Procfile # testing inline comment
|
||||
worker: python3 -u worker.py
|
||||
custom: echo -n
|
||||
release: python3 -u release.py
|
||||
task: python3 -u task.py test
|
||||
|
||||
|
||||
# Old version with separate processes (use this if you have issues with the threaded version)
|
||||
|
||||
@@ -147,15 +147,22 @@ EOF
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run deploy_app dockerfile
|
||||
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP convert_to_dockerfile
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku ps:inspect $TEST_APP"
|
||||
run /bin/bash -c "dokku run $TEST_APP python3 task.py test"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku --quiet run $TEST_APP task"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku run $TEST_APP env"
|
||||
echo "output: $output"
|
||||
|
||||
@@ -105,10 +105,17 @@ teardown() {
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku ps:inspect $TEST_APP"
|
||||
run /bin/bash -c "dokku run $TEST_APP python3 task.py test"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku --quiet run $TEST_APP task"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku run $TEST_APP env"
|
||||
echo "output: $output"
|
||||
|
||||
@@ -29,7 +29,7 @@ teardown() {
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains 'load build definition from Dockerfile'
|
||||
assert_output_contains 'load build definition from Dockerfile' -1
|
||||
assert_output_contains "SECRET_KEY: fjdkslafjdk"
|
||||
|
||||
run /bin/bash -c "dokku builder-nixpacks:set $TEST_APP nixpackstoml-path nonexistent.toml"
|
||||
@@ -41,7 +41,7 @@ teardown() {
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains 'load build definition from Dockerfile'
|
||||
assert_output_contains 'load build definition from Dockerfile' -1
|
||||
}
|
||||
|
||||
@test "(builder-nixpacks) run" {
|
||||
@@ -59,11 +59,20 @@ teardown() {
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains 'load build definition from Dockerfile' -1
|
||||
assert_output_contains "SECRET_KEY: fjdkslafjdk"
|
||||
|
||||
run /bin/bash -c "dokku ps:inspect $TEST_APP"
|
||||
run /bin/bash -c "dokku run $TEST_APP python3 task.py test"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku --quiet run $TEST_APP task"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku run $TEST_APP env"
|
||||
echo "output: $output"
|
||||
|
||||
@@ -95,16 +95,17 @@ teardown() {
|
||||
assert_output_contains 'Building with buildpack 1' 0
|
||||
assert_output_contains 'Installing dependencies using pip'
|
||||
|
||||
run /bin/bash -c "dokku run $TEST_APP python task.py test"
|
||||
run /bin/bash -c "dokku run $TEST_APP python3 task.py test"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku ps:inspect $TEST_APP"
|
||||
run /bin/bash -c "dokku --quiet run $TEST_APP task"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku run $TEST_APP env"
|
||||
echo "output: $output"
|
||||
|
||||
@@ -5,7 +5,6 @@ load test_helper
|
||||
setup_file() {
|
||||
global_setup
|
||||
install_railpack
|
||||
docker run --rm --privileged -d --name buildkit moby/buildkit:latest
|
||||
touch /etc/default/dokku
|
||||
sudo tee -a /etc/default/dokku <<<"export BUILDKIT_HOST='docker-container://buildkit'"
|
||||
}
|
||||
@@ -16,7 +15,9 @@ teardown_file() {
|
||||
}
|
||||
|
||||
setup() {
|
||||
global_setup
|
||||
create_app
|
||||
docker run --rm --privileged -d --name buildkit moby/buildkit:latest
|
||||
}
|
||||
|
||||
teardown() {
|
||||
@@ -54,6 +55,43 @@ teardown() {
|
||||
assert_output_contains 'Successfully built image in'
|
||||
}
|
||||
|
||||
@test "(builder-pack) run" {
|
||||
run /bin/bash -c "dokku config:set $TEST_APP SECRET_KEY=fjdkslafjdk"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku builder:set $TEST_APP selected railpack"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP inject_requirements_txt
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains 'create mise config'
|
||||
assert_output_contains 'Successfully built image in'
|
||||
|
||||
run /bin/bash -c "dokku run $TEST_APP python3 task.py test"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku --quiet run $TEST_APP task"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "['task.py', 'test']"
|
||||
|
||||
run /bin/bash -c "dokku run $TEST_APP env"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains "SECRET_KEY=fjdkslafjdk"
|
||||
}
|
||||
|
||||
inject_requirements_txt() {
|
||||
local APP="$1"
|
||||
local APP_REPO_DIR="$2"
|
||||
|
||||
@@ -169,7 +169,7 @@ teardown() {
|
||||
run /bin/bash -c "dokku --quiet ps:scale $TEST_APP"
|
||||
output=$(echo "$output" | tr -s " ")
|
||||
echo "output: ($output)"
|
||||
assert_output $'cron: 0\ncustom: 0\nrelease: 0\nweb: 1\nworker: 1'
|
||||
assert_output $'cron: 0\ncustom: 0\nrelease: 0\ntask: 0\nweb: 1\nworker: 1'
|
||||
|
||||
run /bin/bash -c "dokku ps:scale $TEST_APP worker=0"
|
||||
echo "output: $output"
|
||||
@@ -179,7 +179,7 @@ teardown() {
|
||||
run /bin/bash -c "dokku --quiet ps:scale $TEST_APP"
|
||||
output=$(echo "$output" | tr -s " ")
|
||||
echo "output: ($output)"
|
||||
assert_output $'cron: 0\ncustom: 0\nrelease: 0\nweb: 1\nworker: 0'
|
||||
assert_output $'cron: 0\ncustom: 0\nrelease: 0\ntask: 0\nweb: 1\nworker: 0'
|
||||
|
||||
run /bin/bash -c "dokku ps:set $TEST_APP procfile-path second.Procfile"
|
||||
echo "output: $output"
|
||||
|
||||
@@ -148,6 +148,14 @@ assert_output_contains() {
|
||||
input="${input/$expected/}"
|
||||
found=$((found + 1))
|
||||
done
|
||||
|
||||
if [[ "$count" -eq -1 ]]; then
|
||||
if [[ "$found" -gt 0 ]]; then
|
||||
return 0
|
||||
fi
|
||||
flunk "expected at least 1 occurrence of '$expected', found $found"
|
||||
fi
|
||||
|
||||
[[ "$count" -eq "$found" ]] || flunk "expected $count occurrences of '$expected', found $found"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user