Skip to content

Commit

Permalink
feat: Allow installing and testing with all database types
Browse files Browse the repository at this point in the history
  • Loading branch information
rfay committed May 2, 2024
1 parent 94b8a5d commit 0d8d9b1
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 25 deletions.
28 changes: 22 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
31 changes: 31 additions & 0 deletions config.core-dev.yaml
Original file line number Diff line number Diff line change
@@ -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
10 changes: 0 additions & 10 deletions config.ddev-drupal-core-dev.yaml

This file was deleted.

2 changes: 1 addition & 1 deletion core-dev/.env
Original file line number Diff line number Diff line change
Expand Up @@ -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 #
Expand Down
2 changes: 1 addition & 1 deletion core-dev/phpunit-chrome.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<!-- Do not limit the amount of memory tests take to run. -->
<ini name="memory_limit" value="-1"/>
<env name="SIMPLETEST_BASE_URL" value="DRUPAL_CORE_DDEV_URL"/>
<env name="SIMPLETEST_DB" value="mysql://db:db@db/db"/>
<env name="SIMPLETEST_DB" value="SIMPLETEST_DB_VALUE"/>
<env name="BROWSERTEST_OUTPUT_DIRECTORY" value="/var/www/html/test_output"/>
<!-- By default, browser tests will output links that use the base URL set
in SIMPLETEST_BASE_URL. However, if your SIMPLETEST_BASE_URL is an internal
Expand Down
2 changes: 1 addition & 1 deletion core-dev/phpunit-firefox.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<!-- Do not limit the amount of memory tests take to run. -->
<ini name="memory_limit" value="-1"/>
<env name="SIMPLETEST_BASE_URL" value="DRUPAL_CORE_DDEV_URL"/>
<env name="SIMPLETEST_DB" value="mysql://db:db@db/db"/>
<env name="SIMPLETEST_DB" value="SIMPLETEST_DB_VALUE"/>
<env name="BROWSERTEST_OUTPUT_DIRECTORY" value="/var/www/html/test_output"/>
<!-- By default, browser tests will output links that use the base URL set
in SIMPLETEST_BASE_URL. However, if your SIMPLETEST_BASE_URL is an internal
Expand Down
7 changes: 1 addition & 6 deletions install.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name: ddev-drupal-core-dev

project_files:
- web-build/Dockerfile
- config.ddev-drupal-core-dev.yaml
- config.core-dev.yaml
- docker-compose.core-dev-selenium.yaml
- core-dev/phpunit-firefox.xml
- core-dev/phpunit-chrome.xml
Expand All @@ -23,14 +23,9 @@ project_files:
- core-dev/src/Command/UninstallCommand.php

post_install_actions:
- cp core-dev/phpunit-chrome.xml ../core/phpunit.xml
- perl -pi -e "s|DRUPAL_CORE_DDEV_URL|$DDEV_PRIMARY_URL|g" ../core/phpunit.xml
- cp core-dev/.env ../core/.env
- cp core-dev/gitignore ../.gitignore
- mkdir -p ../test_output
- chmod +w ../test_output
- ddev exec corepack enable
- cd ../core && ddev yarn

removal_actions:
- |
Expand Down

0 comments on commit 0d8d9b1

Please sign in to comment.