Skip to content

Commit 5aa630a

Browse files
authored
test: update bats (#8)
1 parent b525ca8 commit 5aa630a

File tree

2 files changed

+52
-21
lines changed

2 files changed

+52
-21
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ concurrency:
1919
group: ${{ github.workflow }}-${{ github.ref }}
2020
cancel-in-progress: true
2121

22-
# This is required for "gautamkrishnar/keepalive-workflow", see "ddev/github-action-add-on-test"
2322
permissions:
24-
actions: write
23+
contents: read
2524

2625
jobs:
2726
tests:

tests/test.bats

Lines changed: 51 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,76 @@
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/test-python2
5-
mkdir -p $TESTDIR
6-
export PROJNAME=test-python2
17+
18+
# Override this variable for your add-on:
19+
export GITHUB_REPO=stasadev/ddev-python2
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}
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
1239
}
1340

1441
health_checks() {
15-
ddev exec "python -V 2>&1 | grep 'Python 2.7.18'"
16-
ddev exec "python2.7 -V 2>&1 | grep 'Python 2.7.18'"
42+
run ddev exec python -V
43+
assert_success
44+
assert_output "Python 2.7.18"
45+
46+
run ddev exec python2.7 -V
47+
assert_success
48+
assert_output "Python 2.7.18"
1749
}
1850

1951
teardown() {
2052
set -eu -o pipefail
21-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
2253
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1
2354
[ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR}
2455
}
2556

2657
@test "install from directory" {
2758
set -eu -o pipefail
28-
cd ${TESTDIR}
29-
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
30-
ddev add-on get ${DIR}
31-
ddev restart
59+
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3
60+
run ddev add-on get "${DIR}"
61+
assert_success
62+
run ddev restart -y
63+
assert_success
3264
health_checks
3365
}
3466

3567
# bats test_tags=release
3668
@test "install from release" {
3769
set -eu -o pipefail
38-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
39-
echo "# ddev add-on get stasadev/ddev-python2 with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
40-
ddev add-on get stasadev/ddev-python2
41-
ddev restart >/dev/null
70+
echo "# ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $(pwd)" >&3
71+
run ddev add-on get "${GITHUB_REPO}"
72+
assert_success
73+
run ddev restart -y
74+
assert_success
4275
health_checks
4376
}
44-

0 commit comments

Comments
 (0)