fix: unset bind-all-interfaces on empty value

`dokku network:set --global bind-all-interfaces` (no value) wrote the literal string `false` to the property file instead of unsetting it, so external tooling could not distinguish "explicitly set to default" from "not set". Drop the empty-to-`false` coercion in `CommandSet` so the empty-value path reaches `PropertyDelete` like every other property, and remove the unconditional `TriggerPostCreate` write so new apps consult the global value before falling back to the `"false"` computed default.
This commit is contained in:
Jose Diaz-Gonzalez
2026-05-27 05:13:25 -04:00
parent a3538bbb66
commit 035c021485
5 changed files with 94 additions and 18 deletions

View File

@@ -201,6 +201,99 @@ teardown() {
docker network rm initial-network-x >/dev/null
}
@test "(network:report) bind-all-interfaces raw vs computed vs global" {
run /bin/bash -c "dokku network:set --global bind-all-interfaces"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku network:report --global --format json | jq -r '.\"network-global-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output ""
run /bin/bash -c "dokku network:report --global --format json | jq -r '.\"network-computed-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
run /bin/bash -c "dokku network:set --global bind-all-interfaces true"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku network:report --global --format json | jq -r '.\"network-global-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "true"
run /bin/bash -c "dokku network:report --global --format json | jq -r '.\"network-computed-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "true"
run /bin/bash -c "dokku network:report $TEST_APP --format json | jq -r '.\"network-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output ""
run /bin/bash -c "dokku network:report $TEST_APP --format json | jq -r '.\"network-computed-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "true"
run /bin/bash -c "dokku network:set --global bind-all-interfaces"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku network:report --global --format json | jq -r '.\"network-global-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output ""
run /bin/bash -c "dokku network:report --global --format json | jq -r '.\"network-computed-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
run /bin/bash -c "dokku network:set $TEST_APP bind-all-interfaces true"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku network:report $TEST_APP --format json | jq -r '.\"network-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "true"
run /bin/bash -c "dokku network:set $TEST_APP bind-all-interfaces"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku network:report $TEST_APP --format json | jq -r '.\"network-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output ""
run /bin/bash -c "dokku network:report $TEST_APP --format json | jq -r '.\"network-computed-bind-all-interfaces\"'"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
}
@test "(network) network:set bind-all-interfaces" {
run deploy_app
echo "output: $output"