mv dockerfile port logic to common function + tests. closes #1280

This commit is contained in:
Michael Hobbs
2015-07-12 15:56:52 -07:00
parent 5f8b2d291c
commit ee4fca572e
4 changed files with 38 additions and 1 deletions

View File

@@ -36,7 +36,7 @@ case "$1" in
dockerfile)
# extract first port from Dockerfile
DOCKERFILE_PORT=$(grep "^EXPOSE \+[[:digit:]]\+\(\/tcp\)\? *$" Dockerfile | head -1 | sed 's/EXPOSE \+\([[:digit:]]\+\)\(\/tcp\)\?.*/\1/' || true)
DOCKERFILE_PORT=$(get_dockerfile_exposed_port Dockerfile)
[[ -n "$DOCKERFILE_PORT" ]] && dokku config:set-norestart $APP DOKKU_DOCKERFILE_PORT=$DOCKERFILE_PORT
# buildstep pluginhooks don't necessarily make sense for dockerfiles. call the new breed!!!

View File

@@ -201,3 +201,12 @@ get_container_ids() {
shopt -u nullglob
echo $DOKKU_CIDS
}
get_dockerfile_exposed_port() {
local DOCKERFILE_PORT=$(grep "^EXPOSE \+[[:digit:]]\+\(\/tcp\)\? *$" $1 | head -1 | sed 's/EXPOSE \+\([[:digit:]]\+\)\(\/tcp\)\?.*/\1/' || true)
if [[ -n "$DOCKERFILE_PORT" ]]; then
echo "$DOCKERFILE_PORT"
else
echo ""
fi
}

View File

@@ -5,6 +5,7 @@ load test_helper
setup() {
[[ -f "$DOKKU_ROOT/VHOST" ]] && cp -f "$DOKKU_ROOT/VHOST" "$DOKKU_ROOT/VHOST.bak"
[[ -f "$DOKKU_ROOT/HOSTNAME" ]] && cp -f "$DOKKU_ROOT/HOSTNAME" "$DOKKU_ROOT/HOSTNAME.bak"
DOCKERFILE="$BATS_TMPDIR/Dockerfile"
}
teardown() {
@@ -131,3 +132,29 @@ teardown() {
echo "status: "$status
assert_success
}
@test "(core) port exposure (dockerfile raw port)" {
source "$PLUGIN_PATH/common/functions"
cat<<EOF > $DOCKERFILE
EXPOSE 3001/udp
EXPOSE 3003
EXPOSE 3000/tcp
EOF
run get_dockerfile_exposed_port $DOCKERFILE
echo "output: "$output
echo "status: "$status
assert_output 3003
}
@test "(core) port exposure (dockerfile tcp port)" {
source "$PLUGIN_PATH/common/functions"
cat<<EOF > $DOCKERFILE
EXPOSE 3001/udp
EXPOSE 3000/tcp
EXPOSE 3003
EOF
run get_dockerfile_exposed_port $DOCKERFILE
echo "output: "$output
echo "status: "$status
assert_output 3000
}

View File

@@ -2,6 +2,7 @@
# constants
DOKKU_ROOT=${DOKKU_ROOT:=~dokku}
PLUGIN_PATH=${PLUGIN_PATH:="/var/lib/dokku/plugins"}
TEST_APP=my-cool-guy-test-app
# test functions