Skip to content

Commit 78efa96

Browse files
authored
test: sync bats tests with upstream (#72)
* test: sync bats tests with upstream * Update ES module environment test
1 parent 6c437b8 commit 78efa96

File tree

2 files changed

+91
-55
lines changed

2 files changed

+91
-55
lines changed

.github/workflows/tests.yml

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,21 @@ on:
55
branches: [ main ]
66

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

1010
workflow_dispatch:
1111
inputs:
1212
debug_enabled:
13-
description: 'Debug with tmate set "debug_enabled"'
13+
type: boolean
14+
description: Debug with tmate
1415
required: false
15-
default: "false"
16-
env:
17-
# Allow ddev get to use a github token to prevent rate limiting by tests
18-
DDEV_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16+
default: false
1917

18+
concurrency:
19+
group: ${{ github.workflow }}-${{ github.ref }}
20+
cancel-in-progress: true
2021

21-
# Required permissions for keep-alive, used by ddev/github-action-add-on-test
22+
# This is required for "gautamkrishnar/keepalive-workflow", see "ddev/github-action-add-on-test"
2223
permissions:
2324
actions: write
2425

@@ -32,14 +33,14 @@ jobs:
3233
runs-on: ubuntu-latest
3334

3435
steps:
35-
- name: Environment setup
36-
run: |
37-
sudo apt-get update >/dev/null && sudo apt-get install -y expect >/dev/null
38-
39-
- uses: ddev/github-action-add-on-test@v2
40-
with:
41-
ddev_version: ${{ matrix.ddev_version }}
42-
token: ${{ secrets.GITHUB_TOKEN }}
43-
debug_enabled: ${{ github.event.inputs.debug_enabled }}
44-
addon_repository: ${{ env.GITHUB_REPOSITORY }}
45-
addon_ref: ${{ env.GITHUB_REF }}
36+
- name: Environment setup
37+
run: |
38+
(sudo apt-get update >/dev/null || true) && sudo apt-get install -y expect >/dev/null
39+
40+
- uses: ddev/github-action-add-on-test@v2
41+
with:
42+
ddev_version: ${{ matrix.ddev_version }}
43+
token: ${{ secrets.GITHUB_TOKEN }}
44+
debug_enabled: ${{ github.event.inputs.debug_enabled }}
45+
addon_repository: ${{ env.GITHUB_REPOSITORY }}
46+
addon_ref: ${{ env.GITHUB_REF }}

tests/test.bats

Lines changed: 72 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,115 @@
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-
# Fail early if old ddev is installed
5-
ddev debug capabilities | grep multiple-dockerfiles >/dev/null || exit 3
18+
# Override this variable for your add-on:
19+
export GITHUB_REPO=ddev/ddev-browsersync
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
634

7-
export DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )/.."
8-
export TESTDIR=~/tmp/test-browsersync
9-
mkdir -p "${TESTDIR}"
10-
export PROJNAME=test-browsersync
11-
export DDEV_NON_INTERACTIVE=true
12-
ddev delete -Oy ${PROJNAME} >/dev/null || true
35+
# Copy script
1336
cp tests/run-ddev-browsersync "${TESTDIR}"
37+
1438
cd "${TESTDIR}"
15-
ddev config --project-name=${PROJNAME}
39+
run ddev config --project-name="${PROJNAME}" --project-tld=ddev.site
40+
assert_success
1641

1742
# Add simple page to test against.
1843
echo "<html><head></head><body>this is a test</body>" >index.html
1944

20-
ddev start -y
45+
run ddev start -y
46+
assert_success
47+
}
48+
49+
health_checks() {
50+
run curl -sfI https://${PROJNAME}.ddev.site:3000
51+
assert_success
52+
assert_output --partial "HTTP/2 200"
2153

22-
CURLCMD="curl -s --fail"
23-
# I can't currently get curl to trust mkcert CA on macOS
24-
if [[ "$OSTYPE" == "darwin"* ]]; then CURLCMD="curl -s -k --fail"; fi
54+
run curl -sf https://${PROJNAME}.ddev.site:3000
55+
assert_success
56+
assert_output --partial "this is a test"
2557
}
2658

2759
teardown() {
2860
set -eu -o pipefail
29-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
30-
ddev delete -Oy ${PROJNAME}
61+
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1
3162
[ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR}
3263
}
3364

34-
healthcheck() {
35-
${CURLCMD} https://${PROJNAME}.ddev.site:3000 | grep "this is a test"
36-
}
37-
3865
@test "install from directory" {
3966
set -eu -o pipefail
40-
cd ${TESTDIR}
41-
echo "# ddev addon get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
42-
ddev addon get ${DIR}
43-
ddev restart
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+
4475
./run-ddev-browsersync &
4576
sleep 5
4677

47-
# Check service works
48-
healthcheck
78+
health_checks
4979
}
5080

81+
# bats test_tags=release
5182
@test "install from release" {
5283
set -eu -o pipefail
53-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
54-
echo "# ddev addon get ddev/ddev-browsersync with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
55-
ddev addon get ddev/ddev-browsersync
56-
ddev restart
84+
85+
echo "# ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $(pwd)" >&3
86+
run ddev add-on get "${GITHUB_REPO}"
87+
assert_success
88+
89+
run ddev restart -y
90+
assert_success
91+
5792
./run-ddev-browsersync &
5893
sleep 5
5994

60-
# Check service works
61-
healthcheck
95+
health_checks
6296
}
6397

6498
@test "ES module environment" {
6599
set -eu -o pipefail
66-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
67100

68101
# Setup NPM environment
69102
cp "${DIR}/tests/package.json" "${TESTDIR}"
70103

71-
echo "# ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
72-
ddev addon get ${DIR}
104+
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3
105+
run ddev add-on get "${DIR}"
106+
assert_success
107+
108+
run ddev restart -y
109+
assert_success
73110

74-
ddev restart
75111
./run-ddev-browsersync &
76112
sleep 5
77113

78-
# Check service works
79-
healthcheck
114+
health_checks
80115
}

0 commit comments

Comments
 (0)