|
| 1 | +setup() { |
| 2 | + set -eu -o pipefail |
| 3 | + DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )/.." |
| 4 | + export DIR |
| 5 | + export TESTDIR=~/tmp/drupal-xb-dev |
| 6 | + mkdir -p $TESTDIR |
| 7 | + export PROJNAME=drupal-xb-dev |
| 8 | + export DDEV_NONINTERACTIVE=true |
| 9 | + ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 || true |
| 10 | + cd "${TESTDIR}" |
| 11 | + ddev config --project-name=${PROJNAME} |
| 12 | + ddev start -y >/dev/null |
| 13 | +} |
| 14 | + |
| 15 | +check_commands_installed() { |
| 16 | + # Get the available commands. |
| 17 | + ddev_help_output=$(ddev help) |
| 18 | + # Find command files in the add-on. |
| 19 | + cd ${TESTDIR} |
| 20 | + tmp_file=$(mktemp) |
| 21 | + find "$GITHUB_WORKSPACE/commands" -name 'xb-*' -exec basename {} \; > "$tmp_file" |
| 22 | + # Check that all the command files got copied to the project upon installation. |
| 23 | + errors="" |
| 24 | + while read -r command_name; do |
| 25 | + # Skip xb-cypress since it's expected not to be installed on CI. |
| 26 | + if [ "$command_name" = "xb-cypress" ]; then |
| 27 | + continue |
| 28 | + fi |
| 29 | + if ! echo "$ddev_help_output" | grep -q "$command_name"; then |
| 30 | + errors="${errors}Error: ${command_name} is not installed.\n" |
| 31 | + fi |
| 32 | + done < "$tmp_file" |
| 33 | + rm -f "$tmp_file" |
| 34 | + # Display errors and fail, if any. |
| 35 | + if [ -n "$errors" ]; then |
| 36 | + printf "%b" "$errors" |
| 37 | + return 1 |
| 38 | + fi |
| 39 | + echo "All commands were installed." |
| 40 | +} |
| 41 | + |
| 42 | +health_checks() { |
| 43 | + check_commands_installed |
| 44 | + ddev exec "curl -s https://localhost:443/" |
| 45 | +} |
| 46 | + |
| 47 | +teardown() { |
| 48 | + set -eu -o pipefail |
| 49 | + cd ${TESTDIR} || ( printf "unable to cd to %s\n" ${TESTDIR} && exit 1 ) |
| 50 | + ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 |
| 51 | + [ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR} |
| 52 | +} |
| 53 | + |
| 54 | +@test "install from directory" { |
| 55 | + set -eu -o pipefail |
| 56 | + cd ${TESTDIR} |
| 57 | + echo "# ddev add-on get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
| 58 | + ddev add-on get "${DIR}" |
| 59 | + ddev restart |
| 60 | + health_checks |
| 61 | +} |
| 62 | + |
| 63 | +# bats test_tags=release |
| 64 | +@test "install from release" { |
| 65 | + set -eu -o pipefail |
| 66 | + cd ${TESTDIR} || ( printf "unable to cd to %s\n" ${TESTDIR} && exit 1 ) |
| 67 | + echo "# ddev add-on get TravisCarden/ddev-drupal-xb-dev with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3 |
| 68 | + ddev add-on get TravisCarden/ddev-drupal-xb-dev |
| 69 | + ddev restart >/dev/null |
| 70 | + health_checks |
| 71 | +} |
0 commit comments