Merge pull request #8680 from dokku/8675-extend-raw-computed-report-key-split-8631-to-nginx-openresty-registry-scheduler-k3s

Split more report global keys into raw and computed
This commit is contained in:
Jose Diaz-Gonzalez
2026-05-26 20:25:51 -04:00
committed by GitHub
15 changed files with 575 additions and 162 deletions

View File

@@ -58,6 +58,10 @@ assert_nginx_property_set_get() {
run /bin/bash -c "dokku nginx:set --global $prop"
assert_success
run /bin/bash -c "dokku nginx:report $TEST_APP --format json | jq -r '.\"global-$prop\"'"
assert_success
assert_output ""
}
@test "(nginx:report) timeout properties raw/global/computed" {
@@ -100,4 +104,5 @@ assert_nginx_property_set_get() {
assert_nginx_property_set_get "disable-custom-config" "false" "true"
assert_nginx_property_set_get "underscore-in-headers" "on" "off"
assert_nginx_property_set_get "proxy-keepalive" "8" "16"
assert_nginx_property_set_get "nginx-conf-sigil-path" "custom.sigil" "global.sigil"
}

View File

@@ -226,6 +226,77 @@ teardown() {
assert_success
}
@test "(registry:report --global) computed and global keys" {
run /bin/bash -c "dokku registry:set --global push-on-release"
assert_success
run /bin/bash -c "dokku registry:set --global server"
assert_success
run /bin/bash -c "dokku registry:set --global image-repo-template"
assert_success
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-push-on-release\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-push-on-release\"'"
assert_success
assert_output "false"
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-server\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-server\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-image-repo-template\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-image-repo-template\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku registry:set --global push-on-release true"
assert_success
run /bin/bash -c "dokku registry:set --global server ghcr.io"
assert_success
run /bin/bash -c "dokku registry:set --global image-repo-template 'dokku/{{ APP }}'"
assert_success
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-push-on-release\"'"
assert_success
assert_output "true"
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-push-on-release\"'"
assert_success
assert_output "true"
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-server\"'"
assert_success
assert_output "ghcr.io"
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-server\"'"
assert_success
assert_output "ghcr.io/"
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-global-image-repo-template\"'"
assert_success
assert_output 'dokku/{{ APP }}'
run /bin/bash -c "dokku registry:report --global --format json | jq -r '.\"registry-computed-image-repo-template\"'"
assert_success
assert_output 'dokku/{{ APP }}'
run /bin/bash -c "dokku registry:set --global push-on-release"
assert_success
run /bin/bash -c "dokku registry:set --global server"
assert_success
run /bin/bash -c "dokku registry:set --global image-repo-template"
assert_success
}
@test "(registry:report) push-extra-tags raw" {
run /bin/bash -c "dokku registry:report $TEST_APP --format json | jq -r '.\"registry-push-extra-tags\"'"
assert_success

View File

@@ -0,0 +1,124 @@
#!/usr/bin/env bats
load test_helper
setup() {
global_setup
}
teardown() {
for prop in deploy-timeout image-pull-secrets ingress-class kubeconfig-path kube-context kustomize-root-path namespace network-interface rollback-on-failure shm-size; do
dokku scheduler-k3s:set --global "$prop" >/dev/null 2>/dev/null || true
done
global_teardown
}
# assert_k3s_global_unset_set verifies that a global property cycles correctly
# through the raw/computed split: when unset, the global key is empty and the
# computed key returns the built-in default; after setting, both pair members
# match the set value. Excludes letsencrypt-* properties whose set path applies
# cluster issuers via helm and requires a live k3s cluster.
assert_k3s_global_unset_set() {
declare prop="$1" expected_default="$2" set_value="$3"
run /bin/bash -c "dokku scheduler-k3s:set --global $prop"
assert_success
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-global-$prop\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-$prop\"'"
assert_success
assert_output "$expected_default"
run /bin/bash -c "dokku scheduler-k3s:set --global $prop '$set_value'"
assert_success
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-global-$prop\"'"
assert_success
assert_output "$set_value"
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-$prop\"'"
assert_success
assert_output "$set_value"
run /bin/bash -c "dokku scheduler-k3s:set --global $prop"
assert_success
}
@test "(scheduler-k3s:report --global) defaulted properties raw/computed cycle" {
assert_k3s_global_unset_set "deploy-timeout" "300s" "600s"
assert_k3s_global_unset_set "kustomize-root-path" "config/kustomize" "deploy/kustomize"
assert_k3s_global_unset_set "namespace" "default" "production"
assert_k3s_global_unset_set "rollback-on-failure" "false" "true"
assert_k3s_global_unset_set "ingress-class" "nginx" "traefik"
assert_k3s_global_unset_set "network-interface" "eth0" "eth1"
assert_k3s_global_unset_set "kubeconfig-path" "/etc/rancher/k3s/k3s.yaml" "/tmp/custom-kubeconfig.yaml"
}
@test "(scheduler-k3s:report --global) empty-default properties expose computed sibling" {
for prop in image-pull-secrets shm-size kube-context; do
run /bin/bash -c "dokku scheduler-k3s:set --global $prop"
assert_success
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-global-$prop\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-$prop\"'"
assert_success
assert_output ""
done
run /bin/bash -c "dokku scheduler-k3s:set --global image-pull-secrets my-secret"
assert_success
run /bin/bash -c "dokku scheduler-k3s:set --global shm-size 64Mi"
assert_success
run /bin/bash -c "dokku scheduler-k3s:set --global kube-context my-context"
assert_success
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-global-image-pull-secrets\"'"
assert_success
assert_output "my-secret"
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-image-pull-secrets\"'"
assert_success
assert_output "my-secret"
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-global-shm-size\"'"
assert_success
assert_output "64Mi"
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-shm-size\"'"
assert_success
assert_output "64Mi"
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-global-kube-context\"'"
assert_success
assert_output "my-context"
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-kube-context\"'"
assert_success
assert_output "my-context"
}
@test "(scheduler-k3s:report --global) letsencrypt properties unset state" {
for prop in letsencrypt-server letsencrypt-email-prod letsencrypt-email-stag; do
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-global-$prop\"'"
assert_success
assert_output ""
done
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-letsencrypt-server\"'"
assert_success
assert_output "prod"
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-letsencrypt-email-prod\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku scheduler-k3s:report --global --format json | jq -r '.\"scheduler-k3s-computed-letsencrypt-email-stag\"'"
assert_success
assert_output ""
}