Merge pull request #6706 from dokku/6690-git-unlock
Remove git:unlock command
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
## Removals
|
## Removals
|
||||||
|
|
||||||
- The `disable-chown` property of the `scheduler-docker-local` plugin has been removed. Mounted paths will no longer have file permissions changed during the pre-deploy phase. Files baked into the container image for herokuish builds will always be owned by the correct user.
|
- The `disable-chown` property of the `scheduler-docker-local` plugin has been removed. Mounted paths will no longer have file permissions changed during the pre-deploy phase. Files baked into the container image for herokuish builds will always be owned by the correct user.
|
||||||
|
- The `git:unlock` command has been removed. It was previously used to "unlock" a temporary directory that already existed. The directory the `git:unlock` command used to cleanup is now properly removed on exit of the `git:from-image` command.
|
||||||
|
|
||||||
## Changes
|
## Changes
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ git:public-key # Outputs the dokku public dep
|
|||||||
git:report [<app>] [<flag>] # Displays a git report for one or more apps
|
git:report [<app>] [<flag>] # Displays a git report for one or more apps
|
||||||
git:set <app> <key> (<value>) # Set or clear a git property for an app
|
git:set <app> <key> (<value>) # Set or clear a git property for an app
|
||||||
git:status <app> # Show the working tree status for an app
|
git:status <app> # Show the working tree status for an app
|
||||||
git:unlock <app> [--force] # Removes previous git clone folder for new deployment
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Git-based deployment has been the traditional method of deploying applications in Dokku. As of v0.12.0, Dokku introduces a few ways to customize the experience of deploying via `git push`. A Git-based deployment currently supports building applications via:
|
Git-based deployment has been the traditional method of deploying applications in Dokku. As of v0.12.0, Dokku introduces a few ways to customize the experience of deploying via `git push`. A Git-based deployment currently supports building applications via:
|
||||||
|
|||||||
@@ -997,13 +997,14 @@ suppress_output() {
|
|||||||
declare desc="suppress all output from a given command unless there is an error"
|
declare desc="suppress all output from a given command unless there is an error"
|
||||||
local TMP_COMMAND_OUTPUT
|
local TMP_COMMAND_OUTPUT
|
||||||
TMP_COMMAND_OUTPUT=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")
|
TMP_COMMAND_OUTPUT=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")
|
||||||
trap "rm -rf '$TMP_COMMAND_OUTPUT' >/dev/null" RETURN
|
|
||||||
|
|
||||||
"$@" >"$TMP_COMMAND_OUTPUT" 2>&1 || {
|
"$@" >"$TMP_COMMAND_OUTPUT" 2>&1 || {
|
||||||
local exit_code="$?"
|
local exit_code="$?"
|
||||||
cat "$TMP_COMMAND_OUTPUT"
|
cat "$TMP_COMMAND_OUTPUT"
|
||||||
|
rm -rf "$TMP_COMMAND_OUTPUT" >/dev/null
|
||||||
return "$exit_code"
|
return "$exit_code"
|
||||||
}
|
}
|
||||||
|
rm -rf "$TMP_COMMAND_OUTPUT" >/dev/null
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ fn-help-content() {
|
|||||||
git:public-key, Outputs the dokku public deploy key
|
git:public-key, Outputs the dokku public deploy key
|
||||||
git:report [<app>] [<flag>], Displays a git report for one or more apps
|
git:report [<app>] [<flag>], Displays a git report for one or more apps
|
||||||
git:set <app> <property> (<value>), Set or clear a git property for an app
|
git:set <app> <property> (<value>), Set or clear a git property for an app
|
||||||
git:unlock <app> [--force], Removes previous git clone folder for new deployment
|
|
||||||
git:status <app>, show the working tree status for an app
|
git:status <app>, show the working tree status for an app
|
||||||
help_content
|
help_content
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -196,20 +196,6 @@ cmd-git-sync() {
|
|||||||
|
|
||||||
verify_app_name "$APP"
|
verify_app_name "$APP"
|
||||||
|
|
||||||
local APP_CLONE_ROOT="$DOKKU_LIB_ROOT/data/git/$APP"
|
|
||||||
|
|
||||||
if [[ -d "$APP_CLONE_ROOT" ]]; then
|
|
||||||
if has_tty eq 0; then
|
|
||||||
cmd-git-unlock "$APP"
|
|
||||||
if [[ -d "$APP_CLONE_ROOT" ]]; then
|
|
||||||
dokku_log_fail "Failed to delete existing clone folder"
|
|
||||||
exit 15
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
dokku_log_fail "Run 'git:unlock' to remove the existing temporary clone"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "$GIT_REMOTE" ]]; then
|
if [[ -z "$GIT_REMOTE" ]]; then
|
||||||
dokku_log_fail "Missing GIT_REMOTE parameter"
|
dokku_log_fail "Missing GIT_REMOTE parameter"
|
||||||
return
|
return
|
||||||
@@ -234,41 +220,6 @@ cmd-git-sync() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd-git-unlock() {
|
|
||||||
declare desc="removes the clone folder for an app"
|
|
||||||
local cmd="git:unlock"
|
|
||||||
[[ "$1" == "$cmd" ]] && shift 1
|
|
||||||
declare APP="$1" FLAG
|
|
||||||
|
|
||||||
for arg in "$@"; do
|
|
||||||
if [[ "$arg" == "--force" ]]; then
|
|
||||||
FLAG="--force"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
ARGS+=("$arg")
|
|
||||||
done
|
|
||||||
|
|
||||||
local APP_CLONE_ROOT="$DOKKU_LIB_ROOT/data/git/$APP"
|
|
||||||
|
|
||||||
if [[ -d "$APP_CLONE_ROOT" ]]; then
|
|
||||||
if [[ "$FLAG" == "--force" ]]; then
|
|
||||||
fn-git-remove-clone-folder "$APP_CLONE_ROOT"
|
|
||||||
else
|
|
||||||
read -rp "Are you sure that want to delete clone folder (y/n)?" choice
|
|
||||||
case "$choice" in
|
|
||||||
y | Y)
|
|
||||||
fn-git-remove-clone-folder "$APP_CLONE_ROOT"
|
|
||||||
;;
|
|
||||||
n | N) echo "no" ;;
|
|
||||||
*) echo "please answer with yes or no" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
dokku_log_info1 "No clone folder exists app already unlocked"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd-git-public-key() {
|
cmd-git-public-key() {
|
||||||
declare desc="outputs the dokku public deploy key"
|
declare desc="outputs the dokku public deploy key"
|
||||||
local cmd="git:public-key"
|
local cmd="git:public-key"
|
||||||
@@ -399,7 +350,6 @@ EOF
|
|||||||
fn-git-clone() {
|
fn-git-clone() {
|
||||||
declare desc="creates an app from remote git repo"
|
declare desc="creates an app from remote git repo"
|
||||||
declare APP="$1" GIT_REMOTE="$2" GIT_REF="$3"
|
declare APP="$1" GIT_REMOTE="$2" GIT_REF="$3"
|
||||||
local APP_CLONE_ROOT="$DOKKU_LIB_ROOT/data/git/$APP"
|
|
||||||
local APP_ROOT="$DOKKU_ROOT/$APP"
|
local APP_ROOT="$DOKKU_ROOT/$APP"
|
||||||
[[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on"
|
[[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on"
|
||||||
|
|
||||||
@@ -411,20 +361,24 @@ fn-git-clone() {
|
|||||||
GIT_REF="$(fn-git-deploy-branch "$APP")"
|
GIT_REF="$(fn-git-deploy-branch "$APP")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
trap "rm -rf '$APP_CLONE_ROOT' > /dev/null" RETURN INT TERM EXIT
|
local TMP_IS_REF_DIR=$(mktemp -d "/tmp/dokku-ref-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")
|
||||||
|
trap "rm -rf '$TMP_IS_REF_DIR' >/dev/null" RETURN INT TERM EXIT
|
||||||
|
|
||||||
is_ref=true
|
is_ref=true
|
||||||
if GIT_TERMINAL_PROMPT=0 git clone --depth 1 -n --branch "$GIT_REF" "$GIT_REMOTE" "$APP_CLONE_ROOT" 2>/dev/null; then
|
if GIT_TERMINAL_PROMPT=0 git clone --depth 1 -n --branch "$GIT_REF" "$GIT_REMOTE" "$TMP_IS_REF_DIR" 2>/dev/null; then
|
||||||
is_ref=false
|
is_ref=false
|
||||||
fi
|
fi
|
||||||
rm -rf "$APP_CLONE_ROOT"
|
rm -rf "$TMP_IS_REF_DIR"
|
||||||
|
|
||||||
|
local TMP_CLONE_DIR=$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")
|
||||||
|
trap "rm -rf '$TMP_CLONE_DIR' >/dev/null" RETURN INT TERM EXIT
|
||||||
|
|
||||||
if [[ "$is_ref" == "true" ]]; then
|
if [[ "$is_ref" == "true" ]]; then
|
||||||
GIT_TERMINAL_PROMPT=0 suppress_output git clone -n "$GIT_REMOTE" "$APP_CLONE_ROOT"
|
GIT_TERMINAL_PROMPT=0 suppress_output git clone -n "$GIT_REMOTE" "$TMP_CLONE_DIR"
|
||||||
fn-git-cmd "$APP_CLONE_ROOT" checkout -qq "$GIT_REF"
|
fn-git-cmd "$TMP_CLONE_DIR" checkout -qq "$GIT_REF"
|
||||||
else
|
else
|
||||||
GIT_TERMINAL_PROMPT=0 suppress_output git clone -n --branch "$GIT_REF" "$GIT_REMOTE" "$APP_CLONE_ROOT"
|
GIT_TERMINAL_PROMPT=0 suppress_output git clone -n --branch "$GIT_REF" "$GIT_REMOTE" "$TMP_CLONE_DIR"
|
||||||
if fn-git-cmd "$APP_CLONE_ROOT" show-ref --verify "refs/heads/$GIT_REF" &>/dev/null; then
|
if fn-git-cmd "$TMP_CLONE_DIR" show-ref --verify "refs/heads/$GIT_REF" &>/dev/null; then
|
||||||
dokku_log_verbose "Detected branch, setting deploy-branch to $GIT_REF"
|
dokku_log_verbose "Detected branch, setting deploy-branch to $GIT_REF"
|
||||||
fn-plugin-property-write "git" "$APP" "deploy-branch" "$GIT_REF"
|
fn-plugin-property-write "git" "$APP" "deploy-branch" "$GIT_REF"
|
||||||
fi
|
fi
|
||||||
@@ -433,13 +387,13 @@ fn-git-clone() {
|
|||||||
DOKKU_DEPLOY_BRANCH="$(fn-git-deploy-branch "$APP")"
|
DOKKU_DEPLOY_BRANCH="$(fn-git-deploy-branch "$APP")"
|
||||||
if [[ "$GIT_REF" != "$DOKKU_DEPLOY_BRANCH" ]]; then
|
if [[ "$GIT_REF" != "$DOKKU_DEPLOY_BRANCH" ]]; then
|
||||||
if [[ "$is_ref" == "true" ]]; then
|
if [[ "$is_ref" == "true" ]]; then
|
||||||
fn-git-cmd "$APP_CLONE_ROOT" branch -qq -D "$DOKKU_DEPLOY_BRANCH" 2>/dev/null || true
|
fn-git-cmd "$TMP_CLONE_DIR" branch -qq -D "$DOKKU_DEPLOY_BRANCH" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fn-git-cmd "$APP_CLONE_ROOT" checkout -qq -b "$DOKKU_DEPLOY_BRANCH"
|
fn-git-cmd "$TMP_CLONE_DIR" checkout -qq -b "$DOKKU_DEPLOY_BRANCH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rsync -a "$APP_CLONE_ROOT/.git/" "$APP_ROOT"
|
rsync -a "$TMP_CLONE_DIR/.git/" "$APP_ROOT"
|
||||||
fn-git-create-hook "$APP"
|
fn-git-create-hook "$APP"
|
||||||
fn-git-cmd "$APP_ROOT" config --add core.bare true
|
fn-git-cmd "$APP_ROOT" config --add core.bare true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,27 +4,286 @@ load test_helper
|
|||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
global_setup
|
global_setup
|
||||||
|
create_app
|
||||||
touch /home/dokku/.ssh/known_hosts
|
touch /home/dokku/.ssh/known_hosts
|
||||||
chown dokku:dokku /home/dokku/.ssh/known_hosts
|
chown dokku:dokku /home/dokku/.ssh/known_hosts
|
||||||
mkdir -p "$DOKKU_LIB_ROOT/data/git/$TEST_APP"
|
|
||||||
chown dokku:dokku "$DOKKU_LIB_ROOT/data/git/$TEST_APP"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown() {
|
teardown() {
|
||||||
|
docker image rm linuxserver/foldingathome:7.6.21 || true
|
||||||
|
docker image rm dokku/node-js-getting-started:latest || true
|
||||||
|
docker image rm dokku-test/$TEST_APP:latest || true
|
||||||
|
docker image rm dokku-test/$TEST_APP:v2 || true
|
||||||
|
docker image rm gliderlabs/logspout:v3.2.13 || true
|
||||||
|
rm -f /tmp/image.tar /tmp/image-2.tar
|
||||||
rm -f /home/dokku/.ssh/id_rsa.pub || true
|
rm -f /home/dokku/.ssh/id_rsa.pub || true
|
||||||
|
destroy_app
|
||||||
global_teardown
|
global_teardown
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "(git) git:unlock [success]" {
|
@test "(git) git:load-image [normal]" {
|
||||||
run /bin/bash -c "dokku git:unlock $TEST_APP --force"
|
run /bin/bash -c "docker image pull linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image save -o /tmp/image.tar linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image rm linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP linuxserver/foldingathome:7.6.21"
|
||||||
echo "output: $output"
|
echo "output: $output"
|
||||||
echo "status: $status"
|
echo "status: $status"
|
||||||
assert_success
|
assert_success
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "(git) git:unlock [missing arg]" {
|
@test "(git) git:load-image [normal-git-init]" {
|
||||||
run /bin/bash -c "dokku git:unlock"
|
run rm -rf "/home/dokku/$TEST_APP"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run mkdir "/home/dokku/$TEST_APP"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run chown -R dokku:dokku "/home/dokku/$TEST_APP"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image pull linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image save -o /tmp/image.tar linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image rm linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "(git) git:load-image [normal-cnb]" {
|
||||||
|
run /bin/bash -c "docker image pull dokku/node-js-getting-started:latest"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image save -o /tmp/image.tar dokku/node-js-getting-started:latest"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image rm dokku/node-js-getting-started:latest"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP dokku/node-js-getting-started:latest"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "(git) git:load-image [failing deploy]" {
|
||||||
|
local CUSTOM_TMP=$(mktemp -d "/tmp/${DOKKU_DOMAIN}.XXXXX")
|
||||||
|
trap 'popd &>/dev/null || true; rm -rf "$CUSTOM_TMP"' INT TERM
|
||||||
|
rmdir "$CUSTOM_TMP" && cp -r "${BATS_TEST_DIRNAME}/../../tests/apps/python" "$CUSTOM_TMP"
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image build -t dokku-test/$TEST_APP:latest -f $CUSTOM_TMP/alt.Dockerfile $CUSTOM_TMP"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image build -t dokku-test/$TEST_APP:v2 --build-arg BUILD_ARG=value -f $CUSTOM_TMP/alt.Dockerfile $CUSTOM_TMP"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image save -o /tmp/image.tar dokku-test/$TEST_APP:latest"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image save -o /tmp/image-2.tar dokku-test/$TEST_APP:v2"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image rm dokku-test/$TEST_APP:latest dokku-test/$TEST_APP:v2"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku config:set --no-restart $TEST_APP FAIL_ON_STARTUP=true"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP dokku-test/$TEST_APP:latest"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_failure
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku config:get $TEST_APP FAIL_ON_STARTUP"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output "true"
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku git:status $TEST_APP"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_failure
|
||||||
|
assert_output "fatal: this operation must be run in a work tree"
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku config:set --no-restart $TEST_APP FAIL_ON_STARTUP=false"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP dokku-test/$TEST_APP:latest"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku config:set --no-restart $TEST_APP FAIL_ON_STARTUP=true"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image-2.tar | dokku git:load-image $TEST_APP dokku-test/$TEST_APP:v2"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_failure
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku config:set --no-restart $TEST_APP FAIL_ON_STARTUP=false"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image-2.tar | dokku git:load-image $TEST_APP dokku-test/$TEST_APP:v2"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output_contains "No changes detected, skipping git commit" 0
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "(git) git:load-image [onbuild]" {
|
||||||
|
local TMP=$(mktemp -d "/tmp/${DOKKU_DOMAIN}.XXXXX")
|
||||||
|
trap 'popd &>/dev/null || true; rm -rf "$TMP"' INT TERM
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku storage:mount $TEST_APP /var/run/docker.sock:/var/run/docker.sock"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image pull gliderlabs/logspout:v3.2.13"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image save -o /tmp/image.tar gliderlabs/logspout:v3.2.13"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image rm gliderlabs/logspout:v3.2.13"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP gliderlabs/logspout:v3.2.13"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_failure
|
||||||
|
|
||||||
|
cat <<EOF >"$TMP/build.sh"
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
apk add --update go build-base git mercurial ca-certificates
|
||||||
|
cd /src
|
||||||
|
go build -ldflags "-X main.Version=\$1" -o /bin/logspout
|
||||||
|
apk del go git mercurial build-base
|
||||||
|
rm -rf /root/go /var/cache/apk/*
|
||||||
|
|
||||||
|
# backwards compatibility
|
||||||
|
ln -fs /tmp/docker.sock /var/run/docker.sock
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >"$TMP/modules.go"
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "github.com/gliderlabs/logspout/adapters/multiline"
|
||||||
|
_ "github.com/gliderlabs/logspout/adapters/raw"
|
||||||
|
_ "github.com/gliderlabs/logspout/adapters/syslog"
|
||||||
|
_ "github.com/gliderlabs/logspout/healthcheck"
|
||||||
|
_ "github.com/gliderlabs/logspout/httpstream"
|
||||||
|
_ "github.com/gliderlabs/logspout/routesapi"
|
||||||
|
_ "github.com/gliderlabs/logspout/transports/tcp"
|
||||||
|
_ "github.com/gliderlabs/logspout/transports/tls"
|
||||||
|
_ "github.com/gliderlabs/logspout/transports/udp"
|
||||||
|
)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
run sudo chown -R dokku:dokku "$TMP"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image --build-dir $TMP $TEST_APP gliderlabs/logspout:v3.2.13"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP gliderlabs/logspout:v3.2.13"
|
||||||
echo "output: $output"
|
echo "output: $output"
|
||||||
echo "status: $status"
|
echo "status: $status"
|
||||||
assert_failure
|
assert_failure
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "(git) git:load-image labels correctly" {
|
||||||
|
run /bin/bash -c "docker image pull linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image save -o /tmp/image.tar linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image rm linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP linuxserver/foldingathome:7.6.21"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "docker image inspect dokku/$TEST_APP:latest --format '{{ index .Config.Labels \"com.dokku.docker-image-labeler/alternate-tags\" }}'"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output_contains "linuxserver/foldingathome:7.6.21"
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,288 +2,50 @@
|
|||||||
|
|
||||||
load test_helper
|
load test_helper
|
||||||
|
|
||||||
|
TEST_PLUGIN_APP=smoke-test-app
|
||||||
|
TEST_PLUGIN_GIT_REPO=https://github.com/dokku/${TEST_PLUGIN_APP}.git
|
||||||
|
TEST_PLUGIN_LOCAL_REPO="$(mktemp -d)/$TEST_PLUGIN_APP"
|
||||||
|
|
||||||
|
clone_test_app() {
|
||||||
|
git clone "$TEST_PLUGIN_GIT_REPO" "$TEST_PLUGIN_LOCAL_REPO"
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_test_app() {
|
||||||
|
rm -rf $TEST_PLUGIN_LOCAL_REPO
|
||||||
|
}
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
global_setup
|
global_setup
|
||||||
create_app
|
create_app
|
||||||
touch /home/dokku/.ssh/known_hosts
|
clone_test_app
|
||||||
chown dokku:dokku /home/dokku/.ssh/known_hosts
|
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown() {
|
teardown() {
|
||||||
docker image rm linuxserver/foldingathome:7.6.21 || true
|
remove_test_app || true
|
||||||
docker image rm dokku/node-js-getting-started:latest || true
|
|
||||||
docker image rm dokku-test/$TEST_APP:latest || true
|
|
||||||
docker image rm dokku-test/$TEST_APP:v2 || true
|
|
||||||
docker image rm gliderlabs/logspout:v3.2.13 || true
|
|
||||||
rm -f /tmp/image.tar /tmp/image-2.tar
|
|
||||||
rm -f /home/dokku/.ssh/id_rsa.pub || true
|
|
||||||
destroy_app
|
destroy_app
|
||||||
global_teardown
|
global_teardown
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "(git) git:load-image [normal]" {
|
@test "(git) push tags and branches" {
|
||||||
run /bin/bash -c "docker image pull linuxserver/foldingathome:7.6.21"
|
# https://github.com/dokku/dokku/issues/5188
|
||||||
|
local GIT_REMOTE=${GIT_REMOTE:="dokku@${DOKKU_DOMAIN}:$TEST_APP"}
|
||||||
|
run git -C "$TEST_PLUGIN_LOCAL_REPO" remote add target "$GIT_REMOTE"
|
||||||
echo "output: $output"
|
echo "output: $output"
|
||||||
echo "status: $status"
|
echo "status: $status"
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run /bin/bash -c "docker image save -o /tmp/image.tar linuxserver/foldingathome:7.6.21"
|
run git -C "$TEST_PLUGIN_LOCAL_REPO" push target 1.0.0:master
|
||||||
echo "output: $output"
|
echo "output: $output"
|
||||||
echo "status: $status"
|
echo "status: $status"
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run /bin/bash -c "docker image rm linuxserver/foldingathome:7.6.21"
|
run git -C "$TEST_PLUGIN_LOCAL_REPO" push target 2.0.0:master -f
|
||||||
echo "output: $output"
|
echo "output: $output"
|
||||||
echo "status: $status"
|
echo "status: $status"
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP linuxserver/foldingathome:7.6.21"
|
run git -C "$TEST_PLUGIN_LOCAL_REPO" push target master -f
|
||||||
echo "output: $output"
|
echo "output: $output"
|
||||||
echo "status: $status"
|
echo "status: $status"
|
||||||
assert_success
|
assert_success
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "(git) git:load-image [normal-git-init]" {
|
|
||||||
run rm -rf "/home/dokku/$TEST_APP"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run mkdir "/home/dokku/$TEST_APP"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run chown -R dokku:dokku "/home/dokku/$TEST_APP"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image pull linuxserver/foldingathome:7.6.21"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image save -o /tmp/image.tar linuxserver/foldingathome:7.6.21"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image rm linuxserver/foldingathome:7.6.21"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP linuxserver/foldingathome:7.6.21"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "(git) git:load-image [normal-cnb]" {
|
|
||||||
run /bin/bash -c "docker image pull dokku/node-js-getting-started:latest"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image save -o /tmp/image.tar dokku/node-js-getting-started:latest"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image rm dokku/node-js-getting-started:latest"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP dokku/node-js-getting-started:latest"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "(git) git:load-image [failing deploy]" {
|
|
||||||
local CUSTOM_TMP=$(mktemp -d "/tmp/${DOKKU_DOMAIN}.XXXXX")
|
|
||||||
trap 'popd &>/dev/null || true; rm -rf "$CUSTOM_TMP"' INT TERM
|
|
||||||
rmdir "$CUSTOM_TMP" && cp -r "${BATS_TEST_DIRNAME}/../../tests/apps/python" "$CUSTOM_TMP"
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image build -t dokku-test/$TEST_APP:latest -f $CUSTOM_TMP/alt.Dockerfile $CUSTOM_TMP"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image build -t dokku-test/$TEST_APP:v2 --build-arg BUILD_ARG=value -f $CUSTOM_TMP/alt.Dockerfile $CUSTOM_TMP"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image save -o /tmp/image.tar dokku-test/$TEST_APP:latest"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image save -o /tmp/image-2.tar dokku-test/$TEST_APP:v2"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image rm dokku-test/$TEST_APP:latest dokku-test/$TEST_APP:v2"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "dokku config:set --no-restart $TEST_APP FAIL_ON_STARTUP=true"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP dokku-test/$TEST_APP:latest"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_failure
|
|
||||||
|
|
||||||
run /bin/bash -c "dokku config:get $TEST_APP FAIL_ON_STARTUP"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
assert_output "true"
|
|
||||||
|
|
||||||
run /bin/bash -c "dokku git:status $TEST_APP"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_failure
|
|
||||||
assert_output "fatal: this operation must be run in a work tree"
|
|
||||||
|
|
||||||
run /bin/bash -c "dokku config:set --no-restart $TEST_APP FAIL_ON_STARTUP=false"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP dokku-test/$TEST_APP:latest"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "dokku config:set --no-restart $TEST_APP FAIL_ON_STARTUP=true"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image-2.tar | dokku git:load-image $TEST_APP dokku-test/$TEST_APP:v2"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_failure
|
|
||||||
|
|
||||||
run /bin/bash -c "dokku config:set --no-restart $TEST_APP FAIL_ON_STARTUP=false"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image-2.tar | dokku git:load-image $TEST_APP dokku-test/$TEST_APP:v2"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
assert_output_contains "No changes detected, skipping git commit" 0
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "(git) git:load-image [onbuild]" {
|
|
||||||
local TMP=$(mktemp -d "/tmp/${DOKKU_DOMAIN}.XXXXX")
|
|
||||||
trap 'popd &>/dev/null || true; rm -rf "$TMP"' INT TERM
|
|
||||||
|
|
||||||
run /bin/bash -c "dokku storage:mount $TEST_APP /var/run/docker.sock:/var/run/docker.sock"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image pull gliderlabs/logspout:v3.2.13"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image save -o /tmp/image.tar gliderlabs/logspout:v3.2.13"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image rm gliderlabs/logspout:v3.2.13"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP gliderlabs/logspout:v3.2.13"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_failure
|
|
||||||
|
|
||||||
cat <<EOF >"$TMP/build.sh"
|
|
||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
apk add --update go build-base git mercurial ca-certificates
|
|
||||||
cd /src
|
|
||||||
go build -ldflags "-X main.Version=\$1" -o /bin/logspout
|
|
||||||
apk del go git mercurial build-base
|
|
||||||
rm -rf /root/go /var/cache/apk/*
|
|
||||||
|
|
||||||
# backwards compatibility
|
|
||||||
ln -fs /tmp/docker.sock /var/run/docker.sock
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >"$TMP/modules.go"
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
_ "github.com/gliderlabs/logspout/adapters/multiline"
|
|
||||||
_ "github.com/gliderlabs/logspout/adapters/raw"
|
|
||||||
_ "github.com/gliderlabs/logspout/adapters/syslog"
|
|
||||||
_ "github.com/gliderlabs/logspout/healthcheck"
|
|
||||||
_ "github.com/gliderlabs/logspout/httpstream"
|
|
||||||
_ "github.com/gliderlabs/logspout/routesapi"
|
|
||||||
_ "github.com/gliderlabs/logspout/transports/tcp"
|
|
||||||
_ "github.com/gliderlabs/logspout/transports/tls"
|
|
||||||
_ "github.com/gliderlabs/logspout/transports/udp"
|
|
||||||
)
|
|
||||||
EOF
|
|
||||||
|
|
||||||
run sudo chown -R dokku:dokku "$TMP"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image --build-dir $TMP $TEST_APP gliderlabs/logspout:v3.2.13"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP gliderlabs/logspout:v3.2.13"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_failure
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "(git) git:load-image labels correctly" {
|
|
||||||
run /bin/bash -c "docker image pull linuxserver/foldingathome:7.6.21"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image save -o /tmp/image.tar linuxserver/foldingathome:7.6.21"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image rm linuxserver/foldingathome:7.6.21"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "cat /tmp/image.tar | dokku git:load-image $TEST_APP linuxserver/foldingathome:7.6.21"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run /bin/bash -c "docker image inspect dokku/$TEST_APP:latest --format '{{ index .Config.Labels \"com.dokku.docker-image-labeler/alternate-tags\" }}'"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
assert_output_contains "linuxserver/foldingathome:7.6.21"
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
#!/usr/bin/env bats
|
|
||||||
|
|
||||||
load test_helper
|
|
||||||
|
|
||||||
TEST_PLUGIN_APP=smoke-test-app
|
|
||||||
TEST_PLUGIN_GIT_REPO=https://github.com/dokku/${TEST_PLUGIN_APP}.git
|
|
||||||
TEST_PLUGIN_LOCAL_REPO="$(mktemp -d)/$TEST_PLUGIN_APP"
|
|
||||||
|
|
||||||
clone_test_app() {
|
|
||||||
git clone "$TEST_PLUGIN_GIT_REPO" "$TEST_PLUGIN_LOCAL_REPO"
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_test_app() {
|
|
||||||
rm -rf $TEST_PLUGIN_LOCAL_REPO
|
|
||||||
}
|
|
||||||
|
|
||||||
setup() {
|
|
||||||
global_setup
|
|
||||||
create_app
|
|
||||||
clone_test_app
|
|
||||||
}
|
|
||||||
|
|
||||||
teardown() {
|
|
||||||
remove_test_app || true
|
|
||||||
destroy_app
|
|
||||||
global_teardown
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "(git) push tags and branches" {
|
|
||||||
# https://github.com/dokku/dokku/issues/5188
|
|
||||||
local GIT_REMOTE=${GIT_REMOTE:="dokku@${DOKKU_DOMAIN}:$TEST_APP"}
|
|
||||||
run git -C "$TEST_PLUGIN_LOCAL_REPO" remote add target "$GIT_REMOTE"
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run git -C "$TEST_PLUGIN_LOCAL_REPO" push target 1.0.0:master
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run git -C "$TEST_PLUGIN_LOCAL_REPO" push target 2.0.0:master -f
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
run git -C "$TEST_PLUGIN_LOCAL_REPO" push target master -f
|
|
||||||
echo "output: $output"
|
|
||||||
echo "status: $status"
|
|
||||||
assert_success
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user