test: backfill raw/global/computed report triplet coverage across plugins

The bats coverage for plugin :report keys has been uneven since the raw/global/computed split landed in PR #8640. This commit adds a single combined triplet test per settable property across app-json, builder, builder-dockerfile, builder-herokuish, builder-lambda, builder-nixpacks, builder-pack, builder-railpack, buildpacks, cron (maintenance), git (keep-git-dir, rev-env-var, source-image), logs (vector-sink, vector-global-image, vector-global-networks), network (attach-post-create, attach-post-deploy, initial-network), proxy (per-app type), ps (stop-timeout-seconds), registry (image-repo, push-on-release, push-extra-tags), storage (build/deploy/run mounts), and adds a new tests/unit/scheduler.bats and tests/unit/nginx-vhosts_properties.bats. Brings ps `procfile-path` and `stop-timeout-seconds` global getters in line with the #8640 convention (raw global, default resolved in computed). Documents the read-only and internal properties that surface in `:report` (or are written by Dokku) but cannot be managed by `:set` in a new `## Internal properties` section appended to each affected plugin's docs page.
This commit is contained in:
Jose Diaz-Gonzalez
2026-05-21 23:59:14 -04:00
parent 2bdf7b59c9
commit cdcf1fc669
35 changed files with 1332 additions and 28 deletions

View File

@@ -313,6 +313,55 @@ teardown() {
assert_output "app.json"
}
@test "(app-json:report) appjson-path raw vs computed vs global" {
run /bin/bash -c "dokku app-json:set --global appjson-path"
assert_success
run /bin/bash -c "dokku app-json:report $TEST_APP --app-json-appjson-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku app-json:report $TEST_APP --app-json-global-appjson-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku app-json:report $TEST_APP --app-json-computed-appjson-path"
assert_success
assert_output "app.json"
run /bin/bash -c "dokku app-json:set --global appjson-path app.global.json"
assert_success
run /bin/bash -c "dokku app-json:report $TEST_APP --app-json-global-appjson-path"
assert_success
assert_output "app.global.json"
run /bin/bash -c "dokku app-json:report $TEST_APP --app-json-computed-appjson-path"
assert_success
assert_output "app.global.json"
run /bin/bash -c "dokku app-json:set $TEST_APP appjson-path app.app.json"
assert_success
run /bin/bash -c "dokku app-json:report $TEST_APP --app-json-appjson-path"
assert_success
assert_output "app.app.json"
run /bin/bash -c "dokku app-json:report $TEST_APP --app-json-global-appjson-path"
assert_success
assert_output "app.global.json"
run /bin/bash -c "dokku app-json:report $TEST_APP --app-json-computed-appjson-path"
assert_success
assert_output "app.app.json"
run /bin/bash -c "dokku app-json:set $TEST_APP appjson-path"
assert_success
run /bin/bash -c "dokku app-json:set --global appjson-path"
assert_success
}
copy_app_json_to_sub_app() {
local APP="$1"
local APP_REPO_DIR="$2"

View File

@@ -83,6 +83,59 @@ teardown() {
assert_success
}
@test "(builder-dockerfile:report) dockerfile-path raw vs computed vs global" {
run /bin/bash -c "dokku builder-dockerfile:set --global dockerfile-path"
assert_success
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-dockerfile-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-global-dockerfile-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-computed-dockerfile-path"
assert_success
assert_output "Dockerfile"
run /bin/bash -c "dokku builder-dockerfile:set --global dockerfile-path Dockerfile.global"
assert_success
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-global-dockerfile-path"
assert_success
assert_output "Dockerfile.global"
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-computed-dockerfile-path"
assert_success
assert_output "Dockerfile.global"
run /bin/bash -c "dokku builder-dockerfile:set $TEST_APP dockerfile-path Dockerfile.app"
assert_success
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-dockerfile-path"
assert_success
assert_output "Dockerfile.app"
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-global-dockerfile-path"
assert_success
assert_output "Dockerfile.global"
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-computed-dockerfile-path"
assert_success
assert_output "Dockerfile.app"
run /bin/bash -c "dokku builder-dockerfile:set $TEST_APP dockerfile-path"
assert_success
run /bin/bash -c "dokku builder-dockerfile:set --global dockerfile-path"
assert_success
run /bin/bash -c "dokku builder-dockerfile:report $TEST_APP --builder-dockerfile-computed-dockerfile-path"
assert_success
assert_output "Dockerfile"
}
@test "(builder-dockerfile:set)" {
run deploy_app dockerfile
echo "output: $output"

View File

@@ -52,6 +52,58 @@ teardown() {
assert_success
}
@test "(builder-herokuish:report) allowed raw vs computed vs global" {
local default_allowed="true"
[[ "$(dpkg --print-architecture 2>/dev/null || true)" != "amd64" ]] && default_allowed="false"
run /bin/bash -c "dokku builder-herokuish:set --global allowed"
assert_success
run /bin/bash -c "dokku builder-herokuish:report $TEST_APP --builder-herokuish-allowed"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-herokuish:report $TEST_APP --builder-herokuish-global-allowed"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-herokuish:report $TEST_APP --builder-herokuish-computed-allowed"
assert_success
assert_output "$default_allowed"
run /bin/bash -c "dokku builder-herokuish:set --global allowed false"
assert_success
run /bin/bash -c "dokku builder-herokuish:report $TEST_APP --builder-herokuish-global-allowed"
assert_success
assert_output "false"
run /bin/bash -c "dokku builder-herokuish:report $TEST_APP --builder-herokuish-computed-allowed"
assert_success
assert_output "false"
run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed true"
assert_success
run /bin/bash -c "dokku builder-herokuish:report $TEST_APP --builder-herokuish-allowed"
assert_success
assert_output "true"
run /bin/bash -c "dokku builder-herokuish:report $TEST_APP --builder-herokuish-global-allowed"
assert_success
assert_output "false"
run /bin/bash -c "dokku builder-herokuish:report $TEST_APP --builder-herokuish-computed-allowed"
assert_success
assert_output "true"
run /bin/bash -c "dokku builder-herokuish:set $TEST_APP allowed"
assert_success
run /bin/bash -c "dokku builder-herokuish:set --global allowed"
assert_success
}
@test "(builder-herouish:build .env)" {
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP
echo "output: $output"

View File

@@ -52,6 +52,55 @@ teardown() {
assert_success
}
@test "(builder-lambda:report) lambdayml-path raw vs computed vs global" {
run /bin/bash -c "dokku builder-lambda:set --global lambdayml-path"
assert_success
run /bin/bash -c "dokku builder-lambda:report $TEST_APP --builder-lambda-lambdayml-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-lambda:report $TEST_APP --builder-lambda-global-lambdayml-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-lambda:report $TEST_APP --builder-lambda-computed-lambdayml-path"
assert_success
assert_output "lambda.yml"
run /bin/bash -c "dokku builder-lambda:set --global lambdayml-path lambda.global.yml"
assert_success
run /bin/bash -c "dokku builder-lambda:report $TEST_APP --builder-lambda-global-lambdayml-path"
assert_success
assert_output "lambda.global.yml"
run /bin/bash -c "dokku builder-lambda:report $TEST_APP --builder-lambda-computed-lambdayml-path"
assert_success
assert_output "lambda.global.yml"
run /bin/bash -c "dokku builder-lambda:set $TEST_APP lambdayml-path lambda.app.yml"
assert_success
run /bin/bash -c "dokku builder-lambda:report $TEST_APP --builder-lambda-lambdayml-path"
assert_success
assert_output "lambda.app.yml"
run /bin/bash -c "dokku builder-lambda:report $TEST_APP --builder-lambda-global-lambdayml-path"
assert_success
assert_output "lambda.global.yml"
run /bin/bash -c "dokku builder-lambda:report $TEST_APP --builder-lambda-computed-lambdayml-path"
assert_success
assert_output "lambda.app.yml"
run /bin/bash -c "dokku builder-lambda:set $TEST_APP lambdayml-path"
assert_success
run /bin/bash -c "dokku builder-lambda:set --global lambdayml-path"
assert_success
}
@test "(builder-lambda:set)" {
run /bin/bash -c "dokku config:set $TEST_APP SECRET_KEY=fjdkslafjdk"
echo "output: $output"

View File

@@ -56,6 +56,55 @@ teardown() {
assert_success
}
@test "(builder-nixpacks:report) nixpackstoml-path raw vs computed vs global" {
run /bin/bash -c "dokku builder-nixpacks:set --global nixpackstoml-path"
assert_success
run /bin/bash -c "dokku builder-nixpacks:report $TEST_APP --builder-nixpacks-nixpackstoml-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-nixpacks:report $TEST_APP --builder-nixpacks-global-nixpackstoml-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-nixpacks:report $TEST_APP --builder-nixpacks-computed-nixpackstoml-path"
assert_success
assert_output "nixpacks.toml"
run /bin/bash -c "dokku builder-nixpacks:set --global nixpackstoml-path nixpacks.global.toml"
assert_success
run /bin/bash -c "dokku builder-nixpacks:report $TEST_APP --builder-nixpacks-global-nixpackstoml-path"
assert_success
assert_output "nixpacks.global.toml"
run /bin/bash -c "dokku builder-nixpacks:report $TEST_APP --builder-nixpacks-computed-nixpackstoml-path"
assert_success
assert_output "nixpacks.global.toml"
run /bin/bash -c "dokku builder-nixpacks:set $TEST_APP nixpackstoml-path nixpacks.app.toml"
assert_success
run /bin/bash -c "dokku builder-nixpacks:report $TEST_APP --builder-nixpacks-nixpackstoml-path"
assert_success
assert_output "nixpacks.app.toml"
run /bin/bash -c "dokku builder-nixpacks:report $TEST_APP --builder-nixpacks-global-nixpackstoml-path"
assert_success
assert_output "nixpacks.global.toml"
run /bin/bash -c "dokku builder-nixpacks:report $TEST_APP --builder-nixpacks-computed-nixpackstoml-path"
assert_success
assert_output "nixpacks.app.toml"
run /bin/bash -c "dokku builder-nixpacks:set $TEST_APP nixpackstoml-path"
assert_success
run /bin/bash -c "dokku builder-nixpacks:set --global nixpackstoml-path"
assert_success
}
@test "(builder-nixpacks:set)" {
run /bin/bash -c "dokku config:set $TEST_APP SECRET_KEY=fjdkslafjdk"
echo "output: $output"

View File

@@ -58,6 +58,55 @@ teardown() {
assert_success
}
@test "(builder-pack:report) projecttoml-path raw vs computed vs global" {
run /bin/bash -c "dokku builder-pack:set --global projecttoml-path"
assert_success
run /bin/bash -c "dokku builder-pack:report $TEST_APP --builder-pack-projecttoml-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-pack:report $TEST_APP --builder-pack-global-projecttoml-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-pack:report $TEST_APP --builder-pack-computed-projecttoml-path"
assert_success
assert_output "project.toml"
run /bin/bash -c "dokku builder-pack:set --global projecttoml-path project.global.toml"
assert_success
run /bin/bash -c "dokku builder-pack:report $TEST_APP --builder-pack-global-projecttoml-path"
assert_success
assert_output "project.global.toml"
run /bin/bash -c "dokku builder-pack:report $TEST_APP --builder-pack-computed-projecttoml-path"
assert_success
assert_output "project.global.toml"
run /bin/bash -c "dokku builder-pack:set $TEST_APP projecttoml-path project.app.toml"
assert_success
run /bin/bash -c "dokku builder-pack:report $TEST_APP --builder-pack-projecttoml-path"
assert_success
assert_output "project.app.toml"
run /bin/bash -c "dokku builder-pack:report $TEST_APP --builder-pack-global-projecttoml-path"
assert_success
assert_output "project.global.toml"
run /bin/bash -c "dokku builder-pack:report $TEST_APP --builder-pack-computed-projecttoml-path"
assert_success
assert_output "project.app.toml"
run /bin/bash -c "dokku builder-pack:set $TEST_APP projecttoml-path"
assert_success
run /bin/bash -c "dokku builder-pack:set --global projecttoml-path"
assert_success
}
@test "(builder-pack:set)" {
run /bin/bash -c "dokku config:set $TEST_APP SECRET_KEY=fjdkslafjdk"
echo "output: $output"

View File

@@ -67,6 +67,55 @@ teardown() {
assert_success
}
@test "(builder-railpack:report) railpackjson-path raw vs computed vs global" {
run /bin/bash -c "dokku builder-railpack:set --global railpackjson-path"
assert_success
run /bin/bash -c "dokku builder-railpack:report $TEST_APP --builder-railpack-railpackjson-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-railpack:report $TEST_APP --builder-railpack-global-railpackjson-path"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder-railpack:report $TEST_APP --builder-railpack-computed-railpackjson-path"
assert_success
assert_output "railpack.json"
run /bin/bash -c "dokku builder-railpack:set --global railpackjson-path railpack.global.json"
assert_success
run /bin/bash -c "dokku builder-railpack:report $TEST_APP --builder-railpack-global-railpackjson-path"
assert_success
assert_output "railpack.global.json"
run /bin/bash -c "dokku builder-railpack:report $TEST_APP --builder-railpack-computed-railpackjson-path"
assert_success
assert_output "railpack.global.json"
run /bin/bash -c "dokku builder-railpack:set $TEST_APP railpackjson-path railpack.app.json"
assert_success
run /bin/bash -c "dokku builder-railpack:report $TEST_APP --builder-railpack-railpackjson-path"
assert_success
assert_output "railpack.app.json"
run /bin/bash -c "dokku builder-railpack:report $TEST_APP --builder-railpack-global-railpackjson-path"
assert_success
assert_output "railpack.global.json"
run /bin/bash -c "dokku builder-railpack:report $TEST_APP --builder-railpack-computed-railpackjson-path"
assert_success
assert_output "railpack.app.json"
run /bin/bash -c "dokku builder-railpack:set $TEST_APP railpackjson-path"
assert_success
run /bin/bash -c "dokku builder-railpack:set --global railpackjson-path"
assert_success
}
@test "(builder-railpack:set)" {
run /bin/bash -c "dokku config:set $TEST_APP SECRET_KEY=fjdkslafjdk"
echo "output: $output"

View File

@@ -209,6 +209,104 @@ teardown() {
assert_success
}
@test "(builder:report) selected raw vs computed vs global" {
run /bin/bash -c "dokku builder:set --global selected"
assert_success
run /bin/bash -c "dokku builder:report $TEST_APP --builder-selected"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder:report $TEST_APP --builder-global-selected"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder:report $TEST_APP --builder-computed-selected"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder:set --global selected dockerfile"
assert_success
run /bin/bash -c "dokku builder:report $TEST_APP --builder-global-selected"
assert_success
assert_output "dockerfile"
run /bin/bash -c "dokku builder:report $TEST_APP --builder-computed-selected"
assert_success
assert_output "dockerfile"
run /bin/bash -c "dokku builder:set $TEST_APP selected herokuish"
assert_success
run /bin/bash -c "dokku builder:report $TEST_APP --builder-selected"
assert_success
assert_output "herokuish"
run /bin/bash -c "dokku builder:report $TEST_APP --builder-global-selected"
assert_success
assert_output "dockerfile"
run /bin/bash -c "dokku builder:report $TEST_APP --builder-computed-selected"
assert_success
assert_output "herokuish"
run /bin/bash -c "dokku builder:set $TEST_APP selected"
assert_success
run /bin/bash -c "dokku builder:set --global selected"
assert_success
}
@test "(builder:report) build-dir raw vs computed vs global" {
run /bin/bash -c "dokku builder:set --global build-dir"
assert_success
run /bin/bash -c "dokku builder:report $TEST_APP --builder-build-dir"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder:report $TEST_APP --builder-global-build-dir"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder:report $TEST_APP --builder-computed-build-dir"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku builder:set --global build-dir global/subdir"
assert_success
run /bin/bash -c "dokku builder:report $TEST_APP --builder-global-build-dir"
assert_success
assert_output "global/subdir"
run /bin/bash -c "dokku builder:report $TEST_APP --builder-computed-build-dir"
assert_success
assert_output "global/subdir"
run /bin/bash -c "dokku builder:set $TEST_APP build-dir app/subdir"
assert_success
run /bin/bash -c "dokku builder:report $TEST_APP --builder-build-dir"
assert_success
assert_output "app/subdir"
run /bin/bash -c "dokku builder:report $TEST_APP --builder-global-build-dir"
assert_success
assert_output "global/subdir"
run /bin/bash -c "dokku builder:report $TEST_APP --builder-computed-build-dir"
assert_success
assert_output "app/subdir"
run /bin/bash -c "dokku builder:set $TEST_APP build-dir"
assert_success
run /bin/bash -c "dokku builder:set --global build-dir"
assert_success
}
@test "(builder:set)" {
run deploy_app python
echo "output: $output"

View File

@@ -191,6 +191,51 @@ teardown() {
assert_success
}
@test "(buildpacks:report) stack raw vs computed vs global" {
run /bin/bash -c "dokku buildpacks:set-property --global stack"
assert_success
run /bin/bash -c "dokku --quiet buildpacks:report $TEST_APP --format json | jq -r '.\"buildpacks-stack\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet buildpacks:report $TEST_APP --format json | jq -r '.\"buildpacks-global-stack\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku buildpacks:set-property --global stack gliderlabs/herokuish:global"
assert_success
run /bin/bash -c "dokku --quiet buildpacks:report $TEST_APP --format json | jq -r '.\"buildpacks-global-stack\"'"
assert_success
assert_output "gliderlabs/herokuish:global"
run /bin/bash -c "dokku --quiet buildpacks:report $TEST_APP --format json | jq -r '.\"buildpacks-computed-stack\"'"
assert_success
assert_output "gliderlabs/herokuish:global"
run /bin/bash -c "dokku buildpacks:set-property $TEST_APP stack gliderlabs/herokuish:app"
assert_success
run /bin/bash -c "dokku --quiet buildpacks:report $TEST_APP --format json | jq -r '.\"buildpacks-stack\"'"
assert_success
assert_output "gliderlabs/herokuish:app"
run /bin/bash -c "dokku --quiet buildpacks:report $TEST_APP --format json | jq -r '.\"buildpacks-global-stack\"'"
assert_success
assert_output "gliderlabs/herokuish:global"
run /bin/bash -c "dokku --quiet buildpacks:report $TEST_APP --format json | jq -r '.\"buildpacks-computed-stack\"'"
assert_success
assert_output "gliderlabs/herokuish:app"
run /bin/bash -c "dokku buildpacks:set-property $TEST_APP stack"
assert_success
run /bin/bash -c "dokku buildpacks:set-property --global stack"
assert_success
}
@test "(buildpacks) buildpacks:remove" {
run /bin/bash -c "dokku buildpacks:set $TEST_APP heroku/nodejs"
echo "output: $output"

View File

@@ -186,6 +186,55 @@ teardown() {
assert_output_not_contains "unknown flag"
}
@test "(cron:report) maintenance raw vs computed vs global" {
run /bin/bash -c "dokku cron:set --global maintenance"
assert_success
run /bin/bash -c "dokku --quiet cron:report $TEST_APP --format json | jq -r '.\"cron-maintenance\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet cron:report $TEST_APP --format json | jq -r '.\"cron-global-maintenance\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet cron:report $TEST_APP --format json | jq -r '.\"cron-computed-maintenance\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku cron:set --global maintenance true"
assert_success
run /bin/bash -c "dokku --quiet cron:report $TEST_APP --format json | jq -r '.\"cron-global-maintenance\"'"
assert_success
assert_output "true"
run /bin/bash -c "dokku --quiet cron:report $TEST_APP --format json | jq -r '.\"cron-computed-maintenance\"'"
assert_success
assert_output "true"
run /bin/bash -c "dokku cron:set $TEST_APP maintenance false"
assert_success
run /bin/bash -c "dokku --quiet cron:report $TEST_APP --format json | jq -r '.\"cron-maintenance\"'"
assert_success
assert_output "false"
run /bin/bash -c "dokku --quiet cron:report $TEST_APP --format json | jq -r '.\"cron-global-maintenance\"'"
assert_success
assert_output "true"
run /bin/bash -c "dokku --quiet cron:report $TEST_APP --format json | jq -r '.\"cron-computed-maintenance\"'"
assert_success
assert_output "false"
run /bin/bash -c "dokku cron:set $TEST_APP maintenance"
assert_success
run /bin/bash -c "dokku cron:set --global maintenance"
assert_success
}
@test "(cron:set) --global rejects task maintenance properties" {
run /bin/bash -c "dokku cron:set --global maintenance.fakeid true"
echo "output: $output"

View File

@@ -71,52 +71,93 @@ teardown() {
assert_output_contains "Invalid flag passed"
}
@test "(git:report) keep-git-dir raw vs computed" {
run /bin/bash -c "dokku git:report $TEST_APP --git-keep-git-dir"
echo "output: $output"
echo "status: $status"
@test "(git:report) keep-git-dir raw vs computed vs global" {
run /bin/bash -c "dokku git:set --global keep-git-dir"
assert_success
assert_output ""
run /bin/bash -c "dokku git:report $TEST_APP --git-keep-git-dir"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku git:report $TEST_APP --git-global-keep-git-dir"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku git:report $TEST_APP --git-computed-keep-git-dir"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "false"
run /bin/bash -c "dokku git:set $TEST_APP keep-git-dir true"
echo "output: $output"
echo "status: $status"
run /bin/bash -c "dokku git:set --global keep-git-dir true"
assert_success
run /bin/bash -c "dokku git:report $TEST_APP --git-keep-git-dir"
echo "output: $output"
echo "status: $status"
run /bin/bash -c "dokku git:report $TEST_APP --git-global-keep-git-dir"
assert_success
assert_output "true"
run /bin/bash -c "dokku git:report $TEST_APP --git-computed-keep-git-dir"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "true"
run /bin/bash -c "dokku git:set $TEST_APP keep-git-dir false"
assert_success
run /bin/bash -c "dokku git:report $TEST_APP --git-keep-git-dir"
assert_success
assert_output "false"
run /bin/bash -c "dokku git:report $TEST_APP --git-global-keep-git-dir"
assert_success
assert_output "true"
run /bin/bash -c "dokku git:report $TEST_APP --git-computed-keep-git-dir"
assert_success
assert_output "false"
run /bin/bash -c "dokku git:set $TEST_APP keep-git-dir"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku git:report $TEST_APP --git-keep-git-dir"
echo "output: $output"
echo "status: $status"
run /bin/bash -c "dokku git:set --global keep-git-dir"
assert_success
assert_output ""
}
run /bin/bash -c "dokku git:report $TEST_APP --git-computed-keep-git-dir"
echo "output: $output"
echo "status: $status"
@test "(git:report) rev-env-var raw" {
run /bin/bash -c "dokku git:report $TEST_APP --git-rev-env-var"
assert_success
assert_output "false"
assert_output "GIT_REV"
run /bin/bash -c "dokku git:set $TEST_APP rev-env-var COMMIT_SHA"
assert_success
run /bin/bash -c "dokku git:report $TEST_APP --git-rev-env-var"
assert_success
assert_output "COMMIT_SHA"
run /bin/bash -c "dokku git:set $TEST_APP rev-env-var"
assert_success
run /bin/bash -c "dokku git:report $TEST_APP --git-rev-env-var"
assert_success
assert_output "GIT_REV"
}
@test "(git:report) source-image raw" {
run /bin/bash -c "dokku git:report $TEST_APP --git-source-image"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku git:set $TEST_APP source-image alpine:3.20"
assert_success
run /bin/bash -c "dokku git:report $TEST_APP --git-source-image"
assert_success
assert_output "alpine:3.20"
run /bin/bash -c "dokku git:set $TEST_APP source-image"
assert_success
run /bin/bash -c "dokku git:report $TEST_APP --git-source-image"
assert_success
assert_output_not_exists
}
@test "(git:report) raw and computed keys in --format json" {

View File

@@ -485,6 +485,62 @@ teardown() {
assert_output "10m"
}
@test "(logs:report) vector-sink raw vs global" {
run /bin/bash -c "dokku logs:set --global vector-sink"
assert_success
run /bin/bash -c "dokku --quiet logs:report $TEST_APP --format json | jq -r '.\"logs-vector-sink\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet logs:report $TEST_APP --format json | jq -r '.\"logs-global-vector-sink\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku logs:set --global vector-sink console://?encoding[codec]=json"
assert_success
run /bin/bash -c "dokku --quiet logs:report $TEST_APP --format json | jq -r '.\"logs-global-vector-sink\"'"
assert_success
assert_output "console://?encoding[codec]=json"
run /bin/bash -c "dokku logs:set $TEST_APP vector-sink datadog_logs://?api_key=abc"
assert_success
run /bin/bash -c "dokku --quiet logs:report $TEST_APP --format json | jq -r '.\"logs-vector-sink\"'"
assert_success
assert_output "datadog_logs://?api_key=abc"
run /bin/bash -c "dokku logs:set $TEST_APP vector-sink"
assert_success
run /bin/bash -c "dokku logs:set --global vector-sink"
assert_success
}
@test "(logs:report) vector-global-image and vector-global-networks raw" {
run /bin/bash -c "dokku logs:set --global vector-image"
assert_success
run /bin/bash -c "dokku --quiet logs:report --global --format json | jq -r '.\"logs-vector-global-image\"'"
assert_success
assert_output_exists
run /bin/bash -c "dokku logs:set --global vector-image timberio/vector:custom"
assert_success
run /bin/bash -c "dokku --quiet logs:report --global --format json | jq -r '.\"logs-vector-global-image\"'"
assert_success
assert_output "timberio/vector:custom"
run /bin/bash -c "dokku logs:set --global vector-image"
assert_success
run /bin/bash -c "dokku --quiet logs:report --global --format json | jq -r '.\"logs-vector-global-networks\"'"
assert_success
assert_output ""
}
@test "(logs) logs:set --global vector-networks" {
docker network create test-vector-net-a >/dev/null
docker network create test-vector-net-b >/dev/null

View File

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

View File

@@ -0,0 +1,103 @@
#!/usr/bin/env bats
load test_helper
setup() {
global_setup
create_app
}
teardown() {
destroy_app
global_teardown
}
# assert_nginx_property_set_get verifies that for a given nginx property,
# (a) the raw per-app and global keys cycle through set/unset states,
# (b) the computed key always returns a non-empty value when defaults exist,
# and (c) the computed key falls back through per-app -> global.
#
# This intentionally does not pin the exact default value for properties whose
# default is computed at runtime (e.g. proxy-buffer-size depends on the host's
# page size) - those would be brittle to assert verbatim. The set/unset cycle
# is the canonical test for the report convention.
assert_nginx_property_set_get() {
declare prop="$1" app_value="$2" global_value="$3"
run /bin/bash -c "dokku nginx:set --global $prop"
assert_success
run /bin/bash -c "dokku nginx:set --global $prop $global_value"
assert_success
run /bin/bash -c "dokku --quiet nginx:report $TEST_APP --format json | jq -r '.\"nginx-global-$prop\"'"
assert_success
assert_output "$global_value"
run /bin/bash -c "dokku --quiet nginx:report $TEST_APP --format json | jq -r '.\"nginx-computed-$prop\"'"
assert_success
assert_output "$global_value"
run /bin/bash -c "dokku nginx:set $TEST_APP $prop $app_value"
assert_success
run /bin/bash -c "dokku --quiet nginx:report $TEST_APP --format json | jq -r '.\"nginx-$prop\"'"
assert_success
assert_output "$app_value"
run /bin/bash -c "dokku --quiet nginx:report $TEST_APP --format json | jq -r '.\"nginx-global-$prop\"'"
assert_success
assert_output "$global_value"
run /bin/bash -c "dokku --quiet nginx:report $TEST_APP --format json | jq -r '.\"nginx-computed-$prop\"'"
assert_success
assert_output "$app_value"
run /bin/bash -c "dokku nginx:set $TEST_APP $prop"
assert_success
run /bin/bash -c "dokku nginx:set --global $prop"
assert_success
}
@test "(nginx:report) timeout properties raw/global/computed" {
for prop in client-body-timeout client-header-timeout keepalive-timeout lingering-timeout send-timeout proxy-connect-timeout proxy-read-timeout proxy-send-timeout; do
assert_nginx_property_set_get "$prop" "30s" "45s"
done
}
@test "(nginx:report) buffer properties raw/global/computed" {
assert_nginx_property_set_get "proxy-buffer-size" "8k" "16k"
assert_nginx_property_set_get "proxy-buffering" "off" "on"
assert_nginx_property_set_get "proxy-buffers" "16 16k" "32 16k"
assert_nginx_property_set_get "proxy-busy-buffers-size" "16k" "32k"
assert_nginx_property_set_get "client-max-body-size" "10m" "20m"
}
@test "(nginx:report) hsts properties raw/global/computed" {
assert_nginx_property_set_get "hsts" "false" "true"
assert_nginx_property_set_get "hsts-include-subdomains" "false" "true"
assert_nginx_property_set_get "hsts-max-age" "3600" "7200"
assert_nginx_property_set_get "hsts-preload" "true" "false"
}
@test "(nginx:report) x-forwarded properties raw/global/computed" {
assert_nginx_property_set_get "x-forwarded-for-value" "\$remote_addr" "\$proxy_add_x_forwarded_for"
assert_nginx_property_set_get "x-forwarded-port-value" "8080" "8443"
assert_nginx_property_set_get "x-forwarded-proto-value" "https" "http"
assert_nginx_property_set_get "x-forwarded-ssl" "on" "off"
}
@test "(nginx:report) log/address properties raw/global/computed" {
assert_nginx_property_set_get "bind-address-ipv4" "127.0.0.1" "0.0.0.0"
assert_nginx_property_set_get "bind-address-ipv6" "::1" "::"
assert_nginx_property_set_get "access-log-format" "main" "combined"
assert_nginx_property_set_get "access-log-path" "/var/log/nginx/app-access.log" "/dev/stdout"
assert_nginx_property_set_get "error-log-path" "/var/log/nginx/app-error.log" "/dev/stderr"
}
@test "(nginx:report) misc properties raw/global/computed" {
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" "on" "off"
}

View File

@@ -76,6 +76,55 @@ teardown() {
assert_output "nginx"
}
@test "(proxy:report) type raw vs computed vs global" {
run /bin/bash -c "dokku proxy:set --global type"
assert_success
run /bin/bash -c "dokku --quiet proxy:report $TEST_APP --format json | jq -r '.\"proxy-type\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet proxy:report $TEST_APP --format json | jq -r '.\"proxy-global-type\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet proxy:report $TEST_APP --format json | jq -r '.\"proxy-computed-type\"'"
assert_success
assert_output "nginx"
run /bin/bash -c "dokku proxy:set --global type caddy"
assert_success
run /bin/bash -c "dokku --quiet proxy:report $TEST_APP --format json | jq -r '.\"proxy-global-type\"'"
assert_success
assert_output "caddy"
run /bin/bash -c "dokku --quiet proxy:report $TEST_APP --format json | jq -r '.\"proxy-computed-type\"'"
assert_success
assert_output "caddy"
run /bin/bash -c "dokku proxy:set $TEST_APP type traefik"
assert_success
run /bin/bash -c "dokku --quiet proxy:report $TEST_APP --format json | jq -r '.\"proxy-type\"'"
assert_success
assert_output "traefik"
run /bin/bash -c "dokku --quiet proxy:report $TEST_APP --format json | jq -r '.\"proxy-global-type\"'"
assert_success
assert_output "caddy"
run /bin/bash -c "dokku --quiet proxy:report $TEST_APP --format json | jq -r '.\"proxy-computed-type\"'"
assert_success
assert_output "traefik"
run /bin/bash -c "dokku proxy:set $TEST_APP type"
assert_success
run /bin/bash -c "dokku proxy:set --global type"
assert_success
}
@test "(proxy:set) invalid port mapping set" {
run /bin/bash -c "dokku proxy:set $TEST_APP http:80:80"
echo "output: $output"

View File

@@ -168,6 +168,55 @@ web
assert_success
}
@test "(ps:report) stop-timeout-seconds raw vs computed vs global" {
run /bin/bash -c "dokku ps:set --global stop-timeout-seconds"
assert_success
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --format json | jq -r '.\"stop-timeout-seconds\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --format json | jq -r '.\"global-stop-timeout-seconds\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --format json | jq -r '.\"computed-stop-timeout-seconds\"'"
assert_success
assert_output "30"
run /bin/bash -c "dokku ps:set --global stop-timeout-seconds 90"
assert_success
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --format json | jq -r '.\"global-stop-timeout-seconds\"'"
assert_success
assert_output "90"
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --format json | jq -r '.\"computed-stop-timeout-seconds\"'"
assert_success
assert_output "90"
run /bin/bash -c "dokku ps:set $TEST_APP stop-timeout-seconds 45"
assert_success
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --format json | jq -r '.\"stop-timeout-seconds\"'"
assert_success
assert_output "45"
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --format json | jq -r '.\"global-stop-timeout-seconds\"'"
assert_success
assert_output "90"
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --format json | jq -r '.\"computed-stop-timeout-seconds\"'"
assert_success
assert_output "45"
run /bin/bash -c "dokku ps:set $TEST_APP stop-timeout-seconds"
assert_success
run /bin/bash -c "dokku ps:set --global stop-timeout-seconds"
assert_success
}
@test "(ps:restart-policy) default policy" {
run /bin/bash -c "dokku --quiet ps:report $TEST_APP --ps-restart-policy"
echo "output: $output"

View File

@@ -133,6 +133,112 @@ teardown() {
create_app
}
@test "(registry:report) image-repo raw vs computed vs global" {
run /bin/bash -c "dokku registry:set --global image-repo-template"
assert_success
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-image-repo\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-global-image-repo-template\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku registry:set --global image-repo-template 'dokku/{{ APP }}'"
assert_success
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-global-image-repo-template\"'"
assert_success
assert_output 'dokku/{{ APP }}'
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
assert_success
assert_output "dokku/$TEST_APP"
run /bin/bash -c "dokku registry:set $TEST_APP image-repo my/$TEST_APP"
assert_success
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-image-repo\"'"
assert_success
assert_output "my/$TEST_APP"
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-computed-image-repo\"'"
assert_success
assert_output "my/$TEST_APP"
run /bin/bash -c "dokku registry:set $TEST_APP image-repo"
assert_success
run /bin/bash -c "dokku registry:set --global image-repo-template"
assert_success
}
@test "(registry:report) push-on-release raw vs computed vs global" {
run /bin/bash -c "dokku registry:set --global push-on-release"
assert_success
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-push-on-release\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-global-push-on-release\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-on-release\"'"
assert_success
assert_output "false"
run /bin/bash -c "dokku registry:set --global push-on-release true"
assert_success
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-global-push-on-release\"'"
assert_success
assert_output "true"
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-on-release\"'"
assert_success
assert_output "true"
run /bin/bash -c "dokku registry:set $TEST_APP push-on-release false"
assert_success
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-push-on-release\"'"
assert_success
assert_output "false"
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-computed-push-on-release\"'"
assert_success
assert_output "false"
run /bin/bash -c "dokku registry:set $TEST_APP push-on-release"
assert_success
run /bin/bash -c "dokku registry:set --global push-on-release"
assert_success
}
@test "(registry:report) push-extra-tags raw" {
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-push-extra-tags\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku registry:set $TEST_APP push-extra-tags release,stable"
assert_success
run /bin/bash -c "dokku --quiet registry:report $TEST_APP --format json | jq -r '.\"registry-push-extra-tags\"'"
assert_success
assert_output "release,stable"
run /bin/bash -c "dokku registry:set $TEST_APP push-extra-tags"
assert_success
}
@test "(registry) registry:set server" {
run /bin/bash -c "dokku registry:set --global server ghcr.io"
echo "output: $output"

97
tests/unit/scheduler.bats Normal file
View File

@@ -0,0 +1,97 @@
#!/usr/bin/env bats
load test_helper
setup() {
global_setup
create_app
}
teardown() {
dokku scheduler:set --global selected >/dev/null 2>&1 || true
destroy_app
global_teardown
}
@test "(scheduler) scheduler:help" {
run /bin/bash -c "dokku scheduler"
echo "output: $output"
echo "status: $status"
assert_output_contains "Manage schedulers"
help_output="$output"
run /bin/bash -c "dokku scheduler:help"
echo "output: $output"
echo "status: $status"
assert_output_contains "Manage schedulers"
assert_output "$help_output"
}
@test "(scheduler:report) selected raw vs computed vs global" {
run /bin/bash -c "dokku scheduler:set --global selected"
assert_success
run /bin/bash -c "dokku --quiet scheduler:report $TEST_APP --format json | jq -r '.\"scheduler-selected\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet scheduler:report $TEST_APP --format json | jq -r '.\"scheduler-global-selected\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet scheduler:report $TEST_APP --format json | jq -r '.\"scheduler-computed-selected\"'"
assert_success
assert_output "docker-local"
run /bin/bash -c "dokku scheduler:set --global selected null"
assert_success
run /bin/bash -c "dokku --quiet scheduler:report $TEST_APP --format json | jq -r '.\"scheduler-global-selected\"'"
assert_success
assert_output "null"
run /bin/bash -c "dokku --quiet scheduler:report $TEST_APP --format json | jq -r '.\"scheduler-computed-selected\"'"
assert_success
assert_output "null"
run /bin/bash -c "dokku scheduler:set $TEST_APP selected docker-local"
assert_success
run /bin/bash -c "dokku --quiet scheduler:report $TEST_APP --format json | jq -r '.\"scheduler-selected\"'"
assert_success
assert_output "docker-local"
run /bin/bash -c "dokku --quiet scheduler:report $TEST_APP --format json | jq -r '.\"scheduler-global-selected\"'"
assert_success
assert_output "null"
run /bin/bash -c "dokku --quiet scheduler:report $TEST_APP --format json | jq -r '.\"scheduler-computed-selected\"'"
assert_success
assert_output "docker-local"
run /bin/bash -c "dokku scheduler:set $TEST_APP selected"
assert_success
run /bin/bash -c "dokku scheduler:set --global selected"
assert_success
}
@test "(scheduler:report) --global --format json" {
run /bin/bash -c "dokku scheduler:set --global selected"
assert_success
run /bin/bash -c "dokku --quiet scheduler:report --global --format json | jq -e ."
assert_success
run /bin/bash -c "dokku --quiet scheduler:report --global --format json | jq -r '.\"scheduler-global-selected\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet scheduler:report --global --format json | jq -r '.\"scheduler-computed-selected\"'"
assert_success
assert_output "docker-local"
run /bin/bash -c "dokku --quiet scheduler:report --global --format json | jq -r 'has(\"scheduler-selected\")'"
assert_success
assert_output "false"
}

View File

@@ -184,6 +184,38 @@ teardown() {
assert_output "mount_volume:/mount"
}
@test "(storage:report) build/deploy/run mounts raw" {
run /bin/bash -c "dokku --quiet storage:report $TEST_APP --format json | jq -r '.\"storage-build-mounts\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet storage:report $TEST_APP --format json | jq -r '.\"storage-deploy-mounts\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku --quiet storage:report $TEST_APP --format json | jq -r '.\"storage-run-mounts\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku storage:mount $TEST_APP /tmp/storage-mount:/mount"
assert_success
run /bin/bash -c "dokku --quiet storage:report $TEST_APP --format json | jq -r '.\"storage-deploy-mounts\"'"
assert_success
assert_output "/tmp/storage-mount:/mount"
run /bin/bash -c "dokku --quiet storage:report $TEST_APP --format json | jq -r '.\"storage-run-mounts\"'"
assert_success
assert_output "/tmp/storage-mount:/mount"
run /bin/bash -c "dokku --quiet storage:report $TEST_APP --format json | jq -r '.\"storage-build-mounts\"'"
assert_success
assert_output ""
run /bin/bash -c "dokku storage:unmount $TEST_APP /tmp/storage-mount:/mount"
assert_success
}
@test "(storage) storage:create / storage:list-entries / storage:destroy" {
run /bin/bash -c "dokku storage:create rdmtest-entry"
echo "output: $output"