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
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
1341teardown () {
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
2053health_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