From 93180c287bad7e1705fbc4c9bee989ad7fe3ac98 Mon Sep 17 00:00:00 2001 From: John McLear Date: Fri, 3 Apr 2020 02:27:05 +0100 Subject: [PATCH] tests: in Travis, also run the backend tests This change introduces automatic execution of the backend tests in Travis. Implements #2351. --- .travis.yml | 5 +++ tests/frontend/travis/runner.sh | 2 ++ tests/frontend/travis/runnerBackend.sh | 46 ++++++++++++++++++++++++++ tests/frontend/travis/sauce_tunnel.sh | 3 ++ 4 files changed, 56 insertions(+) create mode 100755 tests/frontend/travis/runnerBackend.sh diff --git a/.travis.yml b/.travis.yml index d13e13dda..6b3bb6c7c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,6 +24,11 @@ env: jobs: include: + - name: "Run the Backend tests" + install: + - "cd src && npm install && cd -" + script: + - "tests/frontend/travis/runnerBackend.sh" - name: "Test the Frontend" install: - "bin/installDeps.sh" diff --git a/tests/frontend/travis/runner.sh b/tests/frontend/travis/runner.sh index 504bf1f2d..2a4d76bd2 100755 --- a/tests/frontend/travis/runner.sh +++ b/tests/frontend/travis/runner.sh @@ -1,4 +1,6 @@ #!/bin/bash +if [ -z "${SAUCE_USERNAME}" ]; then echo "SAUCE_USERNAME is unset - exiting"; exit 1; fi +if [ -z "${SAUCE_ACCESS_KEY}" ]; then echo "SAUCE_ACCESS_KEY is unset - exiting"; exit 1; fi # do not continue if there is an error set -eu diff --git a/tests/frontend/travis/runnerBackend.sh b/tests/frontend/travis/runnerBackend.sh new file mode 100755 index 000000000..50e5ce36b --- /dev/null +++ b/tests/frontend/travis/runnerBackend.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +# do not continue if there is an error +set -eu + +# source: https://stackoverflow.com/questions/59895/get-the-source-directory-of-a-bash-script-from-within-the-script-itself#246128 +MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" + +# reliably move to the etherpad base folder before running it +cd "${MY_DIR}/../../../" + +# start Etherpad, assuming all dependencies are already installed. +# +# This is possible because the "install" section of .travis.yml already contains +# a call to bin/installDeps.sh +echo "Running Etherpad directly, assuming bin/installDeps.sh has already been run" +node node_modules/ep_etherpad-lite/node/server.js "${@}" > /dev/null & + +echo "Now I will try for 15 seconds to connect to Etherpad on http://localhost:9001" + +# wait for at most 15 seconds until Etherpad starts accepting connections +# +# modified from: +# https://unix.stackexchange.com/questions/5277/how-do-i-tell-a-script-to-wait-for-a-process-to-start-accepting-requests-on-a-po#349138 +# +(timeout 15 bash -c 'until echo > /dev/tcp/localhost/9001; do sleep 0.5; done') || \ + (echo "Could not connect to Etherpad on http://localhost:9001" ; exit 1) + +echo "Successfully connected to Etherpad on http://localhost:9001" + +# just in case, let's wait for another second before going on +sleep 1 + +# a copy of settings.json is necessary for the backend tests to work +cp settings.json.template settings.json + +# run the backend tests +echo "Now run the backend tests" +cd src +npm run test +exit_code=$? + +kill $! +sleep 5 + +exit $exit_code diff --git a/tests/frontend/travis/sauce_tunnel.sh b/tests/frontend/travis/sauce_tunnel.sh index f85d67e59..b8e1bc59e 100755 --- a/tests/frontend/travis/sauce_tunnel.sh +++ b/tests/frontend/travis/sauce_tunnel.sh @@ -6,6 +6,9 @@ # example https://saucelabs.com/downloads/sc-4.5.4-linux.tar.gz # Supported versions are currently listed at: # https://wiki.saucelabs.com/display/DOCS/Downloading+Sauce+Connect+Proxy +if [ -z "${SAUCE_USERNAME}" ]; then echo "SAUCE_USERNAME is unset - exiting"; exit 1; fi +if [ -z "${SAUCE_ACCESS_KEY}" ]; then echo "SAUCE_ACCESS_KEY is unset - exiting"; exit 1; fi + curl https://saucelabs.com/downloads/sc-4.5.4-linux.tar.gz > /tmp/sauce.tar.gz tar zxf /tmp/sauce.tar.gz --directory /tmp mv /tmp/sc-*-linux /tmp/sauce_connect