|
| 1 | +#!/usr/bin/env bats |
| 2 | + |
| 3 | +# Bats is a testing framework for Bash |
| 4 | +# Documentation https://bats-core.readthedocs.io/en/stable/ |
| 5 | +# Bats libraries documentation https://github.com/ztombol/bats-docs |
| 6 | + |
| 7 | +# For local tests, install bats-core, bats-assert, bats-file, bats-support |
| 8 | +# And run this in the add-on root directory: |
| 9 | +# bats ./tests/test.bats |
| 10 | +# To exclude release tests: |
| 11 | +# bats ./tests/test.bats --filter-tags '!release' |
| 12 | +# For debugging: |
| 13 | +# bats ./tests/test.bats --show-output-of-passing-tests --verbose-run --print-output-on-failure |
| 14 | + |
1 | 15 | setup() { |
2 | 16 | set -eu -o pipefail |
3 | | - export DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )/.." |
4 | | - export TESTDIR=~/tmp/testmemcached |
5 | | - mkdir -p $TESTDIR |
6 | | - export PROJNAME=testmemcached |
7 | | - export DDEV_NON_INTERACTIVE=true |
8 | | - ddev delete -Oy ${PROJNAME} || true |
| 17 | + |
| 18 | + # Override this variable for your add-on: |
| 19 | + export GITHUB_REPO=ddev/ddev-memcached |
| 20 | + |
| 21 | + TEST_BREW_PREFIX="$(brew --prefix 2>/dev/null || true)" |
| 22 | + export BATS_LIB_PATH="${BATS_LIB_PATH}:${TEST_BREW_PREFIX}/lib:/usr/lib/bats" |
| 23 | + bats_load_library bats-assert |
| 24 | + bats_load_library bats-file |
| 25 | + bats_load_library bats-support |
| 26 | + |
| 27 | + export DIR="$(cd "$(dirname "${BATS_TEST_FILENAME}")/.." >/dev/null 2>&1 && pwd)" |
| 28 | + export PROJNAME="test-$(basename "${GITHUB_REPO}")" |
| 29 | + mkdir -p ~/tmp |
| 30 | + export TESTDIR=$(mktemp -d ~/tmp/${PROJNAME}.XXXXXX) |
| 31 | + export DDEV_NONINTERACTIVE=true |
| 32 | + export DDEV_NO_INSTRUMENTATION=true |
| 33 | + ddev delete -Oy "${PROJNAME}" >/dev/null 2>&1 || true |
9 | 34 | cd "${TESTDIR}" |
10 | | - ddev config --project-name=${PROJNAME} |
11 | | - ddev start |
| 35 | + run ddev config --project-name="${PROJNAME}" --project-tld=ddev.site |
| 36 | + assert_success |
| 37 | + run ddev start -y |
| 38 | + assert_success |
| 39 | +} |
| 40 | + |
| 41 | +health_checks() { |
| 42 | + v=$(ddev exec 'printf "version\nquit\nquit\n" | nc memcached 11211') |
| 43 | + [[ "${v}" = VERSION* ]] |
12 | 44 | } |
13 | 45 |
|
14 | 46 | teardown() { |
15 | 47 | set -eu -o pipefail |
16 | | - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
17 | | - ddev delete -Oy ${PROJNAME} || true |
| 48 | + ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 |
18 | 49 | [ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR} |
19 | 50 | } |
20 | 51 |
|
21 | 52 | @test "install from directory" { |
22 | 53 | set -eu -o pipefail |
23 | | - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
24 | | - echo "# ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
25 | | - ddev get ${DIR} |
26 | | - ddev restart |
27 | | - v=$(ddev exec 'printf "version\nquit\nquit\n" | nc memcached 11211') |
28 | | - [[ "${v}" = VERSION* ]] |
| 54 | + echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3 |
| 55 | + run ddev add-on get "${DIR}" |
| 56 | + assert_success |
| 57 | + run ddev restart -y |
| 58 | + assert_success |
| 59 | + health_checks |
29 | 60 | } |
30 | 61 |
|
| 62 | +# bats test_tags=release |
31 | 63 | @test "install from release" { |
32 | 64 | set -eu -o pipefail |
33 | | - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
34 | | - echo "# ddev get ddev/ddev-memcached with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
35 | | - ddev get ddev/ddev-memcached |
36 | | - ddev restart |
37 | | - v=$(ddev exec 'printf "version\nquit\nquit\n" | nc memcached 11211') |
38 | | - [[ "${v}" = VERSION* ]] |
| 65 | + echo "# ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $(pwd)" >&3 |
| 66 | + run ddev add-on get "${GITHUB_REPO}" |
| 67 | + assert_success |
| 68 | + run ddev restart -y |
| 69 | + assert_success |
| 70 | + health_checks |
39 | 71 | } |
0 commit comments