Merge pull request #8578 from dokku/8566-core-post-extract-in-four-builder-plugins-fails-under-bash-5-3

Reference SOURCECODE_WORK_DIR in builder core-post-extract
This commit is contained in:
Jose Diaz-Gonzalez
2026-05-08 17:06:10 -04:00
committed by GitHub
12 changed files with 135 additions and 12 deletions

View File

@@ -10,7 +10,7 @@ trigger-builder-dockerfile-core-post-extract() {
declare APP="$1" SOURCECODE_WORK_DIR="$2"
local NEW_DOCKERFILE="$(fn-builder-dockerfile-computed-dockerfile-path "$APP")"
pushd "$TMP_WORK_DIR" >/dev/null
pushd "$SOURCECODE_WORK_DIR" >/dev/null
if [[ -z "$NEW_DOCKERFILE" ]]; then
return

View File

@@ -10,7 +10,7 @@ trigger-builder-lambda-core-post-extract() {
declare APP="$1" SOURCECODE_WORK_DIR="$2"
local NEW_LAMBDA_YML="$(fn-builder-lambda-computed-lambdayml-path "$APP")"
pushd "$TMP_WORK_DIR" >/dev/null
pushd "$SOURCECODE_WORK_DIR" >/dev/null
if [[ -z "$NEW_LAMBDA_YML" ]]; then
return

View File

@@ -10,7 +10,7 @@ trigger-builder-nixpacks-core-post-extract() {
declare APP="$1" SOURCECODE_WORK_DIR="$2"
local NEW_NIXPACKS_YML="$(fn-builder-nixpacks-computed-nixpackstoml-path "$APP")"
pushd "$TMP_WORK_DIR" >/dev/null
pushd "$SOURCECODE_WORK_DIR" >/dev/null
if [[ -z "$NEW_NIXPACKS_YML" ]]; then
return

View File

@@ -10,7 +10,7 @@ trigger-builder-pack-core-post-extract() {
declare APP="$1" SOURCECODE_WORK_DIR="$2"
local NEW_PROJECT_TOML="$(fn-builder-pack-computed-projecttoml-path "$APP")"
pushd "$TMP_WORK_DIR" >/dev/null
pushd "$SOURCECODE_WORK_DIR" >/dev/null
if [[ -z "$NEW_PROJECT_TOML" ]]; then
return

View File

@@ -10,7 +10,7 @@ trigger-builder-railpack-core-post-extract() {
declare APP="$1" SOURCECODE_WORK_DIR="$2"
local NEW_RAILPACK_JSON="$(fn-builder-railpack-computed-railpackjson-path "$APP")"
pushd "$TMP_WORK_DIR" >/dev/null
pushd "$SOURCECODE_WORK_DIR" >/dev/null
if [[ -z "$NEW_RAILPACK_JSON" ]]; then
return

View File

@@ -155,6 +155,26 @@ EOF
assert_output "3001/udp 3000/tcp 3003"
}
@test "(builder-dockerfile) core-post-extract renames the configured dockerfile" {
echo "FROM scratch" >"$BATS_TEST_TMPDIR/second.Dockerfile"
run /bin/bash -c "dokku builder-dockerfile:set $TEST_APP dockerfile-path second.Dockerfile"
echo "output: $output"
echo "status: $status"
assert_success
run_plugin_script builder-dockerfile core-post-extract "$TEST_APP" "$BATS_TEST_TMPDIR" HEAD
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $BATS_TEST_TMPDIR/Dockerfile"
assert_success
run /bin/bash -c "test ! -e $BATS_TEST_TMPDIR/second.Dockerfile"
assert_success
}
@test "(builder-dockerfile) ps:rebuild fetches files from image" {
run /bin/bash -c "dokku --trace git:from-image $TEST_APP dokku/smoke-test-app:dockerfile"
echo "output: $output"

View File

@@ -152,6 +152,26 @@ teardown() {
assert_success
}
@test "(builder-lambda) core-post-extract renames the configured lambda.yml" {
echo "---" >"$BATS_TEST_TMPDIR/lambda2.yml"
run /bin/bash -c "dokku builder-lambda:set $TEST_APP lambdayml-path lambda2.yml"
echo "output: $output"
echo "status: $status"
assert_success
run_plugin_script builder-lambda core-post-extract "$TEST_APP" "$BATS_TEST_TMPDIR" HEAD
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $BATS_TEST_TMPDIR/lambda.yml"
assert_success
run /bin/bash -c "test ! -e $BATS_TEST_TMPDIR/lambda2.yml"
assert_success
}
inject_lambda_yml() {
local APP="$1"
local APP_REPO_DIR="$2"

View File

@@ -131,6 +131,26 @@ teardown() {
assert_output "['task.py', 'some', 'cron', 'task']"
}
@test "(builder-nixpacks) core-post-extract renames the configured nixpacks.toml" {
echo "" >"$BATS_TEST_TMPDIR/nixpacks.alt.toml"
run /bin/bash -c "dokku builder-nixpacks:set $TEST_APP nixpackstoml-path nixpacks.alt.toml"
echo "output: $output"
echo "status: $status"
assert_success
run_plugin_script builder-nixpacks core-post-extract "$TEST_APP" "$BATS_TEST_TMPDIR" HEAD
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $BATS_TEST_TMPDIR/nixpacks.toml"
assert_success
run /bin/bash -c "test ! -e $BATS_TEST_TMPDIR/nixpacks.alt.toml"
assert_success
}
cron_run_wrapper() {
local APP="$1"
local APP_REPO_DIR="$2"

View File

@@ -228,6 +228,26 @@ teardown() {
assert_output "['task.py', 'test']"
}
@test "(builder-pack) core-post-extract renames the configured project.toml" {
echo "" >"$BATS_TEST_TMPDIR/project2.toml"
run /bin/bash -c "dokku builder-pack:set $TEST_APP projecttoml-path project2.toml"
echo "output: $output"
echo "status: $status"
assert_success
run_plugin_script builder-pack core-post-extract "$TEST_APP" "$BATS_TEST_TMPDIR" HEAD
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $BATS_TEST_TMPDIR/project.toml"
assert_success
run /bin/bash -c "test ! -e $BATS_TEST_TMPDIR/project2.toml"
assert_success
}
cron_run_wrapper() {
local APP="$1"
local APP_REPO_DIR="$2"

View File

@@ -142,6 +142,26 @@ teardown() {
assert_output "['task.py', 'some', 'cron', 'task']"
}
@test "(builder-railpack) core-post-extract renames the configured railpack.json" {
echo "{}" >"$BATS_TEST_TMPDIR/railpack.alt.json"
run /bin/bash -c "dokku builder-railpack:set $TEST_APP railpackjson-path railpack.alt.json"
echo "output: $output"
echo "status: $status"
assert_success
run_plugin_script builder-railpack core-post-extract "$TEST_APP" "$BATS_TEST_TMPDIR" HEAD
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "test -f $BATS_TEST_TMPDIR/railpack.json"
assert_success
run /bin/bash -c "test ! -e $BATS_TEST_TMPDIR/railpack.alt.json"
assert_success
}
cron_run_wrapper() {
local APP="$1"
local APP_REPO_DIR="$2"

View File

@@ -23,7 +23,7 @@ teardown() {
echo "status: $status"
assert_output "256m"
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT plugn trigger docker-args-process-build $TEST_APP herokuish < /dev/null"
run_plugn_trigger docker-args-process-build "$TEST_APP" herokuish
echo "output: $output"
echo "status: $status"
assert_success
@@ -39,7 +39,7 @@ teardown() {
echo "status: $status"
assert_success
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT plugn trigger docker-args-process-build $TEST_APP dockerfile < /dev/null"
run_plugn_trigger docker-args-process-build "$TEST_APP" dockerfile
echo "output: $output"
echo "status: $status"
assert_success
@@ -55,13 +55,13 @@ teardown() {
echo "status: $status"
assert_success
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT plugn trigger docker-args-process-build $TEST_APP pack < /dev/null"
run_plugn_trigger docker-args-process-build "$TEST_APP" pack
echo "output: $output"
echo "status: $status"
assert_success
assert_output_not_contains "--memory"
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT plugn trigger docker-args-process-build $TEST_APP lambda < /dev/null"
run_plugn_trigger docker-args-process-build "$TEST_APP" lambda
echo "output: $output"
echo "status: $status"
assert_success
@@ -74,7 +74,7 @@ teardown() {
echo "status: $status"
assert_success
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT plugn trigger docker-args-process-build $TEST_APP herokuish < /dev/null"
run_plugn_trigger docker-args-process-build "$TEST_APP" herokuish
echo "output: $output"
echo "status: $status"
assert_success
@@ -87,7 +87,7 @@ teardown() {
echo "status: $status"
assert_success
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT plugn trigger docker-args-process-build $TEST_APP herokuish < /dev/null"
run_plugn_trigger docker-args-process-build "$TEST_APP" herokuish
echo "output: $output"
echo "status: $status"
assert_success
@@ -101,7 +101,7 @@ teardown() {
echo "status: $status"
assert_success
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT DOKKU_OMIT_RESOURCE_ARGS=1 plugn trigger docker-args-process-build $TEST_APP herokuish < /dev/null"
run_plugn_trigger DOKKU_OMIT_RESOURCE_ARGS=1 docker-args-process-build "$TEST_APP" herokuish
echo "output: $output"
echo "status: $status"
assert_success

View File

@@ -231,6 +231,29 @@ destroy_key() {
rm -f /tmp/testkey* &>/dev/null || true
}
# Run a plugn trigger with the env vars plugn needs, capturing $output/$status via bats `run`.
# Optional VAR=VAL pairs before <trigger> are forwarded as extra env vars on the bash command line.
# Usage: run_plugn_trigger [VAR=VAL ...] <trigger> <args...>
run_plugn_trigger() {
local extra_env=""
while [[ "$1" == *=* ]]; do
extra_env+=" $1"
shift
done
local TRIGGER="$1"
shift
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT${extra_env} plugn trigger $TRIGGER $* < /dev/null"
}
# Run a single plugin's trigger script directly so other plugins' handlers do not fire.
# Captures $output/$status via bats `run`.
# Usage: run_plugin_script <plugin_name> <script_name> <args...>
run_plugin_script() {
local PLUGIN_NAME="$1" SCRIPT_NAME="$2"
shift 2
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_AVAILABLE_PATH=$PLUGIN_AVAILABLE_PATH PLUGIN_ENABLED_PATH=$PLUGIN_ENABLED_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_ENABLED_PATH/$PLUGIN_NAME/$SCRIPT_NAME $*"
}
check_urls() {
local PATTERN="$1"
run /bin/bash -c "dokku urls $TEST_APP | grep -E \"${PATTERN}\""