diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 83d86aa..4834611 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -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 }} \ No newline at end of file diff --git a/install.yaml b/install.yaml index 8a2ced9..2660edf 100644 --- a/install.yaml +++ b/install.yaml @@ -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'" - \ No newline at end of file diff --git a/tests/test.bats b/tests/test.bats index 0e709f5..05de704 100644 --- a/tests/test.bats +++ b/tests/test.bats @@ -1,21 +1,38 @@ +#!/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() { @@ -23,21 +40,16 @@ check_build_mkdocs() { 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 } \ No newline at end of file