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+
115setup () {
216 set -eu -o pipefail
3- export DIR=" $( cd " $( dirname " $BATS_TEST_FILENAME " ) " > /dev/null 2>&1 && pwd ) /.."
4- export TESTDIR=~ /tmp/test-addon-backstop
5- mkdir -p $TESTDIR
6- export PROJNAME=test-addon-backstop
7- export DDEV_NON_INTERACTIVE=true
8- ddev delete -Oy ${PROJNAME} > /dev/null 2>&1 || true
17+
18+ # Override this variable for your add-on:
19+ export GITHUB_REPO=mmunz/ddev-backstopjs
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
934 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
39+ echo " # ddev started at $( date) " >&3
40+ }
41+
42+ health_checks () {
43+ # backstop is installed and can show its version
44+ run ddev backstop version
45+ assert_success
46+ assert_output --partial ' Command "version" successfully executed'
1247}
1348
1449teardown () {
1550 set -eu -o pipefail
16- cd ${TESTDIR} || ( printf " unable to cd to ${TESTDIR} \n" && exit 1 )
1751 ddev delete -Oy ${PROJNAME} > /dev/null 2>&1
1852 [ " ${TESTDIR} " != " " ] && rm -rf ${TESTDIR}
1953}
@@ -22,25 +56,30 @@ teardown() {
2256 set -eu -o pipefail
2357 cd ${TESTDIR}
2458 echo " # ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($( pwd) )" >&3
25- ddev add-on get ${DIR}
59+ run ddev add-on get ${DIR}
60+ assert_success
2661 ddev restart
2762
28- # backstop is installed and can show its version
29- ddev backstop version | grep ' Command "version" successfully executed '
63+ # Check service works
64+ health_checks
3065
3166 # openReport and remote commands show an error message
3267 set +o pipefail
33- ddev backstop openReport | grep -q ' This does not work for backstop in ddev'
34- ddev backstop remote | grep -q ' This does not work for backstop in ddev'
68+ run ddev backstop openReport
69+ assert_output --partial ' This does not work for backstop in ddev'
70+ run ddev backstop remote
71+ assert_output --partial ' This does not work for backstop in ddev'
3572}
3673
3774# bats test_tags=release
38- # @test "install from release" {
39- # set -eu -o pipefail
40- # cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
41- # echo "# ddev add-on get drud/ddev-addon-template with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
42- # ddev add-on get drud/ddev-addon-template
43- # ddev restart >/dev/null
44- # # Do something useful here that verifies the add-on
45- # # ddev exec "curl -s elasticsearch:9200" | grep "${PROJNAME}-elasticsearch"
46- # }
75+ @test " install from release" {
76+ set -eu -o pipefail
77+ echo " # ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $( pwd) " >&3
78+ run ddev add-on get " ${GITHUB_REPO} "
79+ assert_success
80+ run ddev restart -y
81+ assert_success
82+
83+ # Check service works
84+ health_checks
85+ }
0 commit comments