Skip to content

Commit e08d469

Browse files
test(ci): Add specific action for debug
1 parent f28e236 commit e08d469

File tree

4 files changed

+132
-16
lines changed

4 files changed

+132
-16
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: tests
2+
on:
3+
pull_request:
4+
push:
5+
branches: [ main ]
6+
7+
schedule:
8+
- cron: '44 08 * * *'
9+
10+
workflow_dispatch:
11+
inputs:
12+
debug_enabled:
13+
type: boolean
14+
description: Debug with tmate
15+
required: false
16+
default: false
17+
18+
defaults:
19+
run:
20+
shell: bash
21+
22+
env:
23+
NIGHTLY_DDEV_PR_URL: "https://nightly.link/ddev/ddev/actions/runs/1720215802/ddev-linux-amd64.zip"
24+
# Allow ddev get to use a github token to prevent rate limiting by tests
25+
DDEV_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26+
27+
jobs:
28+
tests:
29+
defaults:
30+
run:
31+
shell: bash
32+
33+
strategy:
34+
matrix:
35+
ddev_version: [stable, HEAD, stable, HEAD, stable, HEAD]
36+
fail-fast: false
37+
38+
runs-on: ubuntu-20.04
39+
40+
steps:
41+
- uses: actions/checkout@v3
42+
- name: Set up Homebrew
43+
id: set-up-homebrew
44+
uses: Homebrew/actions/setup-homebrew@master
45+
- name: Environment setup
46+
run: |
47+
brew install bats-core mkcert
48+
mkcert -install
49+
50+
- name: Use ddev stable
51+
if: matrix.ddev_version == 'stable'
52+
run: brew install ddev/ddev/ddev
53+
54+
- name: Use ddev edge
55+
if: matrix.ddev_version == 'edge'
56+
run: brew install ddev/ddev-edge/ddev
57+
58+
- name: Use ddev HEAD
59+
if: matrix.ddev_version == 'HEAD'
60+
run: brew install --HEAD ddev/ddev/ddev
61+
62+
- name: Use ddev PR
63+
if: matrix.ddev_version == 'PR'
64+
run: |
65+
curl -sSL -o ddev_linux.zip ${NIGHTLY_DDEV_PR_URL}
66+
unzip ddev_linux.zip
67+
mv ddev /usr/local/bin/ddev && chmod +x /usr/local/bin/ddev
68+
69+
- name: Download docker images
70+
run: ddev debug download-images >/dev/null
71+
72+
- name: tmate debugging session
73+
uses: mxschmitt/action-tmate@v3
74+
with:
75+
limit-access-to-actor: true
76+
github-token: ${{ secrets.GITHUB_TOKEN }}
77+
if: github.event.inputs.debug_enabled == 'true'
78+
79+
- name: tests
80+
run: bats tests/debug-ci-test.bats
81+
82+
- name: tmate debugging session on failure
83+
uses: mxschmitt/action-tmate@v3
84+
with:
85+
limit-access-to-actor: true
86+
github-token: ${{ secrets.GITHUB_TOKEN }}
87+
timeout-minutes: 90
88+
if: ${{ failure() }}

.github/workflows/tests.yml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches: [ main ]
66

77
schedule:
8-
- cron: '44 */2 * * *'
8+
- cron: '44 08 * * *'
99

1010
workflow_dispatch:
1111
inputs:
@@ -78,15 +78,7 @@ jobs:
7878
if: github.event.inputs.debug_enabled == 'true'
7979

8080
- name: tests
81-
run: bats tests
82-
83-
- name: tmate debugging session on failure
84-
uses: mxschmitt/action-tmate@v3
85-
with:
86-
limit-access-to-actor: true
87-
github-token: ${{ secrets.GITHUB_TOKEN }}
88-
timeout-minutes: 90
89-
if: ${{ failure() }}
81+
run: bats tests/test.bats
9082

9183
# keepalive-workflow adds a dummy commit if there's no other action here, keeps
9284
# GitHub from turning off tests after 60 days

tests/debug-ci-test.bats

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
setup() {
2+
set -eu -o pipefail
3+
export DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )/.."
4+
export TESTDIR=~/tmp/testmongo
5+
mkdir -p $TESTDIR
6+
export PROJNAME=testmongo
7+
export DDEV_NON_INTERACTIVE=true
8+
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 || true
9+
cd "${TESTDIR}"
10+
ddev config --project-name=${PROJNAME} >/dev/null
11+
printf "<?php\nphpinfo();\n" >index.php
12+
ddev start -y >/dev/null
13+
}
14+
15+
16+
@test "install from directory" {
17+
set -eu -o pipefail
18+
cd ${TESTDIR}
19+
echo "# ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
20+
ddev get ${DIR} >/dev/null
21+
ddev restart >/dev/null
22+
curl -sI ${PROJNAME}.ddev.site:9091/db/admin/expArr/system.users | grep "HTTP/1.1 200 OK"
23+
out=$(curl -s ${PROJNAME}.ddev.site:9091/db/admin/expArr/system.users | jq -r ".[0].user")
24+
[ "${out}" = "db" ]
25+
(ddev exec php -i | grep mongodb.debug) || (echo "# php mongodb extension not found" >&3 || exit 1)
26+
# Test mongosh
27+
result=$(ddev mongosh "mongodb://db:db@mongo:27017/test?authSource=admin" --quiet --eval '"printjson(db.getUsers())"' --json | grep "ok" | sed 's/: 1/ /g' | sed 's/ //g' | tr ' \n' '#')
28+
if [[ $result == "ok#" ]]
29+
then
30+
echo "# Mongosh OK" >&3
31+
else
32+
echo "# Mongosh KO"
33+
echo "$result"
34+
exit 1
35+
fi
36+
}

tests/test.bats

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ setup() {
1212
ddev start -y >/dev/null
1313
}
1414

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}
20-
#}
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}
20+
}
2121

2222
@test "install from directory" {
2323
set -eu -o pipefail

0 commit comments

Comments
 (0)