From c2911c94a8950810744ad938b9a4bab17f5979b4 Mon Sep 17 00:00:00 2001 From: Michael Hobbs Date: Mon, 22 Dec 2014 15:52:33 -0800 Subject: [PATCH] quote build_env vars --- plugins/build-env/pre-build | 2 +- tests/unit/build-env.bats | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tests/unit/build-env.bats diff --git a/plugins/build-env/pre-build b/plugins/build-env/pre-build index 28ac78ea0..ca0609d18 100755 --- a/plugins/build-env/pre-build +++ b/plugins/build-env/pre-build @@ -20,7 +20,7 @@ if [[ ! -z "$BUILD_ENV" ]]; then echo "-----> Adding BUILD_ENV to build environment..." # create build env files for use in buildpacks like this: # https://github.com/niteoweb/heroku-buildpack-buildout/blob/5879fa3418f7d8e079f1aa5816ba1adde73f4948/bin/compile#L34 - id=$(echo $BUILD_ENV |sed 's@export @@g'| docker run -i -a stdin $IMAGE /bin/bash -c "for ENV_VAR in $(cat); do echo \$ENV_VAR |sed 's@^\([^=]*\)=\(.*\)\$@echo \2 >/tmp/env/\1@g' >>/tmp/set_env.sh; done && mkdir -p /tmp/env && /bin/bash /tmp/set_env.sh") + id=$(echo $BUILD_ENV |sed 's@export @@g'| docker run -i -a stdin $IMAGE /bin/bash -c "for ENV_VAR in $(cat); do echo \$ENV_VAR |sed 's@^\([^=]*\)=\(.*\)\$@echo \\\"\2\\\" >/tmp/env/\1@g' >>/tmp/set_env.sh; done && mkdir -p /tmp/env && /bin/bash /tmp/set_env.sh") test "$(docker wait $id)" -eq 0 docker commit $id $IMAGE > /dev/null diff --git a/tests/unit/build-env.bats b/tests/unit/build-env.bats new file mode 100644 index 000000000..cd062742a --- /dev/null +++ b/tests/unit/build-env.bats @@ -0,0 +1,21 @@ +#!/usr/bin/env bats + +load test_helper + +setup() { + create_app +} + +teardown() { + destroy_app +} + +@test "build-env with special chars" { + run dokku config:set $TEST_APP NEWRELIC_APP_NAME="$TEST_APP (Staging)" + echo "output: "$output + echo "status: "$status + assert_success + deploy_app + run dokku config $TEST_APP + assert_success +}