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- brew_prefix=$( brew --prefix)
4- load " ${brew_prefix} /lib/bats-support/load.bash"
5- load " ${brew_prefix} /lib/bats-assert/load.bash"
6-
7- export DIR=" $( cd " $( dirname " $BATS_TEST_FILENAME " ) " > /dev/null 2>&1 && pwd ) /.."
8- export TESTDIR=~ /tmp/test-phpmyadmin
9- mkdir -p $TESTDIR
10- export PROJNAME=test-phpmyadmin
11- export DDEV_NON_INTERACTIVE=true
12- ddev delete -Oy ${PROJNAME} > /dev/null 2>&1 || true
17+
18+ # Override this variable for your add-on:
19+ export GITHUB_REPO=ddev/ddev-phpmyadmin
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
1334 cd " ${TESTDIR} "
14- ddev config --project-name=${PROJNAME}
15- ddev config --omit-containers=dba > /dev/null 2>&1 || true
16- ddev start -y > /dev/null 2>&1
35+ run ddev config --project-name=" ${PROJNAME} " --project-tld=ddev.site
36+ assert_success
37+ run ddev start -y
38+ assert_success
1739}
1840
1941health_checks () {
20- set +u # bats-assert has unset variables so turn off unset check
21- # ddev restart is required because we have done `ddev get` on a new service
22- run ddev restart
23- assert_success
2442 # Make sure we can hit the 8037 port successfully
25- curl -s -I -f https://${PROJNAME} .ddev.site:8037 > /tmp/curlout.txt
43+ run curl -sfI https://${PROJNAME} .ddev.site:8037
44+ assert_success
45+ assert_output --partial " HTTP/2 200"
46+ assert_output --partial " server: Apache"
47+ assert_output --partial " x-powered-by: PHP"
48+
49+ run curl -sf https://${PROJNAME} .ddev.site:8037
50+ assert_success
51+ assert_output --partial " phpMyAdmin"
52+
2653 # Make sure `ddev phpmyadmin` works
2754 DDEV_DEBUG=true run ddev phpmyadmin
2855 assert_success
@@ -31,38 +58,53 @@ health_checks() {
3158
3259teardown () {
3360 set -eu -o pipefail
34- cd ${TESTDIR} || ( printf " unable to cd to ${TESTDIR} \n" && exit 1 )
3561 ddev delete -Oy ${PROJNAME} > /dev/null 2>&1
3662 [ " ${TESTDIR} " != " " ] && rm -rf ${TESTDIR}
3763}
3864
3965@test " install from directory" {
4066 set -eu -o pipefail
41- cd ${TESTDIR}
42- echo " # ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($( pwd) )" >&3
43- ddev get ${DIR} > /dev/null 2>&1
44- ddev mutagen sync > /dev/null 2>&1
67+
68+ echo " # ddev add-on get ${DIR} with project ${PROJNAME} in $( pwd) " >&3
69+ run ddev add-on get " ${DIR} "
70+ assert_success
71+
72+ run ddev restart -y
73+ assert_success
74+
4575 health_checks
4676}
4777
48-
78+ # bats test_tags=release
4979@test " install from release" {
5080 set -eu -o pipefail
51- cd ${TESTDIR} || ( printf " unable to cd to ${TESTDIR} \n" && exit 1 )
52- echo " # ddev get ddev/ddev-phpmyadmin with project ${PROJNAME} in ${TESTDIR} ($( pwd) )" >&3
53- ddev get ddev/ddev-phpmyadmin > /dev/null 2>&1
54- ddev restart > /dev/null 2>&1
81+
82+ echo " # ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $( pwd) " >&3
83+ run ddev add-on get " ${GITHUB_REPO} "
84+ assert_success
85+
86+ run ddev restart -y
87+ assert_success
88+
5589 health_checks
5690}
5791
58- @test " install from directory with nonstandard port" {
92+ @test " install from directory with nonstandard port and .env.phpmyadmin " {
5993 set -eu -o pipefail
60- cd ${TESTDIR}
61- ddev config --router-http-port=8080 --router-https-port=8443
62- echo " # ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($( pwd) )" >&3
63- ddev get ${DIR} > /dev/null 2>&1
64- ddev mutagen sync > /dev/null 2>&1
65- health_checks
66- }
6794
95+ run ddev config --router-http-port=8080 --router-https-port=8443
96+ assert_success
6897
98+ run ddev dotenv set .ddev/.env.phpmyadmin --phpmyadmin-docker-image=phpmyadmin:5.2.2
99+ assert_success
100+ assert_file_exist .ddev/.env.phpmyadmin
101+
102+ echo " # ddev add-on get ${DIR} with project ${PROJNAME} in $( pwd) " >&3
103+ run ddev add-on get " ${DIR} "
104+ assert_success
105+
106+ run ddev restart -y
107+ assert_success
108+
109+ health_checks
110+ }
0 commit comments