From db956c3bbfcd956ff25f791f8a2a6b35f3bb6934 Mon Sep 17 00:00:00 2001 From: Youri van der Lans Date: Tue, 14 Mar 2017 13:35:07 +0100 Subject: [PATCH] Suppress mysqldump password error. --- functions | 4 +++- tests/service_export.bats | 12 ++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/functions b/functions index e3aa9aa..d1070c3 100755 --- a/functions +++ b/functions @@ -63,7 +63,9 @@ service_export() { local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")" [[ -n $SSH_TTY ]] && stty -opost - docker exec "$SERVICE_NAME" mysqldump --user=mysql --password="$PASSWORD" "$SERVICE" + docker exec "$SERVICE_NAME" bash -c "printf '[client]\npassword=$PASSWORD\n' > /root/credentials.cnf" + docker exec "$SERVICE_NAME" mysqldump --defaults-extra-file=/root/credentials.cnf --user=mysql "$SERVICE" + docker exec "$SERVICE_NAME" rm /root/credentials.cnf status=$? [[ -n $SSH_TTY ]] && stty opost exit $status diff --git a/tests/service_export.bats b/tests/service_export.bats index 66563f9..7643008 100755 --- a/tests/service_export.bats +++ b/tests/service_export.bats @@ -24,17 +24,21 @@ teardown() { @test "($PLUGIN_COMMAND_PREFIX:export) success with SSH_TTY" { export ECHO_DOCKER_COMMAND="true" export SSH_TTY=`tty` - run dokku "$PLUGIN_COMMAND_PREFIX:export" l password="$(cat "$PLUGIN_DATA_ROOT/l/PASSWORD")" + run dokku "$PLUGIN_COMMAND_PREFIX:export" l assert_exit_status 0 - assert_output "docker exec dokku.mysql.l mysqldump --user=mysql --password=$password l" + assert_output "docker exec dokku.mysql.l bash -c printf '[client]\npassword=$password\n' > /root/credentials.cnf +docker exec dokku.mysql.l mysqldump --defaults-extra-file=/root/credentials.cnf --user=mysql l +docker exec dokku.mysql.l rm /root/credentials.cnf" } @test "($PLUGIN_COMMAND_PREFIX:export) success without SSH_TTY" { export ECHO_DOCKER_COMMAND="true" unset SSH_TTY - run dokku "$PLUGIN_COMMAND_PREFIX:export" l password="$(cat "$PLUGIN_DATA_ROOT/l/PASSWORD")" + run dokku "$PLUGIN_COMMAND_PREFIX:export" l assert_exit_status 0 - assert_output "docker exec dokku.mysql.l mysqldump --user=mysql --password=$password l" + assert_output "docker exec dokku.mysql.l bash -c printf '[client]\npassword=$password\n' > /root/credentials.cnf +docker exec dokku.mysql.l mysqldump --defaults-extra-file=/root/credentials.cnf --user=mysql l +docker exec dokku.mysql.l rm /root/credentials.cnf" }