|
| 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 | + |
1 | 15 | setup() { |
2 | 16 | set -eu -o pipefail |
3 | | - export DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )/.." |
4 | | - export TESTDIR=~/tmp/ddev-drupal9-solr-test |
5 | | - mkdir -p $TESTDIR |
6 | | - export PROJNAME=solrtest |
7 | | - export DDEV_NON_INTERACTIVE=true |
8 | | - ddev delete -Oy ${PROJNAME} >/dev/null || true |
| 17 | + |
| 18 | + # Override this variable for your add-on: |
| 19 | + export GITHUB_REPO=ddev/ddev-drupal-solr |
| 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 |
9 | 34 | cd "${TESTDIR}" |
10 | | - ddev config --project-name=${PROJNAME} --project-type=drupal9 --docroot=web --create-docroot --php-version=8.1 |
11 | | - echo "# Setting up Drupal project via composer ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
12 | | - ddev composer create -y -n --no-install drupal/recommended-project:^9 >/dev/null |
| 35 | + run ddev config --project-name="${PROJNAME}" --project-tld=ddev.site --project-type=drupal9 --docroot=web --php-version=8.1 |
| 36 | + assert_success |
| 37 | + run ddev start -y |
| 38 | + assert_success |
| 39 | + |
| 40 | + echo "# Setting up Drupal project via composer ${PROJNAME} in $(pwd)" >&3 |
| 41 | + ddev composer create-project -n --no-install drupal/recommended-project:^9 >/dev/null |
13 | 42 | ddev composer require -n --no-install drush/drush:* drupal/search_api_solr >/dev/null |
14 | 43 | ddev composer config --append -- allow-plugins true |
15 | 44 | ddev composer install >/dev/null |
16 | | - ddev import-db --src=${DIR}/tests/testdata/db.sql.gz >/dev/null |
| 45 | + ddev import-db --file=${DIR}/tests/testdata/db.sql.gz >/dev/null |
| 46 | +} |
| 47 | + |
| 48 | +health_checks() { |
| 49 | + run ddev exec 'drush sapi-sl --format=json | jq -r .default_solr_server.status' |
| 50 | + assert_success |
| 51 | + assert_output "enabled" |
| 52 | + |
| 53 | + run ddev drush search-api-solr:reload default_solr_server |
| 54 | + assert_success |
17 | 55 | } |
18 | 56 |
|
19 | 57 | teardown() { |
20 | | - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
21 | | - ddev delete -Oy ${PROJNAME} >/dev/null |
| 58 | + set -eu -o pipefail |
| 59 | + ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 |
22 | 60 | [ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR} |
23 | 61 | } |
24 | 62 |
|
25 | 63 | @test "install from directory" { |
26 | 64 | set -eu -o pipefail |
27 | | - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
28 | | - echo "# ddev get ddev/ddev-drupal9-solr with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
29 | | - ddev get ${DIR} >/dev/null |
30 | | - ddev restart >/dev/null |
31 | | - status=$(ddev exec 'drush sapi-sl --format=json | jq -r .default_solr_server.status') |
32 | | - [ "${status}" = "enabled" ] |
33 | | - ddev drush search-api-solr:reload default_solr_server >/dev/null |
| 65 | + echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3 |
| 66 | + run ddev add-on get "${DIR}" |
| 67 | + assert_success |
| 68 | + run ddev restart -y |
| 69 | + assert_success |
| 70 | + health_checks |
34 | 71 | } |
35 | 72 |
|
| 73 | +# bats test_tags=release |
36 | 74 | @test "install from release" { |
37 | 75 | set -eu -o pipefail |
38 | | - cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 ) |
39 | | - echo "# ddev get ddev/ddev-drupal9-solr with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
40 | | - ddev get ddev/ddev-drupal9-solr >/dev/null |
41 | | - ddev restart >/dev/null |
42 | | - status=$(ddev exec 'drush sapi-sl --format=json | jq -r .default_solr_server.status') |
43 | | - [ "${status}" = "enabled" ] |
44 | | - ddev drush search-api-solr:reload default_solr_server |
| 76 | + echo "# ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $(pwd)" >&3 |
| 77 | + run ddev add-on get "${GITHUB_REPO}" |
| 78 | + assert_success |
| 79 | + run ddev restart -y |
| 80 | + assert_success |
| 81 | + health_checks |
45 | 82 | } |
0 commit comments