diff --git a/.travis.yml b/.travis.yml index 6151249..451fe6f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,9 @@ dist: trusty language: bash env: - DOKKU_VERSION=master - - DOKKU_VERSION=v0.4.14 + - DOKKU_VERSION=v0.7.0 + - DOKKU_VERSION=v0.6.0 + - DOKKU_VERSION=v0.5.0 - DOKKU_VERSION=v0.4.0 before_install: make setup script: make test diff --git a/tests/bin/at-least-version b/tests/bin/at-least-version new file mode 100755 index 0000000..145e8e5 --- /dev/null +++ b/tests/bin/at-least-version @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +set -eo pipefail; [[ $TRACE ]] && set -x + +semver-parse-into() { + declare VERSION="$1" + local RE='[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)' + local MAJOR="$(echo "$VERSION" | sed -e "s#$RE#\1#")" + local MINOR="$(echo "$VERSION" | sed -e "s#$RE#\2#")" + local PATCH="$(echo "$VERSION" | sed -e "s#$RE#\3#")" + echo "${MAJOR} ${MINOR} ${PATCH}" +} + +main() { + declare MIN_VERSION="$1" CHECK_VERSION="$2" + local IS_AT_LEAST_VERSION=false + local MAJOR_MIN MINOR_MIN PATCH_MIN MAJOR_CHECK MINOR_CHECK PATCH_CHECK PARSED_MIN PARSED_CHECK + + PARSED_MIN="$(semver-parse-into "$MIN_VERSION")" + PARSED_CHECK="$(semver-parse-into "$CHECK_VERSION")" + MAJOR_MIN="$(echo "$PARSED_MIN" | cut -d' ' -f1)" + MINOR_MIN="$(echo "$PARSED_MIN" | cut -d' ' -f2)" + PATCH_MIN="$(echo "$PARSED_MIN" | cut -d' ' -f3)" + MAJOR_CHECK="$(echo "$PARSED_CHECK" | cut -d' ' -f1)" + MINOR_CHECK="$(echo "$PARSED_CHECK" | cut -d' ' -f2)" + PATCH_CHECK="$(echo "$PARSED_CHECK" | cut -d' ' -f3)" + + if [[ "$MAJOR_CHECK" -gt "$MAJOR_MIN" ]]; then + IS_AT_LEAST_VERSION=true + elif [[ "$MAJOR_CHECK" -eq "$MAJOR_MIN" ]] && [[ "$MINOR_CHECK" -gt "$MINOR_MIN" ]]; then + IS_AT_LEAST_VERSION=true + elif [[ "$MAJOR_CHECK" -eq "$MAJOR_MIN" ]] && [[ "$MINOR_CHECK" -eq "$MINOR_MIN" ]] && [[ "$PATCH_CHECK" -ge "$PATCH_MIN" ]]; then + IS_AT_LEAST_VERSION=true + fi + + echo "$IS_AT_LEAST_VERSION" +} + +main "$@" diff --git a/tests/service_unlink.bats b/tests/service_unlink.bats index e97093f..3d9005d 100755 --- a/tests/service_unlink.bats +++ b/tests/service_unlink.bats @@ -39,8 +39,11 @@ teardown() { @test "($PLUGIN_COMMAND_PREFIX:unlink) removes link from docker-options" { dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app >&2 dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app - options=$(dokku docker-options my_app) - assert_equal "$options" "" + options=$(dokku docker-options my_app | xargs) + check_value="" + [[ "$(dokku version)" == "master" ]] && check_value="Deploy options: --restart=on-failure:10" + [[ "$(at-least-version 0.7.0 "$(dokku version)")" == "true" ]] && check_value="Deploy options: --restart=on-failure:10" + assert_equal "$options" "$check_value" } @test "($PLUGIN_COMMAND_PREFIX:unlink) unsets config url from app" { diff --git a/tests/setup.sh b/tests/setup.sh index a3a5103..5703c57 100644 --- a/tests/setup.sh +++ b/tests/setup.sh @@ -17,6 +17,7 @@ rm -rf $DOKKU_ROOT/plugins/$PLUGIN_COMMAND_PREFIX mkdir -p $DOKKU_ROOT/plugins/$PLUGIN_COMMAND_PREFIX $DOKKU_ROOT/plugins/$PLUGIN_COMMAND_PREFIX/subcommands find ./ -maxdepth 1 -type f -exec cp '{}' $DOKKU_ROOT/plugins/$PLUGIN_COMMAND_PREFIX \; find ./subcommands -maxdepth 1 -type f -exec cp '{}' $DOKKU_ROOT/plugins/$PLUGIN_COMMAND_PREFIX/subcommands \; +echo "$DOKKU_VERSION" > $DOKKU_ROOT/VERSION if [[ ! -f $BIN_STUBS/plugn ]]; then wget -O- "$PLUGN_URL" | tar xzf - -C "$BIN_STUBS"