添加 mysql redis postgres 插件
This commit is contained in:
20
plugins/postgres/tests/hook_pre_delete.bats
Executable file
20
plugins/postgres/tests/hook_pre_delete.bats
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku apps:create my-app
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" ls
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app >&2
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app >&2
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ls
|
||||
dokku --force apps:destroy my-app || true
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:hook:pre-delete) removes app from links file when destroying app" {
|
||||
[[ -n $(<"$PLUGIN_DATA_ROOT/ls/LINKS") ]]
|
||||
dokku --force apps:destroy my-app
|
||||
[[ -z $(<"$PLUGIN_DATA_ROOT/ls/LINKS") ]]
|
||||
}
|
||||
289
plugins/postgres/tests/link_networks.bats
Executable file
289
plugins/postgres/tests/link_networks.bats
Executable file
@@ -0,0 +1,289 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" ls
|
||||
dokku network:create custom-network
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ls || true
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" lsa || true
|
||||
dokku network:destroy --force custom-network
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:set) set initial-network" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls initial-network custom-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --initial-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "custom-network"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network 0
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge 0
|
||||
assert_output_contains custom-network
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains "alias:dokku.$PLUGIN_COMMAND_PREFIX.ls"
|
||||
assert_output_contains "alias:dokku-$PLUGIN_COMMAND_PREFIX-ls"
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls initial-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --initial-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output ""
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network 0
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:set) set post-create-network" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-create-network custom-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --post-create-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "custom-network"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network 0
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains custom-network
|
||||
assert_output_contains bridge
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains "alias:dokku.$PLUGIN_COMMAND_PREFIX.ls"
|
||||
assert_output_contains "alias:dokku-$PLUGIN_COMMAND_PREFIX-ls"
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-create-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --post-create-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output ""
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network 0
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:set) set an post-start-network" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-start-network custom-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --post-start-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "custom-network"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network 0
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains "alias:dokku.$PLUGIN_COMMAND_PREFIX.ls"
|
||||
assert_output_contains "alias:dokku-$PLUGIN_COMMAND_PREFIX-ls"
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-start-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" ls --post-start-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output ""
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network 0
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:create) flags" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:create" lsa --initial-network custom-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect "dokku.$PLUGIN_COMMAND_PREFIX.lsa" -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge 0
|
||||
assert_output_contains custom-network
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" lsa --force
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:create" lsa --post-create-network custom-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect "dokku.$PLUGIN_COMMAND_PREFIX.lsa" -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network
|
||||
|
||||
run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.lsa -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.DNSNames}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains "alias:dokku.$PLUGIN_COMMAND_PREFIX.lsa"
|
||||
assert_output_contains "alias:dokku-$PLUGIN_COMMAND_PREFIX-lsa"
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" lsa --force
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:create" lsa --post-start-network custom-network
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run docker inspect "dokku.$PLUGIN_COMMAND_PREFIX.lsa" -f '{{range $net,$v := .NetworkSettings.Networks}}{{printf "%s\n" $net}}{{end}}'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output_contains bridge
|
||||
assert_output_contains custom-network
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" lsa --force
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
47
plugins/postgres/tests/service_clone.bats
Executable file
47
plugins/postgres/tests/service_clone.bats
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:clone) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:clone"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:clone) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:clone" not_existing_service new_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:clone) error when new service isn't provided" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:clone" l
|
||||
assert_contains "${lines[*]}" "Please specify a name for the new service"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:clone) error when new service already exists" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" new_service
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:clone" l new_service
|
||||
assert_contains "${lines[*]}" "Invalid service name new_service"
|
||||
assert_failure
|
||||
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" new_service
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:clone) success" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:clone" l new_service
|
||||
[[ -f $PLUGIN_DATA_ROOT/new_service/ID ]]
|
||||
assert_contains "${lines[*]}" "Copying data from l to new_service"
|
||||
assert_contains "${lines[*]}" "Done"
|
||||
assert_success
|
||||
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" new_service
|
||||
}
|
||||
26
plugins/postgres/tests/service_connect.bats
Executable file
26
plugins/postgres/tests/service_connect.bats
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:connect) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:connect"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:connect) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:connect" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:connect) success" {
|
||||
skip "Connect hangs indefinitely without input"
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:connect" l
|
||||
assert_success
|
||||
}
|
||||
27
plugins/postgres/tests/service_create.bats
Executable file
27
plugins/postgres/tests/service_create.bats
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:create) success" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
assert_contains "${lines[*]}" "container created: l"
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:create) service with dashes" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:create" service-with-dashes
|
||||
assert_contains "${lines[*]}" "container created: service-with-dashes"
|
||||
assert_contains "${lines[*]}" "dokku-$PLUGIN_COMMAND_PREFIX-service-with-dashes"
|
||||
assert_contains "${lines[*]}" "service_with_dashes"
|
||||
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" service-with-dashes
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:create) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:create"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:create) error when there is an invalid name specified" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:create" d.erp
|
||||
assert_failure
|
||||
}
|
||||
30
plugins/postgres/tests/service_destroy.bats
Executable file
30
plugins/postgres/tests/service_destroy.bats
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:destroy) success with --force" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
run dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
assert_contains "${lines[*]}" "container deleted: l"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:destroy) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:destroy"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:destroy) error when container does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:destroy" non_existing_container
|
||||
assert_contains "${lines[*]}" "service non_existing_container does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:destroy) error when container is linked to an app" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
dokku apps:create app
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" l app
|
||||
run dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
assert_contains "${lines[*]}" "Cannot delete linked service"
|
||||
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l app
|
||||
run dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
assert_contains "${lines[*]}" "container deleted: l"
|
||||
}
|
||||
39
plugins/postgres/tests/service_export.bats
Executable file
39
plugins/postgres/tests/service_export.bats
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:export) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:export"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:export) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:export" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:export) success with SSH_TTY" {
|
||||
if [[ -n "$GITHUB_WORKFLOW" ]]; then
|
||||
skip "No tty is available on Github Actions"
|
||||
fi
|
||||
export SSH_TTY=$(tty)
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:export" l
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_exit_status 0
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:export) success without SSH_TTY" {
|
||||
unset SSH_TTY
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:export" l
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_exit_status 0
|
||||
}
|
||||
66
plugins/postgres/tests/service_expose.bats
Executable file
66
plugins/postgres/tests/service_expose.bats
Executable file
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" ls
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ls
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:expose) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:expose"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:expose) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:expose" not_existing_service
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:expose) error when already exposed" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:expose" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:expose" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
assert_contains "${lines[*]}" "Service ls already exposed on port(s)"
|
||||
|
||||
run sudo rm "$PLUGIN_DATA_ROOT/ls/PORT"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:expose" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_contains "${lines[*]}" "Service ls has an untracked expose container, removing"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:expose) success when not providing custom ports" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:expose" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
[[ "${lines[*]}" =~ exposed\ on\ port\(s\)\ \[container\-\>host\]\:\ [[:digit:]]+ ]]
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:expose) success when providing custom ports" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:expose" ls 4242
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_contains "${lines[*]}" "exposed on port(s) [container->host]: 5432->4242"
|
||||
}
|
||||
41
plugins/postgres/tests/service_import.bats
Executable file
41
plugins/postgres/tests/service_import.bats
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
echo "data" | tee "/tmp/fake.dump"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
rm -f "/tmp/fake.dump"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:import) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:import"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:import) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:import" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:import) error when data is not provided" {
|
||||
if [[ -n "$GITHUB_WORKFLOW" ]]; then
|
||||
skip "No tty is available on Github Actions"
|
||||
fi
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:import" l
|
||||
assert_contains "${lines[*]}" "No data provided on stdin"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:import) success" {
|
||||
skip "The fake dump is hard to work with in tests"
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:import" l <"/tmp/fake.dump"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
75
plugins/postgres/tests/service_info.bats
Executable file
75
plugins/postgres/tests/service_info.bats
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:info) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:info) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:info) success" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l
|
||||
local password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||
assert_contains "${lines[*]}" "postgres://postgres:$password@dokku-postgres-l:5432/l"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:info) replaces underscores by dash in hostname" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" test_with_underscores
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" test_with_underscores
|
||||
local password="$(sudo cat "$PLUGIN_DATA_ROOT/test_with_underscores/PASSWORD")"
|
||||
assert_contains "${lines[*]}" "postgres://postgres:$password@dokku-postgres-test-with-underscores:5432/test_with_underscores"
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" test_with_underscores
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:info) success with flag" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --dsn
|
||||
local password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||
assert_output "postgres://postgres:$password@dokku-postgres-l:5432/l"
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --config-dir
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --data-dir
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --dsn
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --exposed-ports
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --id
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --internal-ip
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --links
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --service-root
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --status
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --version
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:info) error when invalid flag" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --invalid-flag
|
||||
assert_failure
|
||||
}
|
||||
142
plugins/postgres/tests/service_link.bats
Executable file
142
plugins/postgres/tests/service_link.bats
Executable file
@@ -0,0 +1,142 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" ls
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" ms
|
||||
dokku apps:create my-app
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ms
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ls
|
||||
dokku --force apps:destroy my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) error when the app argument is missing" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" ls
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_contains "${lines[*]}" "Please specify an app to run the command on"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) error when the app does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" ls not_existing_app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_contains "${lines[*]}" "App not_existing_app does not exist"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) error when the service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" not_existing_service my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) error when the service is already linked to app" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_contains "${lines[*]}" "Already linked as DATABASE_URL"
|
||||
assert_failure
|
||||
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) exports DATABASE_URL to app" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
url=$(dokku config:get my-app DATABASE_URL)
|
||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/ls/PASSWORD")"
|
||||
assert_contains "$url" "postgres://postgres:$password@dokku-postgres-ls:5432/ls"
|
||||
assert_success
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) generates an alternate config url when DATABASE_URL already in use" {
|
||||
dokku config:set my-app DATABASE_URL=postgres://user:pass@host:5432/db
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
run dokku config my-app
|
||||
assert_contains "${lines[*]}" "DOKKU_POSTGRES_AQUA_URL"
|
||||
assert_success
|
||||
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ms my-app
|
||||
run dokku config my-app
|
||||
assert_contains "${lines[*]}" "DOKKU_POSTGRES_BLACK_URL"
|
||||
assert_success
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ms my-app
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) links to app with docker-options" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
run dokku docker-options:report my-app
|
||||
assert_contains "${lines[*]}" "--link dokku.postgres.ls:dokku-postgres-ls"
|
||||
assert_success
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) uses apps POSTGRES_DATABASE_SCHEME variable" {
|
||||
dokku config:set my-app POSTGRES_DATABASE_SCHEME=postgres2
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
url=$(dokku config:get my-app DATABASE_URL)
|
||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/ls/PASSWORD")"
|
||||
assert_contains "$url" "postgres2://postgres:$password@dokku-postgres-ls:5432/ls"
|
||||
assert_success
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) adds a querystring" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --querystring "pool=5"
|
||||
url=$(dokku config:get my-app DATABASE_URL)
|
||||
assert_contains "$url" "?pool=5"
|
||||
assert_success
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) uses a specified config url when alias is specified" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --alias "ALIAS"
|
||||
url=$(dokku config:get my-app ALIAS_URL)
|
||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/ls/PASSWORD")"
|
||||
assert_contains "$url" "postgres://postgres:$password@dokku-postgres-ls:5432/ls"
|
||||
assert_success
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:link) respects --no-restart" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "Skipping restart of linked app" 0
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --no-restart
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "Skipping restart of linked app"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
22
plugins/postgres/tests/service_list.bats
Executable file
22
plugins/postgres/tests/service_list.bats
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:list) with no exposed ports, no linked apps" {
|
||||
run dokku --quiet "$PLUGIN_COMMAND_PREFIX:list"
|
||||
assert_output "l"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:list) when there are no services" {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
||||
assert_output "${lines[*]}" "There are no $PLUGIN_SERVICE services"
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
42
plugins/postgres/tests/service_logs.bats
Executable file
42
plugins/postgres/tests/service_logs.bats
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:logs) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:logs"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:logs) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:logs" not_existing_service
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:logs) success when not tailing" {
|
||||
skip "This may fail if there is no log output"
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:logs" l
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:logs) success when tailing" {
|
||||
skip "This will hang as it waits for log output"
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:logs" l -t
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
25
plugins/postgres/tests/service_pause.bats
Executable file
25
plugins/postgres/tests/service_pause.bats
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:pause) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:pause"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:pause) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:pause" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:pause) success" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:pause" l
|
||||
assert_success
|
||||
}
|
||||
62
plugins/postgres/tests/service_promote.bats
Executable file
62
plugins/postgres/tests/service_promote.bats
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
dokku apps:create my-app
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
dokku --force apps:destroy my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:promote) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:promote"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:promote) error when the app argument is missing" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:promote" l
|
||||
assert_contains "${lines[*]}" "Please specify an app to run the command on"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:promote) error when the app does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:promote" l not_existing_app
|
||||
assert_contains "${lines[*]}" "App not_existing_app does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:promote) error when the service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:promote" not_existing_service my-app
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:promote) error when the service is already promoted" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:promote" l my-app
|
||||
assert_contains "${lines[*]}" "already promoted as DATABASE_URL"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:promote) changes DATABASE_URL" {
|
||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||
dokku config:set my-app "DATABASE_URL=postgres://u:p@host:5432/db" "DOKKU_POSTGRES_BLUE_URL=postgres://postgres:$password@dokku-postgres-l:5432/l"
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my-app
|
||||
url=$(dokku config:get my-app DATABASE_URL)
|
||||
assert_equal "$url" "postgres://postgres:$password@dokku-postgres-l:5432/l"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:promote) creates new config url when needed" {
|
||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||
dokku config:set my-app "DATABASE_URL=postgres://u:p@host:5432/db" "DOKKU_POSTGRES_BLUE_URL=postgres://postgres:$password@dokku-postgres-l:5432/l"
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my-app
|
||||
run dokku config my-app
|
||||
assert_contains "${lines[*]}" "DOKKU_POSTGRES_"
|
||||
}
|
||||
@test "($PLUGIN_COMMAND_PREFIX:promote) uses POSTGRES_DATABASE_SCHEME variable" {
|
||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||
dokku config:set my-app "POSTGRES_DATABASE_SCHEME=postgres2" "DATABASE_URL=postgres://u:p@host:5432/db" "DOKKU_POSTGRES_BLUE_URL=postgres2://postgres:$password@dokku-postgres-l:5432/l"
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my-app
|
||||
url=$(dokku config:get my-app DATABASE_URL)
|
||||
assert_contains "$url" "postgres2://postgres:$password@dokku-postgres-l:5432/l"
|
||||
}
|
||||
25
plugins/postgres/tests/service_restart.bats
Executable file
25
plugins/postgres/tests/service_restart.bats
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:restart) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:restart"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:restart) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:restart" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:restart) success" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:restart" l
|
||||
assert_success
|
||||
}
|
||||
25
plugins/postgres/tests/service_start.bats
Executable file
25
plugins/postgres/tests/service_start.bats
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:start) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:start) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:start) success" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:start" l
|
||||
assert_success
|
||||
}
|
||||
25
plugins/postgres/tests/service_stop.bats
Executable file
25
plugins/postgres/tests/service_stop.bats
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:stop) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:stop) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:stop) success" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:stop" l
|
||||
assert_success
|
||||
}
|
||||
27
plugins/postgres/tests/service_unexpose.bats
Executable file
27
plugins/postgres/tests/service_unexpose.bats
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unexpose) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unexpose"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unexpose) error when service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unexpose" not_existing_service
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unexpose) success" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:expose" l
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unexpose" l
|
||||
[[ ! -f $PLUGIN_DATA_ROOT/PORT ]]
|
||||
assert_contains "${lines[*]}" "Service l unexposed"
|
||||
}
|
||||
77
plugins/postgres/tests/service_unlink.bats
Executable file
77
plugins/postgres/tests/service_unlink.bats
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bats
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
dokku apps:create my-app
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:create" ls
|
||||
}
|
||||
|
||||
teardown() {
|
||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ls
|
||||
dokku --force apps:destroy my-app
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when there are no arguments" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink"
|
||||
assert_contains "${lines[*]}" "Please specify a valid name for the service"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when the app argument is missing" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls
|
||||
assert_contains "${lines[*]}" "Please specify an app to run the command on"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when the app does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls not_existing_app
|
||||
assert_contains "${lines[*]}" "App not_existing_app does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when the service does not exist" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" not_existing_service my-app
|
||||
assert_contains "${lines[*]}" "service not_existing_service does not exist"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unlink) error when service not linked to app" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
assert_contains "${lines[*]}" "Not linked to app my-app"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unlink) removes link from docker-options" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app >&2
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
|
||||
check_value="Docker options build: Docker options deploy: --restart=on-failure:10 Docker options run:"
|
||||
options=$(dokku --quiet docker-options:report my-app | xargs)
|
||||
assert_equal "$options" "$check_value"
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unlink) unsets config url from app" {
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app >&2
|
||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
config=$(dokku config:get my-app DATABASE_URL || true)
|
||||
assert_equal "$config" ""
|
||||
}
|
||||
|
||||
@test "($PLUGIN_COMMAND_PREFIX:unlink) respects --no-restart" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "Skipping restart of linked app" 0
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app --no-restart
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "Skipping restart of linked app"
|
||||
assert_success
|
||||
}
|
||||
33
plugins/postgres/tests/setup.sh
Normal file
33
plugins/postgres/tests/setup.sh
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
[[ $TRACE ]] && set -x
|
||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 762E3157
|
||||
echo "deb http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
|
||||
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
|
||||
|
||||
sudo mkdir -p /etc/nginx
|
||||
sudo curl https://raw.githubusercontent.com/dokku/dokku/master/tests/dhparam.pem -o /etc/nginx/dhparam.pem
|
||||
|
||||
echo "dokku dokku/skip_key_file boolean true" | sudo debconf-set-selections
|
||||
wget https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh
|
||||
if [[ "$DOKKU_VERSION" == "master" ]]; then
|
||||
sudo bash bootstrap.sh
|
||||
else
|
||||
sudo DOKKU_TAG="$DOKKU_VERSION" bash bootstrap.sh
|
||||
fi
|
||||
echo "Dokku version $DOKKU_VERSION"
|
||||
|
||||
export DOKKU_LIB_ROOT="/var/lib/dokku"
|
||||
export DOKKU_PLUGINS_ROOT="$DOKKU_LIB_ROOT/plugins/available"
|
||||
pushd "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")" >/dev/null
|
||||
source "config"
|
||||
popd >/dev/null
|
||||
sudo rm -rf "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX"
|
||||
sudo mkdir -p "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX" "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/subcommands" "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/scripts" "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/templates"
|
||||
sudo find ./ -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX" \;
|
||||
[[ -d "./scripts" ]] && sudo find ./scripts -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/scripts" \;
|
||||
[[ -d "./subcommands" ]] && sudo find ./subcommands -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/subcommands" \;
|
||||
[[ -d "./templates" ]] && sudo find ./templates -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/templates" \;
|
||||
sudo mkdir -p "$PLUGIN_CONFIG_ROOT" "$PLUGIN_DATA_ROOT"
|
||||
sudo dokku plugin:enable "$PLUGIN_COMMAND_PREFIX"
|
||||
sudo dokku plugin:install
|
||||
8
plugins/postgres/tests/shellcheck-exclude
Normal file
8
plugins/postgres/tests/shellcheck-exclude
Normal file
@@ -0,0 +1,8 @@
|
||||
# SC1090 - Can't follow non-constant source. Use a directive to specify location - https://github.com/koalaman/shellcheck/wiki/SC1090
|
||||
# SC1091 - Not following - <https://github.com/koalaman/shellcheck/wiki/SC1091>
|
||||
# SC2034 - Variable appears unused. Verify it or export it - https://github.com/koalaman/shellcheck/wiki/SC2034
|
||||
# SC2155 - Declare and assign separately to avoid masking return values - https://github.com/koalaman/shellcheck/wiki/SC2155
|
||||
# SC2206 - Quote to prevent word splitting/globbing, or split robustly with mapfile or read -a - https://github.com/koalaman/shellcheck/wiki/SC2206
|
||||
# SC2207 - Prefer mapfile or read -a to split command output (or quote to avoid splitting) - https://github.com/koalaman/shellcheck/wiki/SC2207
|
||||
# SC2220 - Invalid flags are not handled. Add a *) case - https://github.com/koalaman/shellcheck/wiki/SC2220
|
||||
# SC2230 - which is non-standard. Use builtin 'command -v' instead - https://github.com/koalaman/shellcheck/wiki/SC2230
|
||||
205
plugins/postgres/tests/shellcheck-to-junit
Executable file
205
plugins/postgres/tests/shellcheck-to-junit
Executable file
@@ -0,0 +1,205 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import print_function
|
||||
import argparse
|
||||
import collections
|
||||
import datetime
|
||||
import re
|
||||
import socket
|
||||
import sys
|
||||
|
||||
from xml.etree import ElementTree
|
||||
|
||||
|
||||
def CDATA(text=None):
|
||||
element = ElementTree.Element('![CDATA[')
|
||||
element.text = text
|
||||
return element
|
||||
|
||||
|
||||
def _serialize_xml(write, elem, qnames, namespaces,short_empty_elements, **kwargs):
|
||||
|
||||
if elem.tag == '![CDATA[':
|
||||
write("\n<{}{}]]>\n".format(elem.tag, elem.text))
|
||||
if elem.tail:
|
||||
write(ElementTree._escape_cdata(elem.tail))
|
||||
else:
|
||||
return ElementTree._original_serialize_xml(write, elem, qnames, namespaces,short_empty_elements, **kwargs)
|
||||
|
||||
|
||||
ElementTree._original_serialize_xml = ElementTree._serialize_xml
|
||||
ElementTree._serialize_xml = ElementTree._serialize['xml'] = _serialize_xml
|
||||
|
||||
|
||||
def read_in():
|
||||
lines = sys.stdin.readlines()
|
||||
for i in range(len(lines)):
|
||||
lines[i] = lines[i].rstrip()
|
||||
return lines
|
||||
|
||||
|
||||
def process_lines(lines):
|
||||
files = {}
|
||||
current_file = None
|
||||
previous_line = None
|
||||
line_no = None
|
||||
new_issues = []
|
||||
code = None
|
||||
|
||||
RE_VIOLATION = re.compile(r"\^-- (SC[\w]+): (.*)")
|
||||
RE_VIOLATION_NEW = re.compile(r"\^[-]+\^ (SC[\w]+): (.*)")
|
||||
|
||||
for line in lines:
|
||||
# start a new block
|
||||
if line == '':
|
||||
if current_file is not None:
|
||||
file_data = files.get(current_file, {})
|
||||
files[current_file] = file_data
|
||||
|
||||
issue_data = file_data.get(line_no, {})
|
||||
issue_data['code'] = code
|
||||
files[current_file][line_no] = issue_data
|
||||
|
||||
issues = issue_data.get('issues', [])
|
||||
issues.extend(new_issues)
|
||||
issue_data['issues'] = issues
|
||||
|
||||
files[current_file][line_no] = issue_data
|
||||
|
||||
code = None
|
||||
current_file = None
|
||||
line_no = None
|
||||
elif line.startswith('In ./') and not previous_line:
|
||||
current_file = line.split(' ')[1].replace('./', '')
|
||||
line_no = line.split(' ')[3]
|
||||
new_issues = []
|
||||
code = None
|
||||
elif code is None and len(new_issues) == 0:
|
||||
code = line
|
||||
else:
|
||||
match = RE_VIOLATION.match(line.strip())
|
||||
if not match:
|
||||
match = RE_VIOLATION_NEW.match(line.strip())
|
||||
|
||||
if not match:
|
||||
if 'https://www.shellcheck.net/wiki/SC' in line:
|
||||
continue
|
||||
if 'For more information:' == line:
|
||||
continue
|
||||
print('Error: Issue parsing line "{0}"'.format(line.strip()))
|
||||
else:
|
||||
new_issues.append({
|
||||
'shellcheck_id': match.group(1),
|
||||
'message': match.group(2),
|
||||
'original_message': line
|
||||
})
|
||||
|
||||
previous_line = line
|
||||
|
||||
return files
|
||||
|
||||
|
||||
def output_junit(files, args):
|
||||
timestamp = datetime.datetime.now().replace(microsecond=0).isoformat()
|
||||
failures = 0
|
||||
for file, data in files.items():
|
||||
for line, issue_data in data.items():
|
||||
code = issue_data.get('code')
|
||||
for issue in issue_data.get('issues', []):
|
||||
failures += 1
|
||||
|
||||
tests = 0
|
||||
if args.files:
|
||||
with open(args.files, 'r') as f:
|
||||
tests = len(f.readlines())
|
||||
|
||||
root = ElementTree.Element("testsuite",
|
||||
name="shellcheck",
|
||||
tests="{0}".format(tests),
|
||||
failures="{0}".format(failures),
|
||||
errors="0",
|
||||
skipped="0",
|
||||
timestamp=timestamp,
|
||||
time="0",
|
||||
hostname=socket.gethostname())
|
||||
|
||||
properties = ElementTree.SubElement(root, "properties")
|
||||
if args.exclude:
|
||||
ElementTree.SubElement(properties,
|
||||
"property",
|
||||
name="exclude",
|
||||
value=args.exclude)
|
||||
|
||||
if args.files:
|
||||
with open(args.files, 'r') as f:
|
||||
lines = f.readlines()
|
||||
for i in range(len(lines)):
|
||||
file = lines[i].rstrip().replace('./', '')
|
||||
data = files.get(file, None)
|
||||
if data:
|
||||
for line, issue_data in data.items():
|
||||
code = issue_data.get('code')
|
||||
for issue in issue_data.get('issues', []):
|
||||
testcase = ElementTree.SubElement(root,
|
||||
"testcase",
|
||||
classname=file,
|
||||
name=file,
|
||||
time="0")
|
||||
shellcheck_id = issue.get('shellcheck_id')
|
||||
message = 'line {0}: {1}'.format(
|
||||
line, issue.get('message'))
|
||||
original_message = issue.get('original_message')
|
||||
e = ElementTree.Element("failure",
|
||||
type=shellcheck_id,
|
||||
message=message)
|
||||
cdata = CDATA("\n".join([code, original_message]))
|
||||
e.append(cdata)
|
||||
testcase.append(e)
|
||||
ElementTree.SubElement(root,
|
||||
"testcase",
|
||||
classname=file,
|
||||
name=file,
|
||||
time="0")
|
||||
|
||||
ElementTree.SubElement(root, "system-out")
|
||||
ElementTree.SubElement(root, "system-err")
|
||||
|
||||
content = ElementTree.tostring(root, encoding='UTF-8', method='xml')
|
||||
if args.output:
|
||||
with open(args.output, 'w') as f:
|
||||
try:
|
||||
f.write(content)
|
||||
except TypeError:
|
||||
f.write(content.decode("utf-8"))
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Process shellcheck output to junit.')
|
||||
parser.add_argument('--output',
|
||||
dest='output',
|
||||
action='store',
|
||||
default=None,
|
||||
help='file to write shellcheck output')
|
||||
parser.add_argument('--files',
|
||||
dest='files',
|
||||
action='store',
|
||||
default=None,
|
||||
help='a file containing a list of all files processed by shellcheck')
|
||||
parser.add_argument('--exclude',
|
||||
dest='exclude',
|
||||
action='store',
|
||||
default=None,
|
||||
help='a comma-separated list of rules being excluded by shellcheck')
|
||||
args = parser.parse_args()
|
||||
|
||||
lines = read_in()
|
||||
files = process_lines(lines)
|
||||
files = collections.OrderedDict(sorted(files.items()))
|
||||
output_junit(files, args)
|
||||
for line in lines:
|
||||
print(line)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
86
plugins/postgres/tests/test_helper.bash
Executable file
86
plugins/postgres/tests/test_helper.bash
Executable file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
export DOKKU_LIB_ROOT="/var/lib/dokku"
|
||||
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
|
||||
|
||||
flunk() {
|
||||
{
|
||||
if [ "$#" -eq 0 ]; then
|
||||
cat -
|
||||
else
|
||||
echo "$*"
|
||||
fi
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
assert_equal() {
|
||||
if [ "$1" != "$2" ]; then
|
||||
{
|
||||
echo "expected: $1"
|
||||
echo "actual: $2"
|
||||
} | flunk
|
||||
fi
|
||||
}
|
||||
|
||||
# ShellCheck doesn't know about $status from Bats
|
||||
# shellcheck disable=SC2154
|
||||
assert_exit_status() {
|
||||
assert_equal "$1" "$status"
|
||||
}
|
||||
|
||||
# ShellCheck doesn't know about $status from Bats
|
||||
# shellcheck disable=SC2154
|
||||
# shellcheck disable=SC2120
|
||||
assert_success() {
|
||||
if [ "$status" -ne 0 ]; then
|
||||
flunk "command failed with exit status $status"
|
||||
elif [ "$#" -gt 0 ]; then
|
||||
assert_output "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
assert_failure() {
|
||||
if [[ "$status" -eq 0 ]]; then
|
||||
flunk "expected failed exit status"
|
||||
elif [[ "$#" -gt 0 ]]; then
|
||||
assert_output "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
assert_exists() {
|
||||
if [ ! -f "$1" ]; then
|
||||
flunk "expected file to exist: $1"
|
||||
fi
|
||||
}
|
||||
|
||||
assert_contains() {
|
||||
if [[ "$1" != *"$2"* ]]; then
|
||||
flunk "expected $2 to be in: $1"
|
||||
fi
|
||||
}
|
||||
|
||||
# ShellCheck doesn't know about $output from Bats
|
||||
# shellcheck disable=SC2154
|
||||
assert_output() {
|
||||
local expected
|
||||
if [ $# -eq 0 ]; then
|
||||
expected="$(cat -)"
|
||||
else
|
||||
expected="$1"
|
||||
fi
|
||||
assert_equal "$expected" "$output"
|
||||
}
|
||||
|
||||
# ShellCheck doesn't know about $output from Bats
|
||||
# shellcheck disable=SC2154
|
||||
assert_output_contains() {
|
||||
local input="$output"
|
||||
local expected="$1"
|
||||
local count="${2:-1}"
|
||||
local found=0
|
||||
until [ "${input/$expected/}" = "$input" ]; do
|
||||
input="${input/$expected/}"
|
||||
found=$((found + 1))
|
||||
done
|
||||
assert_equal "$count" "$found"
|
||||
}
|
||||
Reference in New Issue
Block a user