tuutti / drupal-test-runner
Tool to run Drupal tests
Installs: 1 050
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
README
Provides a set of tools to make testing Drupal easier.
Requirements
- make (GNU)
- composer
- php
- composer
Installation
$ composer global require tuutti/drupal-test-runner ^1.0
This will create drupal-tr
executable that works as a wrapper for our make commands. You can either call it directly
from composer's binary folder or add composer's global bin dir to your $PATH
variable: PATH="$PATH:$HOME/.composer/vendor/bin"
.
Usage
Available installers:
Setup Drupal
drupal-tr
to install Drupal with selected installer (INSTALLER_TYPE
)
Run tests
drupal-tr run-tests
to run tests with selected test runner (TEST_RUNNER
)
Utility tools
drupal-tr run-drush-server
to start a drush server listening on DRUPAL_BASE_URL
.
Configuration
Contrib installer
Use contrib
when testing something that is not packaged with Drupal core, like Drupal modules or themes. Core version is determined by DRUPAL_CORE_VERSION
variable and will be installed to given DRUPAL_ROOT
using DRUPAL_INSTALL_PROFILE
installation profile.
Your DRUPAL_MODULE_PATH
(git root by default) will be added to composer.json's repositories
automatically and installed with composer require drupal/$DRUPAL_MODULE_NAME
. For this to work your package MUST have a composer.json file containing type
and name
values starting with drupal
, for example:
{ "name": "drupal/your_module", "type": "drupal-module" }
See composer/installers for available types.
NOTE: DRUPAL_ROOT
cannot be inside the DRUPAL_MODULE_PATH
folder.
Contrib installer configuration
Contrib installer Github actions example
.github/workflows/ci.yml
:
on: [push] name: CI env: MYSQL_ROOT_PASSWORD: drupal SIMPLETEST_DB: "mysql://drupal:drupal@mariadb:3306/drupal" SIMPLETEST_BASE_URL: "http://127.0.0.1:8080" DRUPAL_MODULE_NAME: "your_module" DRUPAL_CORE_VERSION: 9.0.x jobs: test-contrib: runs-on: ubuntu-latest strategy: fail-fast: true matrix: php-version: ['7.4'] container: image: ghcr.io/tuutti/drupal-php-docker:${{ matrix.php-version }} services: mariadb: image: mariadb:10.5 env: MYSQL_USER: drupal MYSQL_PASSWORD: drupal MYSQL_DATABASE: drupal MYSQL_ROOT_PASSWORD: drupal ports: - 3306:3306 steps: - uses: actions/checkout@v2 with: fetch-depth: 1 - name: Set variables run: | echo "$HOME/.config/composer/vendor/bin" >> $GITHUB_PATH - name: Setup Drupal test runner run: | composer global require tuutti/drupal-test-runner ^1.0 - name: Setup Drupal run: drupal-tr - name: Run tests run: TEST_RUNNER=core drupal-tr run-tests
Contrib installer Gitlab ci example
variables: DRUPAL_MODULE_NAME: your_module SIMPLETEST_BASE_URL: http://127.0.0.1:8080 DRUPAL_CORE_VERSION: 8.9.x DRUPAL_INSTALL_PROFILE: minimal MYSQL_DATABASE: drupal MYSQL_ROOT_PASSWORD: drupal SIMPLETEST_DB: mysql://root:drupal@mariadb/drupal TEST_RUNNER: core before_script: - export PATH=$HOME/.composer/vendor/bin:$PATH - composer global require tuutti/drupal-test-runner ^1.0 - drupal-tr - drupal-tr run-drush-server & services: - mariadb:latest test:7.3: image: registry.gitlab.com/tuutti/drupal-php-docker:7.3 script: - drupal-tr run-tests
Composer-project installer
Use composer-project
installer to test Drupal sites that can be installed with composer. For example drupal-composer/drupal-project.
Installs Drupal using DRUPAL_INSTALL_PROFILE
or existing config when EXISTING_CONFIG
is set to true
.
Composer-project installer Github actions example
on: [push] name: CI env: SIMPLETEST_DB: "mysql://drupal:drupal@db:3306/drupal" SIMPLETEST_BASE_URL: "http://127.0.0.1:8888" EXISTING_CONFIG: true INSTALLER_TYPE: composer-project jobs: tests: runs-on: ubuntu-latest strategy: fail-fast: true matrix: php-version: ['7.4'] container: image: ghcr.io/tuutti/drupal-php-docker:${{ matrix.php-version }} steps: - uses: actions/checkout@v2 with: fetch-depth: 1 - name: Set variables run: | echo "$HOME/.config/composer/vendor/bin" >> $GITHUB_PATH - name: Setup drupal run: | composer global require tuutti/drupal-test-runner drupal-tr - name: Run PHPUnit tests run: | drupal-tr run-drush-server & drupal-tr run-tests
Configuration
Test runners
phpunit
Uses vendor/bin/phpunit
to run tests (default). Attempts to read configuration file from PHPUNIT_CONFIG_FILE
.
core
Uses core's core/scripts/run-tests.sh
to run tests.
Set TEST_RUNNER=core
to use this.