понедельник, 11 ноября 2013 г.

Debugging/tracing Drupal 8 tests.

Занялся тестированием тестов под Drupal 8. И осознал, что отладка тестов не так уж и проста. Сложность заключается не в написании, а организации процессов.

  • Укажите путь к основному файлу тестировщику, который с помощью phpunit соберает среду и запускает тест.
  • Желательно запускать от пользователя www-data.
  • Укажите обязательно параметр --url сайта.
  • Если вызапускаете тест с командной строки и хотите трассировать код, необходимо выставить переменную XDEBUG_CONFIG="idekey=netbeans-xdebug".
  • Заметьте, что тесты также выполняют GET/POST запросы к проекту. Трассировка проскакивает код сзапросами, отладка будет неполной. Если вы хотите также провести отладку тех скриптов в параметры также надо добавлять ключ. Проблема в том, что это вызывает мультипоточную отладку в которой очень легко запутаться.

Мой совет - При поиске проблемы в тесте советую создать свой тест с реализацией проблемы.
alias d8_run_tests="sudo -u www-data php /var/www/d8/drupal/core/scripts/run-tests.sh --url http://d8.local --verbose --color --class "
alias xd8_run_tests="sudo -u www-data /home/viktor/sh/d8_run_tests"

http://d8.local/?XDEBUG_SESSION_START=netbeans-xdebug

#!/bin/bash
export XDEBUG_CONFIG="idekey=netbeans-xdebug"
echo $1
php /var/www/d8/drupal/core/scripts/run-tests.sh --url http://d8.local --verbose --color --execute-test $1

xd8_run_tests "Drupal\locale\Tests\LocaleTranslationUi1Test"
or
d8_run_tests "Drupal\locale\Tests\LocaleTranslationUi1Test"