diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ef0693c --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +.PHONY: clean all + +.PHONY: default +default: test + +.PHONY: test +test: + docker-compose -f ./tests/docker-compose-private.yml up \ + --abort-on-container-exit --exit-code-from plugin + docker-compose -f ./tests/docker-compose-public.yml up \ + --abort-on-container-exit --exit-code-from plugin diff --git a/Readme.md b/Readme.md index f0f7795..98cf613 100644 --- a/Readme.md +++ b/Readme.md @@ -46,3 +46,12 @@ The following environment variables can be used for further cutomization: | ``PLUGIN_TIMEOUT`` | Defines a timeout (in seconds) to stop the upload after a certain time. | | ``PLUGIN_ATTEMPTS`` | Defines how often a failed upload should be retried. Normally there is only one upload attempt. | | ``PLUGIN_CUSTOM_ARGUMENTS`` | Additional arguments to be passed to `curl`. | + + +## Development + +There are only two tests right now and they are configured using Docker Compose. To run them, just use + + make test + +If someone wants to make this better (or add a Drone file) I'd gladly accept the patch. diff --git a/push.sh b/push.sh index 1fe127f..b800d2f 100755 --- a/push.sh +++ b/push.sh @@ -1,31 +1,31 @@ #! /bin/sh # Use WEBDAV_USERNAME as default, if provided. -if [ -z "$PLUGIN_USERNAME" ] && [ ! -z "$WEBDAV_USERNAME" ]; then +if [ -z "$PLUGIN_USERNAME" ] && [ -n "$WEBDAV_USERNAME" ]; then PLUGIN_USERNAME="$WEBDAV_USERNAME" fi # Use WEBDAV_PASSWORD as default, if provided. -if [ -z "$PLUGIN_PASSWORD" ] && [ ! -z "$WEBDAV_PASSWORD" ]; then +if [ -z "$PLUGIN_PASSWORD" ] && [ -n "$WEBDAV_PASSWORD" ]; then PLUGIN_PASSWORD="$WEBDAV_PASSWORD" fi # If username and password are provided, add auth -if [ ! -z "$PLUGIN_USERNAME" ] && [ ! -z "$PLUGIN_PASSWORD" ]; then +if [ -n "$PLUGIN_USERNAME" ] && [ -n "$PLUGIN_PASSWORD" ]; then - AUTH="--user '${PLUGIN_USERNAME}':'${PLUGIN_PASSWORD}'" + AUTH="--user '${PLUGIN_USERNAME}:${PLUGIN_PASSWORD}'" fi # Use a proxy, if one is specified -if [ ! -z "$PLUGIN_PROXY_URL" ]; then +if [ -n "$PLUGIN_PROXY_URL" ]; then PLUGIN_PROXY_URL="--proxy '${PLUGIN_PROXY_URL}'" fi # If a timeout is specified, make use of it. -if [ ! -z "$PLUGIN_TIMEOUT" ]; then +if [ -n "$PLUGIN_TIMEOUT" ]; then PLUGIN_TIMEOUT="--max-time '${PLUGIN_TIMEOUT}'" fi @@ -55,6 +55,7 @@ while [ "${PLUGIN_ATTEMPTS}" -gt 0 ]; do } + sleep 5 PLUGIN_ATTEMPTS=$((PLUGIN_ATTEMPTS-1)) done diff --git a/tests/docker-compose-private.yml b/tests/docker-compose-private.yml new file mode 100644 index 0000000..8a2c0d9 --- /dev/null +++ b/tests/docker-compose-private.yml @@ -0,0 +1,21 @@ +--- +version: '2.4' +services: + webdav: + image: sashgorokhov/webdav + environment: + USERNAME: jdoe + PASSWORD: hunter2 + + plugin: + build: + context: ../ + dockerfile: Dockerfile + volumes: + - './test.txt:/test.txt' + environment: + PLUGIN_FILE: '/test.txt' + PLUGIN_DESTINATION: 'http://webdav/' + PLUGIN_USERNAME: jdoe + PLUGIN_PASSWORD: hunter2 + PLUGIN_ATTEMPTS: 4 diff --git a/tests/docker-compose-public.yml b/tests/docker-compose-public.yml new file mode 100644 index 0000000..e364aba --- /dev/null +++ b/tests/docker-compose-public.yml @@ -0,0 +1,16 @@ +--- +version: '2.4' +services: + webdav: + image: sashgorokhov/webdav + + plugin: + build: + context: ../ + dockerfile: Dockerfile + volumes: + - './test.txt:/test.txt' + environment: + PLUGIN_FILE: '/test.txt' + PLUGIN_DESTINATION: 'http://webdav/' + PLUGIN_ATTEMPTS: 4 diff --git a/tests/test.txt b/tests/test.txt new file mode 100644 index 0000000..75c620d --- /dev/null +++ b/tests/test.txt @@ -0,0 +1 @@ +ohai