Skip to content

Commit 7c7852b

Browse files
authored
test: update tests, add version constraint v1.24.3 (#35)
1 parent 41f7a66 commit 7c7852b

File tree

4 files changed

+88
-74
lines changed

4 files changed

+88
-74
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches: [ main ]
66

77
schedule:
8-
- cron: '32 07 * * *'
8+
- cron: '25 08 * * *'
99

1010
workflow_dispatch:
1111
inputs:

images/template-button.png

-89.6 KB
Binary file not shown.

install.yaml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
name: varnish
22

3-
# list of files and directories listed that are copied into project .ddev directory
43
project_files:
5-
- docker-compose.varnish.yaml
6-
- varnish
7-
- commands/varnish
4+
- docker-compose.varnish.yaml
5+
- varnish
6+
- commands/varnish
87

9-
ddev_version_constraint: '>= v1.24.0'
8+
ddev_version_constraint: '>= v1.24.3'
109

1110
pre_install_actions:
1211
- |

tests/test.bats

Lines changed: 83 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,106 @@
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+
115
setup() {
216
set -eu -o pipefail
3-
export DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")" >/dev/null 2>&1 && pwd)/.."
4-
export TESTDIR=~/tmp/testvarnish
5-
mkdir -p $TESTDIR
6-
export PROJNAME=test-varnish
17+
18+
# Override this variable for your add-on:
19+
export GITHUB_REPO=ddev/ddev-varnish
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)
731
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
934
cd "${TESTDIR}"
10-
ddev config --project-name=${PROJNAME} --additional-hostnames=extrahostname --additional-fqdns=extrafqdn.ddev.site --omit-containers=db
35+
36+
run ddev config --project-name="${PROJNAME}" --project-tld=ddev.site --additional-hostnames=extrahostname --additional-fqdns=extrafqdn.ddev.site
37+
assert_success
38+
1139
printf "<?php\nphpinfo();\n" >index.php
12-
ddev start -y >/dev/null
13-
}
40+
assert_file_exists index.php
1441

15-
teardown() {
16-
set -eu -o pipefail
17-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
18-
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1
19-
[ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR}
42+
run ddev start -y
43+
assert_success
2044
}
2145

22-
@test "install from directory" {
23-
set -eu -o pipefail
24-
cd ${TESTDIR}
25-
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
26-
ddev add-on get ${DIR} >/dev/null
27-
ddev restart >/dev/null 2>&1
28-
for url in http://${PROJNAME}.ddev.site/ http://extrahostname.ddev.site/ http://extrafqdn.ddev.site/ https://${PROJNAME}.ddev.site/ https://extrahostname.ddev.site/ https://extrafqdn.ddev.site/ ; do
46+
health_checks() {
47+
for url in http://${PROJNAME}.ddev.site:${ROUTER_HTTP_PORT}/ http://extrahostname.ddev.site:${ROUTER_HTTP_PORT}/ http://extrafqdn.ddev.site:${ROUTER_HTTP_PORT}/ https://${PROJNAME}.ddev.site:${ROUTER_HTTPS_PORT}/ https://extrahostname.ddev.site:${ROUTER_HTTPS_PORT}/ https://extrafqdn.ddev.site:${ROUTER_HTTPS_PORT}/ ; do
2948
# It's "Via:" with http and "via:" with https. Tell me why.
3049
echo "# test $url for via:.*varnish header" >&3
31-
curl -sI $url | grep -i "Via:.*varnish" >/dev/null || (echo "# varnish headers not shown for $url" >&3 && exit 1);
50+
curl -sfI $url | grep -i "Via:.*varnish" >/dev/null || (echo "# varnish headers not shown for $url" >&3 && exit 1);
3251
echo "# test $url for phpinfo content" >&3
33-
curl -s $url | grep "allow_url_fopen" >/dev/null || (echo "# phpinfo information not shown in curl for $url" >&3 && exit 1);
52+
curl -sf $url | grep "allow_url_fopen" >/dev/null || (echo "# phpinfo information not shown in curl for $url" >&3 && exit 1);
3453
done
35-
for url in http://novarnish.${PROJNAME}.ddev.site/ http://novarnish.extrahostname.ddev.site/ http://novarnish.extrafqdn.ddev.site/ https://novarnish.${PROJNAME}.ddev.site/ https://novarnish.extrahostname.ddev.site/ https://novarnish.extrafqdn.ddev.site/ ; do
54+
55+
for url in http://novarnish.${PROJNAME}.ddev.site:${ROUTER_HTTP_PORT}/ http://novarnish.extrahostname.ddev.site:${ROUTER_HTTP_PORT}/ http://novarnish.extrafqdn.ddev.site:${ROUTER_HTTP_PORT}/ https://novarnish.${PROJNAME}.ddev.site:${ROUTER_HTTPS_PORT}/ https://novarnish.extrahostname.ddev.site:${ROUTER_HTTPS_PORT}/ https://novarnish.extrafqdn.ddev.site:${ROUTER_HTTPS_PORT}/ ; do
3656
echo "# test $url for phpinfo content" >&3
37-
curl -s $url | grep "allow_url_fopen" >/dev/null || (echo "# phpinfo information not shown in curl for $url" >&3 && exit 1);
57+
curl -sf $url | grep "allow_url_fopen" >/dev/null || (echo "# phpinfo information not shown in curl for $url" >&3 && exit 1);
3858
done
39-
echo "# test http://${PROJNAME}.ddev.site:8025 for http novarnish redirect" >&3
40-
curl -sI "http://${PROJNAME}.ddev.site:8025" | grep -i "http://novarnish.${PROJNAME}.ddev.site:8025/" >/dev/null || (echo "# http://${PROJNAME}.ddev.site:8025 did not redirect" >&3 && exit 1);
41-
echo "# test https://${PROJNAME}.ddev.site:8026 for https novarnish redirect" >&3
42-
curl -sI "https://${PROJNAME}.ddev.site:8026" | grep -i "https://novarnish.${PROJNAME}.ddev.site:8026/" >/dev/null || (echo "# https://${PROJNAME}.ddev.site:8026 did not redirect" >&3 && exit 1);
59+
60+
echo "# test http://${PROJNAME}.ddev.site:${MAILPIT_HTTP_PORT}/ for http novarnish redirect" >&3
61+
curl -sfI "http://${PROJNAME}.ddev.site:${MAILPIT_HTTP_PORT}/" | grep -i "http://novarnish.${PROJNAME}.ddev.site:${MAILPIT_HTTP_PORT}/" >/dev/null || (echo "# http://${PROJNAME}.ddev.site:${MAILPIT_HTTP_PORT} did not redirect" >&3 && exit 1);
62+
echo "# test https://${PROJNAME}.ddev.site:${MAILPIT_HTTPS_PORT}/ for https novarnish redirect" >&3
63+
curl -sfI "https://${PROJNAME}.ddev.site:${MAILPIT_HTTPS_PORT}/" | grep -i "https://novarnish.${PROJNAME}.ddev.site:${MAILPIT_HTTPS_PORT}/" >/dev/null || (echo "# https://${PROJNAME}.ddev.site:${MAILPIT_HTTPS_PORT} did not redirect" >&3 && exit 1);
4364
}
4465

45-
@test "install from directory with nonstandard port" {
66+
teardown() {
4667
set -eu -o pipefail
47-
cd ${TESTDIR}
48-
ddev config --router-http-port 8080 --router-https-port 8443 --mailpit-http-port 18025 --mailpit-https-port 18026
49-
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
50-
ddev add-on get ${DIR} >/dev/null
51-
ddev restart >/dev/null 2>&1
52-
for url in http://${PROJNAME}.ddev.site:8080/ http://extrahostname.ddev.site:8080/ http://extrafqdn.ddev.site:8080/ https://${PROJNAME}.ddev.site:8443/ https://extrahostname.ddev.site:8443/ https://extrafqdn.ddev.site:8443/ ; do
53-
# It's "Via:" with http and "via:" with https. Tell me why.
54-
echo "# test $url for via:.*varnish header" >&3
55-
curl -sI $url | grep -i "Via:.*varnish" >/dev/null || (echo "# varnish headers not shown for $url" >&3 && exit 1);
56-
echo "# test $url for phpinfo content" >&3
57-
curl -s $url | grep "allow_url_fopen" >/dev/null || (echo "# phpinfo information not shown in curl for $url" >&3 && exit 1);
58-
done
59-
for url in http://novarnish.${PROJNAME}.ddev.site:8080/ http://novarnish.extrahostname.ddev.site:8080/ http://novarnish.extrafqdn.ddev.site:8080/ https://novarnish.${PROJNAME}.ddev.site:8443/ https://novarnish.extrahostname.ddev.site:8443/ https://novarnish.extrafqdn.ddev.site:8443/ ; do
60-
echo "# test $url for phpinfo content" >&3
61-
curl -s $url | grep "allow_url_fopen" >/dev/null || (echo "# phpinfo information not shown in curl for $url" >&3 && exit 1);
62-
done
63-
echo "# test http://${PROJNAME}.ddev.site:18025 for http novarnish redirect" >&3
64-
curl -sI "http://${PROJNAME}.ddev.site:18025" | grep -i "http://novarnish.${PROJNAME}.ddev.site:18025/" >/dev/null || (echo "# http://${PROJNAME}.ddev.site:18025 did not redirect" >&3 && exit 1);
65-
echo "# test https://${PROJNAME}.ddev.site:18026 for https novarnish redirect" >&3
66-
curl -sI "https://${PROJNAME}.ddev.site:18026" | grep -i "https://novarnish.${PROJNAME}.ddev.site:18026/" >/dev/null || (echo "# https://${PROJNAME}.ddev.site:18026 did not redirect" >&3 && exit 1);
68+
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1
69+
[ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR}
70+
}
71+
72+
@test "install from directory" {
73+
set -eu -o pipefail
74+
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3
75+
run ddev add-on get "${DIR}"
76+
assert_success
77+
run ddev restart -y
78+
assert_success
79+
export ROUTER_HTTP_PORT=80 ROUTER_HTTPS_PORT=443 MAILPIT_HTTP_PORT=8025 MAILPIT_HTTPS_PORT=8026
80+
health_checks
6781
}
6882

6983
# bats test_tags=release
7084
@test "install from release" {
7185
set -eu -o pipefail
72-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
73-
echo "# ddev add-on get ddev/ddev-varnish with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
74-
ddev add-on get ddev/ddev-varnish >/dev/null
75-
ddev restart >/dev/null 2>&1
76-
for url in http://${PROJNAME}.ddev.site/ http://extrahostname.ddev.site/ http://extrafqdn.ddev.site/ https://${PROJNAME}.ddev.site/ https://extrahostname.ddev.site/ https://extrafqdn.ddev.site/ ; do
77-
# It's "Via:" with http and "via:" with https. Tell me why.
78-
echo "# test $url for via:.*varnish header" >&3
79-
curl -sI $url | grep -i "Via:.*varnish" >/dev/null || (echo "# varnish headers not shown for $url" >&3 && exit 1);
80-
echo "# test $url for phpinfo content" >&3
81-
curl -s $url | grep "allow_url_fopen" >/dev/null || (echo "# phpinfo information not shown in curl for $url" >&3 && exit 1);
82-
done
83-
for url in http://novarnish.${PROJNAME}.ddev.site/ http://novarnish.extrahostname.ddev.site/ http://novarnish.extrafqdn.ddev.site/ https://novarnish.${PROJNAME}.ddev.site/ https://novarnish.extrahostname.ddev.site/ https://novarnish.extrafqdn.ddev.site/ ; do
84-
echo "# test $url for phpinfo content" >&3
85-
curl -s $url | grep "allow_url_fopen" >/dev/null || (echo "# phpinfo information not shown in curl for $url" >&3 && exit 1);
86-
done
87-
echo "# test http://${PROJNAME}.ddev.site:8025 for http novarnish redirect" >&3
88-
curl -sI "http://${PROJNAME}.ddev.site:8025" | grep -i "http://novarnish.${PROJNAME}.ddev.site:8025/" >/dev/null || (echo "# http://${PROJNAME}.ddev.site:8025 did not redirect" >&3 && exit 1);
89-
echo "# test https://${PROJNAME}.ddev.site:8026 for https novarnish redirect" >&3
90-
curl -sI "https://${PROJNAME}.ddev.site:8026" | grep -i "https://novarnish.${PROJNAME}.ddev.site:8026/" >/dev/null || (echo "# https://${PROJNAME}.ddev.site:8026 did not redirect" >&3 && exit 1);
86+
echo "# ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $(pwd)" >&3
87+
run ddev add-on get "${GITHUB_REPO}"
88+
assert_success
89+
run ddev restart -y
90+
assert_success
91+
export ROUTER_HTTP_PORT=80 ROUTER_HTTPS_PORT=443 MAILPIT_HTTP_PORT=8025 MAILPIT_HTTPS_PORT=8026
92+
health_checks
93+
}
94+
95+
@test "install from directory with nonstandard port" {
96+
set -eu -o pipefail
97+
run ddev config --router-http-port=8080 --router-https-port=8443 --mailpit-http-port=18025 --mailpit-https-port=18026
98+
assert_success
99+
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3
100+
run ddev add-on get "${DIR}"
101+
assert_success
102+
run ddev restart -y
103+
assert_success
104+
export ROUTER_HTTP_PORT=8080 ROUTER_HTTPS_PORT=8443 MAILPIT_HTTP_PORT=18025 MAILPIT_HTTPS_PORT=18026
105+
health_checks
91106
}

0 commit comments

Comments
 (0)