de.systopia.twingle/tests/docker-prepare.sh

45 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
set -eu -o pipefail
EXT_DIR=$(dirname "$(dirname "$(realpath "$0")")")
EXT_NAME=$(basename "$EXT_DIR")
i=0
while ! mysql -h "$CIVICRM_DB_HOST" -P "$CIVICRM_DB_PORT" -u "$CIVICRM_DB_USER" --password="$CIVICRM_DB_PASS" -e 'SELECT 1;' >/dev/null 2>&1; do
i=$((i+1))
if [ $i -gt 10 ]; then
echo "Failed to connect to database" >&2
exit 1
fi
echo -n .
sleep 1
done
echo
export XDEBUG_MODE=off
if mysql -h "$CIVICRM_DB_HOST" -P "$CIVICRM_DB_PORT" -u "$CIVICRM_DB_USER" --password="$CIVICRM_DB_PASS" "$CIVICRM_DB_NAME" -e 'SELECT 1 FROM civicrm_setting LIMIT 1;' >/dev/null 2>&1; then
cv flush
else
# For headless tests it is required that CIVICRM_UF is defined using the corresponding env variable.
sed -E "s/define\('CIVICRM_UF', '([^']+)'\);/define('CIVICRM_UF', getenv('CIVICRM_UF') ?: '\1');/g" \
-i /var/www/html/sites/default/civicrm.settings.php
civicrm-docker-install
# Avoid this error:
# The autoloader expected class "Civi\ActionSchedule\Mapping" to be defined in
# file "[...]/Civi/ActionSchedule/Mapping.php". The file was found but the
# class was not in it, the class name or namespace probably has a typo.
rm -f /var/www/html/sites/all/modules/civicrm/Civi/ActionSchedule/Mapping.php
# For headless tests these files need to exist.
touch /var/www/html/sites/all/modules/civicrm/sql/test_data.mysql
touch /var/www/html/sites/all/modules/civicrm/sql/test_data_second_domain.mysql
cv ext:enable "$EXT_NAME"
fi
cd "$EXT_DIR"
composer update --no-progress --prefer-dist --optimize-autoloader --no-dev
composer composer-phpunit -- update --no-progress --prefer-dist