From 0d8d9b1c49a6d1a9e19b7debd3e1409588716403 Mon Sep 17 00:00:00 2001 From: Randy Fay Date: Thu, 2 May 2024 11:45:23 -0600 Subject: [PATCH] feat: Allow installing and testing with all database types --- README.md | 28 ++++++++++++++++++++++------ config.core-dev.yaml | 31 +++++++++++++++++++++++++++++++ config.ddev-drupal-core-dev.yaml | 10 ---------- core-dev/.env | 2 +- core-dev/phpunit-chrome.xml | 2 +- core-dev/phpunit-firefox.xml | 2 +- install.yaml | 7 +------ 7 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 config.core-dev.yaml delete mode 100644 config.ddev-drupal-core-dev.yaml diff --git a/README.md b/README.md index 18e37d5..f3737cf 100644 --- a/README.md +++ b/README.md @@ -4,21 +4,21 @@ This is a DDEV addon for doing Drupal core development. We're in #ddev-for-core-dev on [Drupal Slack](https://www.drupal.org/community/contributor-guide/reference-information/talk/tools/slack) (but please try and keep work and feature requests in Issues where it's visible to all 🙏) +`ddev drush` is fully supported, along with using or testing MariaDB, MySQL, and PostgreSQL databases (and Sqlite3) + + ``` git clone https://git.drupalcode.org/project/drupal.git drupal cd drupal -ddev config --project-type=drupal10 -ddev start -ddev corepack enable +ddev config --project-type=drupal ddev get justafish/ddev-drupal-core-dev ddev restart ddev composer install +ddev config --update -# See included commands -ddev drupal list # Install drupal -ddev drupal install +ddev drush si -y --account-pass==admin # Run PHPUnit tests ddev phpunit core/modules/sdc @@ -27,6 +27,22 @@ ddev phpunit core/modules/sdc ddev nightwatch --tag core ``` +## Using various database types + +By default, the DDEV default database type is used (MariaDB). + +To use another supported database type, +`ddev delete -Oy` and `ddev config --database=mysql:8.0` or `ddev config --database=postgres:16` for example. + +To use Sqlite, +``` +ddev stop +ddev config --disable-settings-management --omit-containers=db +rm -rf web/sites/default/settings*.php web/sites/default/files +ddev start +ddev drupal install +``` + ## Nightwatch Examples You can watch Nightwatch running in real time at https://drupal.ddev.site:7900 diff --git a/config.core-dev.yaml b/config.core-dev.yaml new file mode 100644 index 0000000..1f71985 --- /dev/null +++ b/config.core-dev.yaml @@ -0,0 +1,31 @@ +# #ddev-generated +# This file is placed by the justafish/ddev-drupal-core-dev addon. + +webimage_extra_packages: ["chromium-driver"] +ddev_version_constraint: '>=v1.23.0' +hooks: + post-start: + - exec: | + dburl='sqlite://localhost/sites/default/files/db.sqlite' + cp .ddev/core-dev/phpunit-chrome.xml core/phpunit.xml + cp .ddev/core-dev/.env core/.env + if ping -c 1 db >/dev/null 2>&1; then + case ${DDEV_DATABASE_FAMILY:-} in + mysql) + # the backslash here is to prevent perl from eating the @ + dburl='mysql://db:db\@db/db' + ;; + postgres) + dburl='pgsql://db:db\@db/db' + ;; + esac + fi + perl -pi -e "s|SIMPLETEST_DB_VALUE|${dburl}|g" core/phpunit.xml + perl -pi -e "s|DRUPAL_TEST_DB_URL_VALUE|${dburl}|g" core/.env + perl -pi -e "s|DRUPAL_CORE_DDEV_URL|${DDEV_PRIMARY_URL}|g" core/phpunit.xml + +upload_dirs: + # The install technique tries to remove all of sites/default/files + # but with DDEV + mutagen that isn't possible. + # so just redirect the upload_dirs. + - .ddev/tmp diff --git a/config.ddev-drupal-core-dev.yaml b/config.ddev-drupal-core-dev.yaml deleted file mode 100644 index 7607d27..0000000 --- a/config.ddev-drupal-core-dev.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# #ddev-generated -# This file is placed by the justafish/ddev-drupal-core-dev addon. - -webimage_extra_packages: ["chromium-driver"] -ddev_version_constraint: '>=v1.23.0' -upload_dirs: - # The install technique tries to remove all of sites/default/files - # but with DDEV + mutagen that isn't possible. - # so just redirect the upload_dirs. - - .ddev/tmp diff --git a/core-dev/.env b/core-dev/.env index 9a54fb3..2b5901d 100644 --- a/core-dev/.env +++ b/core-dev/.env @@ -19,7 +19,7 @@ DRUPAL_TEST_BASE_URL=http://web # By default we use sqlite as database. Use # mysql://username:password@localhost/databasename#table_prefix for mysql. -DRUPAL_TEST_DB_URL=sqlite://localhost/sites/default/files/db.sqlite +DRUPAL_TEST_DB_URL=DRUPAL_TEST_DB_URL_VALUE ############# # Webdriver # diff --git a/core-dev/phpunit-chrome.xml b/core-dev/phpunit-chrome.xml index fc02f8e..b4f1a5a 100644 --- a/core-dev/phpunit-chrome.xml +++ b/core-dev/phpunit-chrome.xml @@ -23,7 +23,7 @@ - + - +