From 41493bc514153e8221889c221266eb626eda6512 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 22 Nov 2019 23:10:01 +0100 Subject: [PATCH] Test against wordpress --- .github/workflows/ci-smoke-php-httpd.yml | 7 ++ .github/workflows/ci-smoke-versions.yml | 7 ++ .tests/Makefile | 3 + .tests/tests/framework-drupal.sh | 7 ++ .tests/tests/framework-wordpress.sh | 107 +++++++++++++++++++++++ .travis.yml | 1 + 6 files changed, 132 insertions(+) create mode 100755 .tests/tests/framework-wordpress.sh diff --git a/.github/workflows/ci-smoke-php-httpd.yml b/.github/workflows/ci-smoke-php-httpd.yml index fdad7fda..cb02ad3b 100644 --- a/.github/workflows/ci-smoke-php-httpd.yml +++ b/.github/workflows/ci-smoke-php-httpd.yml @@ -208,6 +208,13 @@ jobs: make test-smoke-framework-drupal if: success() || failure() + - name: "Test Framework: Wordpress" + shell: bash + run: | + cd .tests/ + make test-smoke-framework-wordpress + if: success() || failure() + # ------------------------------------------------------------ # Finish # ------------------------------------------------------------ diff --git a/.github/workflows/ci-smoke-versions.yml b/.github/workflows/ci-smoke-versions.yml index 0f14248a..44b79250 100644 --- a/.github/workflows/ci-smoke-versions.yml +++ b/.github/workflows/ci-smoke-versions.yml @@ -244,6 +244,13 @@ jobs: make test-smoke-framework-drupal if: success() || failure() + - name: "Test Framework: Wordpress" + shell: bash + run: | + cd .tests/ + make test-smoke-framework-wordpress + if: success() || failure() + # ------------------------------------------------------------ # Finish # ------------------------------------------------------------ diff --git a/.tests/Makefile b/.tests/Makefile index 7fd04e38..658de61a 100644 --- a/.tests/Makefile +++ b/.tests/Makefile @@ -158,6 +158,9 @@ test-smoke-framework-cakephp: test-smoke-framework-drupal: $(PWD)/tests/framework-drupal.sh +test-smoke-framework-wordpress: + $(PWD)/tests/framework-wordpress.sh + # ------------------------------------------------------------------------------------------------- # Helper Targets diff --git a/.tests/tests/framework-drupal.sh b/.tests/tests/framework-drupal.sh index 8792c32b..09fab9a2 100755 --- a/.tests/tests/framework-drupal.sh +++ b/.tests/tests/framework-drupal.sh @@ -14,6 +14,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )" RETRIES=10 DISABLED_VERSIONS=("5.2" "5.3" "7.4" "8.0") +DISABLED_MYSQL_VERSIONS=("mysql-8.0" "percona-8.0") echo @@ -33,6 +34,12 @@ if [[ ${DISABLED_VERSIONS[*]} =~ ${PHP_VERSION} ]]; then exit 0 fi +MYSQL_VERSION="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "MYSQL_SERVER" )" +if [[ ${DISABLED_MYSQL_VERSIONS[*]} =~ ${MYSQL_VERSION} ]]; then + printf "[SKIP] Skipping all checks for MySQL %s\\n" "${MYSQL_VERSION}" + exit 0 +fi + DRUSH= if run "docker-compose exec --user devilbox -T php bash -c 'command -v drush'" "1" "${DVLBOX_PATH}"; then DRUSH=drush diff --git a/.tests/tests/framework-wordpress.sh b/.tests/tests/framework-wordpress.sh new file mode 100755 index 00000000..e4a518ec --- /dev/null +++ b/.tests/tests/framework-wordpress.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash + +# NOTE: Parsing curl to tac to circumnvent "failed writing body" +# https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body + +set -e +set -u +set -o pipefail + +SCRIPT_PATH="$( cd "$(dirname "$0")" && pwd -P )" +DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )" +# shellcheck disable=SC1090 +. "${SCRIPT_PATH}/../scripts/.lib.sh" + +RETRIES=10 +DISABLED_VERSIONS=() + + +echo +echo "# --------------------------------------------------------------------------------------------------" +echo "# [Framework] Wordpress" +echo "# --------------------------------------------------------------------------------------------------" +echo + + +# ------------------------------------------------------------------------------------------------- +# Pre-check +# ------------------------------------------------------------------------------------------------- + +PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )" +if [[ ${DISABLED_VERSIONS[*]} =~ ${PHP_VERSION} ]]; then + printf "[SKIP] Skipping all checks for PHP %s\\n" "${PHP_VERSION}" + exit 0 +fi + + +# ------------------------------------------------------------------------------------------------- +# ENTRYPOINT +# ------------------------------------------------------------------------------------------------- + +### +### Get required env values +### +MYSQL_ROOT_PASSWORD="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "MYSQL_ROOT_PASSWORD" )" +HOST_PORT_HTTPD="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "HOST_PORT_HTTPD" )" +TLD_SUFFIX="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "TLD_SUFFIX" )" + + +### +### Custom variables +### +VHOST="my-wordpress" +DB_NAME="my_wp" +PROJECT_NAME="this-is-my-grepable-project-name" + + +# Setup Wordpress project +run "docker-compose exec --user devilbox -T php bash -c 'rm -rf /shared/httpd/${VHOST}'" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php bash -c 'mkdir -p /shared/httpd/${VHOST}'" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php bash -c 'git clone https://github.com/WordPress/WordPress /shared/httpd/${VHOST}/wordpress'" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php bash -c 'ln -sf wordpress /shared/httpd/${VHOST}/htdocs'" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php mysql -u root -h mysql --password=\"${MYSQL_ROOT_PASSWORD}\" -e \"DROP DATABASE IF EXISTS ${DB_NAME}; CREATE DATABASE ${DB_NAME};\"" "${RETRIES}" "${DVLBOX_PATH}" + +# Configure Wordpress database settings +run "docker-compose exec --user devilbox -T php bash -c \"perl -pe 's/\\r$//' < /shared/httpd/${VHOST}/wordpress/wp-config-sample.php > /shared/httpd/${VHOST}/wordpress/wp-config.php\"" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/define(\\s*'DB_NAME.*/define('DB_NAME', '${DB_NAME}');/g\" /shared/httpd/${VHOST}/wordpress/wp-config.php" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/define(\\s*'DB_USER.*/define('DB_USER', 'root');/g\" /shared/httpd/${VHOST}/wordpress/wp-config.php" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/define(\\s*'DB_PASSWORD.*/define('DB_PASSWORD', '${MYSQL_ROOT_PASSWORD}');/g\" /shared/httpd/${VHOST}/wordpress/wp-config.php" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/define(\\s*'DB_HOST.*/define('DB_HOST', 'mysql');/g\" /shared/httpd/${VHOST}/wordpress/wp-config.php" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/define(\\s*'WP_DEBUG.*/define('WP_DEBUG', true);/g\" /shared/httpd/${VHOST}/wordpress/wp-config.php" "${RETRIES}" "${DVLBOX_PATH}" +run "docker-compose exec --user devilbox -T php php -l /shared/httpd/${VHOST}/wordpress/wp-config.php" "${RETRIES}" "${DVLBOX_PATH}" + +# Install Wordpress +if ! run "docker-compose exec --user devilbox -T php curl -sS --fail -L -XPOST -c cookie.txt -b cookie.txt \ + 'http://${VHOST}.${TLD_SUFFIX}:${HOST_PORT_HTTPD}/wp-admin/install.php?step=1'\ + --data 'language=1' >/dev/null" "${RETRIES}" "${DVLBOX_PATH}"; then + run "docker-compose exec --user devilbox -T php curl -sS --fail -L -XPOST -c cookie.txt -b cookie.txt \ + 'http://${VHOST}.${TLD_SUFFIX}:${HOST_PORT_HTTPD}/wp-admin/install.php?step=1'\ + --data 'language=1' >/dev/null" "1" "${DVLBOX_PATH}" + exit 1 +fi + +if ! run "docker-compose exec --user devilbox -T php curl -sS --fail -L -XPOST -c cookie.txt -b cookie.txt \ + 'http://${VHOST}.${TLD_SUFFIX}:${HOST_PORT_HTTPD}/wp-admin/install.php?step=2' \ + --data 'weblog_title=${PROJECT_NAME}' \ + --data 'user_name=admin' \ + --data 'admin_password=password' \ + --data 'admin_password2=password' \ + --data 'pw_weak=on' \ + --data 'admin_email=test%40test.com' \ + --data 'blog_public=0' \ + --data 'Submit=Install+WordPress&language=' >/dev/null" "${RETRIES}" "${DVLBOX_PATH}"; then + run "docker-compose exec --user devilbox -T php curl -sS --fail -L -XPOST -c cookie.txt -b cookie.txt \ + 'http://${VHOST}.${TLD_SUFFIX}:${HOST_PORT_HTTPD}/wp-admin/install.php?step=2' \ + --data 'weblog_title=${PROJECT_NAME}' \ + --data 'user_name=admin' \ + --data 'admin_password=password' \ + --data 'admin_password2=password' \ + --data 'pw_weak=on' \ + --data 'admin_email=test%40test.com' \ + --data 'blog_public=0' \ + --data 'Submit=Install+WordPress&language='" "1" "${DVLBOX_PATH}" + exit 1 +fi + +# Test Wordpress +run "docker-compose exec --user devilbox -T php curl -sS --fail -L 'http://${VHOST}.${TLD_SUFFIX}:${HOST_PORT_HTTPD}/' | grep '${PROJECT_NAME}' >/dev/null" "${RETRIES}" "${DVLBOX_PATH}" diff --git a/.travis.yml b/.travis.yml index 8228e76c..a9a67816 100644 --- a/.travis.yml +++ b/.travis.yml @@ -321,4 +321,5 @@ script: make test-smoke-autostart; make test-smoke-framework-cakephp; make test-smoke-framework-drupal; + make test-smoke-framework-wordpress; fi