Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 33 additions & 9 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,62 @@
name: tests
on:
pull_request:
paths-ignore:
- "**.md"
push:
branches: [ main ]
branches:
- main
- 'tests**'
paths-ignore:
- "**.md"

schedule:
- cron: '25 08 * * *'
- cron: '32 01 * * 0'

# Manual trigger with optional debug using SSH.
# See https://github.com/mxschmitt/action-tmate
# This action is already included in ddev/github-action-add-on-test@v2.
workflow_dispatch:
inputs:
debug_enabled:
type: boolean
description: Debug with tmate
description: Debug with tmate (SSH access)
required: false
default: false

# This is required for "gautamkrishnar/keepalive-workflow"
permissions:
contents: write
contents: read

jobs:
# Job for code quality checks.
code_quality:
runs-on: ubuntu-latest
steps:
- name: "Check out code"
uses: actions/checkout@v3
- name: "ShellChecker"
uses: a5k-actions/shellchecker@v0
with:
severity: error

# Actual functional tests.
tests:
strategy:
matrix:
ddev_version: [stable, HEAD]
fail-fast: false

runs-on: ubuntu-latest

steps:
# Sets Bash in a strict fashion.
- name: Action Setup Bash
uses: release-engineers/action-setup-bash@v1

# Official DDEV action to test add-ons.
- uses: ddev/github-action-add-on-test@v2
with:
ddev_version: ${{ matrix.ddev_version }}
token: ${{ secrets.GITHUB_TOKEN }}
debug_enabled: ${{ github.event.inputs.debug_enabled }}
addon_repository: ${{ env.GITHUB_REPOSITORY }}
addon_ref: ${{ env.GITHUB_REF }}
debug_enabled: ${{ inputs.debug_enabled }}
addon_repository: ${{ github.repository }}
addon_ref: ${{ github.ref }}
3 changes: 1 addition & 2 deletions install.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,5 @@ post_install_actions:
- test -d ${DDEV_APPROOT}/docs || mkdir -p ${DDEV_APPROOT}/docs
- test -d ${DDEV_APPROOT}/docs/docs || mkdir -p ${DDEV_APPROOT}/docs/docs
- test -f ${DDEV_APPROOT}/docs/mkdocs.yml || cp docs/mkdocs.yml ${DDEV_APPROOT}/docs/mkdocs.yml
- test -f ${DDEV_APPROOT}/docs/docs/index.md || echo "## Welcome to Mkdocs" > ${DDEV_APPROOT}/docs/docs/index.md
- test -f ${DDEV_APPROOT}/docs/docs/index.md || echo "## Welcome to MkDocs" > ${DDEV_APPROOT}/docs/docs/index.md
- echo "Mkdocs install finished. Please restart ddev with 'ddev restart'"

50 changes: 31 additions & 19 deletions tests/test.bats
Original file line number Diff line number Diff line change
@@ -1,43 +1,55 @@
#!/usr/bin/env bats

# Standard DDEV add-on setup code taken from official DDEV add-ons.
setup() {
set -eu -o pipefail
export DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )/.."
export TESTDIR=~/tmp/test-mkdocs
mkdir -p $TESTDIR
export PROJNAME=test-mkdocs
export DDEV_NON_INTERACTIVE=true
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 || true
export GITHUB_REPO=Metadrop/ddev-aljibe-assistant
TEST_BREW_PREFIX="$(brew --prefix 2>/dev/null || true)"
export BATS_LIB_PATH="${BATS_LIB_PATH}:${TEST_BREW_PREFIX}/lib:/usr/lib/bats"
bats_load_library bats-assert
bats_load_library bats-file
bats_load_library bats-support

# shellcheck disable=SC2155
export DIR="$(cd "$(dirname "${BATS_TEST_FILENAME}")/.." >/dev/null 2>&1 && pwd)"
# shellcheck disable=SC2155
export PROJNAME="test-$(basename "${GITHUB_REPO}")"

mkdir -p ~/tmp
# shellcheck disable=SC2155
export TESTDIR=$(mktemp -d ~/tmp/${PROJNAME}.XXXXXX)
export DDEV_NONINTERACTIVE=true
export DDEV_NO_INSTRUMENTATION=true
ddev delete -Oy "${PROJNAME}" >/dev/null 2>&1 || true

cd "${TESTDIR}"
ddev config --project-name=${PROJNAME}
ddev get metadrop/ddev-aljibe
ddev start -y >/dev/null
ddev aljibe-assistant --auto
run ddev config --project-name="${PROJNAME}" --project-tld=ddev.site
assert_success
run ddev start -y
assert_success
}

health_checks() {
echo "Checking mkdocs health" >&3
ddev exec wget http://mkdocs:8000 -q -O - | grep Welcome | grep -m1 "Welcome to Mkdocs"
run ddev exec wget http://mkdocs:8000 -q -O -
assert_output --partial "Welcome to MkDocs"
}

check_build_mkdocs() {
echo "Checking mkdocs build" >&3
ddev mkdocs build
}

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

@test "Install from folder" {
set -eu -o pipefail
cd ${TESTDIR}
echo "# ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
ddev get ${DIR}
echo "Installed add-on from directory, restarting ddev" >&3
ddev restart
ddev restart -y
echo "Testing mkdocs" >&3

health_checks

check_build_mkdocs
}