Skip to content

Commit dd46bd4

Browse files
authored
refactor: refresh tests (#22)
1 parent 1472fa0 commit dd46bd4

File tree

1 file changed

+83
-35
lines changed

1 file changed

+83
-35
lines changed

tests/test.bats

Lines changed: 83 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,53 @@
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
317

4-
export DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")" >/dev/null 2>&1 && pwd)/.."
5-
export TESTDIR=~/tmp/test-laravel-queue
6-
mkdir -p $TESTDIR
7-
export PROJNAME=test-laravel-queue
8-
export DDEV_NON_INTERACTIVE=true
9-
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 || true
18+
# Override this variable for your add-on:
19+
export GITHUB_REPO=tyler36/ddev-laravel-queue
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
1034
cd "${TESTDIR}"
35+
run ddev config --project-name="${PROJNAME}" --project-tld=ddev.site
36+
assert_success
37+
run ddev start -y
38+
assert_success
1139
}
1240

1341
teardown() {
1442
set -eu -o pipefail
15-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
16-
ddev delete -Oy ${PROJNAME}
17-
[ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR}
43+
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1
44+
# Persist TESTDIR if running inside GitHub Actions. Useful for uploading test result artifacts
45+
# See example at https://github.com/ddev/github-action-add-on-test#preserving-artifacts
46+
if [ -n "${GITHUB_ENV:-}" ]; then
47+
[ -e "${GITHUB_ENV:-}" ] && echo "TESTDIR=${HOME}/tmp/${PROJNAME}" >> "${GITHUB_ENV}"
48+
else
49+
[ "${TESTDIR}" != "" ] && rm -rf "${TESTDIR}"
50+
fi
1851
}
1952

2053
health_checks() {
@@ -46,35 +79,44 @@ queue_checks() {
4679
@test "install from directory" {
4780
set -eu -o pipefail
4881
cd ${TESTDIR}
49-
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
50-
ddev config --project-name=${PROJNAME}
51-
ddev start -y >/dev/null
52-
ddev add-on get ${DIR}
53-
ddev restart
82+
83+
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3
84+
run ddev add-on get "${DIR}"
85+
assert_success
86+
87+
run ddev restart -y
88+
assert_success
89+
5490
health_checks
5591
}
5692

57-
@test "it processes jobs in Lavarel 11" {
93+
@test "it processes jobs in Laravel" {
5894
set -eu -o pipefail
5995
cd ${TESTDIR}
6096
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
97+
6198
# Setup a Laravel project
62-
ddev config --project-type=laravel --docroot=public
63-
ddev composer create --prefer-dist laravel/laravel:^11
64-
ddev exec "php artisan key:generate"
65-
# Get addon and test
66-
ddev add-on get ${DIR}
67-
ddev restart
68-
69-
queue_checks
99+
run ddev config --project-type=laravel --docroot=public
100+
assert_success
101+
run ddev composer create --prefer-dist laravel/laravel
102+
assert_success
103+
run ddev exec "php artisan key:generate"
104+
assert_success
105+
106+
run ddev add-on get "${DIR}"
107+
assert_success
108+
109+
run ddev restart -y
110+
assert_success
111+
112+
health_checks
70113
}
71114

72115
@test "it cleans up files from pre-release versions" {
73116
set -eu -o pipefail
74117
cd ${TESTDIR}
75-
# echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
76-
ddev config --project-name=${PROJNAME}
77-
ddev start -y >/dev/null
118+
119+
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
78120

79121
# Create fake pre-release files
80122
files="
@@ -84,20 +126,24 @@ queue_checks() {
84126
for file in $files; do
85127
echo '#ddev-generated' > $file
86128
if grep -q -v '#ddev-generated' $file; then
87-
echo 'Fake prelease file should exist but does NOT.'
129+
echo 'Fake pre-release file should exist but does NOT.'
88130
exit 1
89131
fi
90132
done
91133

92134
# Install the current release of the addon, which should remove the pre-release files.
93-
ddev add-on get ${DIR}
94-
ddev restart
135+
run ddev add-on get "${DIR}"
136+
assert_success
137+
138+
run ddev restart -y
139+
assert_success
140+
95141
health_checks
96142

97143
# Check pre-release files were removed
98144
for file in $files; do
99145
if grep -q '#ddev-generated' $file; then
100-
echo 'Fake prelease file exists but should NOT.'
146+
echo 'Fake pre-release file exists but should NOT.'
101147
exit 1
102148
fi
103149
done
@@ -107,10 +153,12 @@ queue_checks() {
107153
@test "install from release" {
108154
set -eu -o pipefail
109155
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
110-
echo "# ddev add-on get tyler36/ddev-laravel-queue with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
111-
ddev config --project-name=${PROJNAME}
112-
ddev start -y >/dev/null
113-
ddev add-on get tyler36/ddev-laravel-queue
114-
ddev restart >/dev/null
156+
echo "# ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $(pwd)" >&3
157+
run ddev add-on get "${GITHUB_REPO}"
158+
assert_success
159+
160+
run ddev restart -y
161+
assert_success
162+
115163
health_checks
116164
}

0 commit comments

Comments
 (0)