Aller au contenu principal

PHPUnit

Lance les tests PHPUnit d'un projet Drupal, avec une base MariaDB et un serveur web local.

Règles de déclenchement et cache Composer : voir le fonctionnement des jobs QA. À la différence de phpcs et de phpstan, ce job est bloquant par défaut.

Fonctionnement​

  1. Un service mariadb est démarré à côté du job, joignable sous le nom mariadb (base drupal, utilisateur drupal, mot de passe drupal).
  2. Le job crée <DRUPAL_ROOT_PATH>/sites/simpletest, copie files/testing/phpunit.xml à la racine du projet, puis lance composer install.
  3. Il démarre le serveur web intégré de PHP sur localhost:8000, avec DRUPAL_ROOT_PATH pour racine. Son journal va dans files/testing/php.log.
  4. Il lance php ./vendor/bin/phpunit.

Le job écrit un rapport JUnit, phpunit-report.xml, et déclare à GitLab celui de <DRUPAL_ROOT_PATH>/phpunit-report.xml pour l'onglet « Tests » de la pipeline. files/testing/php.log est publié en artefact, conservé un jour.

Ce que le projet doit fournir​

  • files/testing/phpunit.xml : la configuration PHPUnit, qui pointe sur la base et le serveur du job, par exemple :
    • SIMPLETEST_BASE_URL : http://localhost:8000 ;
    • SIMPLETEST_DB : mysql://drupal:drupal@mariadb/drupal.
  • Le dossier files/testing/ dans le dépôt : le job y écrit son journal.

Utilisation​

variables:
CI_TEMPLATE_VERSION: &CI_TEMPLATE_VERSION main
PHPUNIT_DOCKER_IMAGE: wodby/drupal-php:8.3-dev

include:
- project: kgaut/gitlab-ci-templates
ref: *CI_TEMPLATE_VERSION
file:
- '/templates/generic/stages-variables-extends.yml'
- '/templates/qa/phpunit.yml'

Variables​

Nom de la variableContenuExempleRemarque
PHPUNIT_DOCKER_IMAGEImage docker à utiliser pour exécuter les testswodby/drupal-php:8.3-devpar défaut wodby/drupal-php:7.4-dev ; à adapter au PHP du projet
PHPUNIT_ALLOW_FAILUREÀ "true", un échec du job n'arrête pas la pipeline"true"par défaut "false"
DRUPAL_ROOT_PATHChemin relatif à la racine du projet vers le docrootwebpar défaut web

Liste des jobs​

phpunit​

Lance les tests PHPUnit (stage QA).