|
| 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/test-python2 |
5 |
| - mkdir -p $TESTDIR |
6 |
| - export PROJNAME=test-python2 |
| 17 | + |
| 18 | + # Override this variable for your add-on: |
| 19 | + export GITHUB_REPO=stasadev/ddev-python2 |
| 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) |
7 | 31 | export DDEV_NONINTERACTIVE=true
|
8 |
| - ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 || 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 -y >/dev/null |
| 35 | + run ddev config --project-name="${PROJNAME}" --project-tld=ddev.site |
| 36 | + assert_success |
| 37 | + run ddev start -y |
| 38 | + assert_success |
12 | 39 | }
|
13 | 40 |
|
14 | 41 | health_checks() {
|
15 |
| - ddev exec "python -V 2>&1 | grep 'Python 2.7.18'" |
16 |
| - ddev exec "python2.7 -V 2>&1 | grep 'Python 2.7.18'" |
| 42 | + run ddev exec python -V |
| 43 | + assert_success |
| 44 | + assert_output "Python 2.7.18" |
| 45 | + |
| 46 | + run ddev exec python2.7 -V |
| 47 | + assert_success |
| 48 | + assert_output "Python 2.7.18" |
17 | 49 | }
|
18 | 50 |
|
19 | 51 | teardown() {
|
20 | 52 | set -eu -o pipefail
|
21 |
| - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
22 | 53 | ddev delete -Oy ${PROJNAME} >/dev/null 2>&1
|
23 | 54 | [ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR}
|
24 | 55 | }
|
25 | 56 |
|
26 | 57 | @test "install from directory" {
|
27 | 58 | set -eu -o pipefail
|
28 |
| - cd ${TESTDIR} |
29 |
| - echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
30 |
| - ddev add-on get ${DIR} |
31 |
| - ddev restart |
| 59 | + echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3 |
| 60 | + run ddev add-on get "${DIR}" |
| 61 | + assert_success |
| 62 | + run ddev restart -y |
| 63 | + assert_success |
32 | 64 | health_checks
|
33 | 65 | }
|
34 | 66 |
|
35 | 67 | # bats test_tags=release
|
36 | 68 | @test "install from release" {
|
37 | 69 | set -eu -o pipefail
|
38 |
| - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
39 |
| - echo "# ddev add-on get stasadev/ddev-python2 with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
40 |
| - ddev add-on get stasadev/ddev-python2 |
41 |
| - ddev restart >/dev/null |
| 70 | + echo "# ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $(pwd)" >&3 |
| 71 | + run ddev add-on get "${GITHUB_REPO}" |
| 72 | + assert_success |
| 73 | + run ddev restart -y |
| 74 | + assert_success |
42 | 75 | health_checks
|
43 | 76 | }
|
44 |
| - |
|
0 commit comments