Xdebug with PHPUnit In Drupal 8
About me
Intro: XDebug Depuración en PHP: ● print_r(), var_dump(), … ● FirePHP ● Kint , Krumo, Ladybug ● phpdbg incluido ya en 5.6
Intro: XDebug ● Debugging and profiling PHP extension ● Show log trace information ● Allow step by step debugging More info
Intro: XDebug - My experience I feel secure on my own!!! but It’s not the holy grail
Xdebug installation + configuration: PHP extension + System configuration + IDE configuration + Browser configuration
Xdebug installation: PHP extension sudo apt-get install php5-xdebug http://xdebug.org/docs/install
Xdebug installation: System configuration /etc/php5/apache2/php.ini AND/OR /etc/php5/cli/php.ini ● zend_extension="/usr/lib/php5/20121212/xdebug.so" ● xdebug.remote_enable=1 ● xdebug.remote_host= IDE host ● xdebug.remote_port="9000" ● xdebug.profiler_enable=1 ● xdebug.profiler_output_dir="/tmp" ● xdebug.idekey="drupal8"
How do we check it? Web: echo phpinfo();
Xdebug installation: How do we check it? Console (cli): php -v & php -i | grep remote
IDE configuration ● Set Xdebug in PhpStorm ● Add a Php remote debug / Php Unit instance in PhpStorm ● Set session id (ide key)
IDE configuration: Set XDebug ● Configure Php debug ● Configure server
IDE configuration: Debug instance Open Debug panel pressing F9 and select Edit configuration Add new PHP Remote Debug instance Set the ide key (session id) and server
Browser configuration ● The IDE needs an Id to start the debug ● The browser provides the Id (session_id) ● Chrome / Firefox extension to provide Id ○ Xdebug helper
Use case : Debug code (I) Environment configuration: ● Drupal 8 installed in local ● XDebug installed in local ● PhpStorm configured with an instance Use case: ● Add breakpoint in code ● Run debug mode ● Navigate to stop in the breakpoint This is my day by day use of XDebug.
Use case : Debug code (II) Environment configuration: ● Drupal 8 installed in remote environment (vagrant) ● XDebug installed in remote environment (vagrant) ● PhpStorm configured with a sync code to remote env. Use case: ● Add breakpoint in code ● Run debug mode ● Navigate to stop in the breakpoint This is @LuisGonRod day by day use of XDebug.
Use case : Debug code (III) Question: What if @LuisGonRod and me want debug in the same remote environment? http://derickrethans.nl/debugging-with-multiple-users.html
Use case : Debug code (III)
Use case : Debug tests (I) Environment configuration: ● Drupal 8 installed in local ● XDebug installed in local ● PhpStorm configured with an instance Running test by using browser ● Activate module Testing ● Run test DrupalnodeTestsPageEditTest Use case ● Add breakpoint in test code ● Run debug mode ● Run test and wait to stop in breakpoint Sometimes never stop...at least for me
Use case : Debug tests (II) Environment configuration: ● Drupal 8 installed in local ● XDebug installed in local ● PhpStorm configured with an instance Running test by using Php cli ● Activate module Testing ● Run test using ○ run-tests.sh script ○ drush test-run
Use case : Debug tests - run-tests.sh (III) XDEBUG_CONFIG="idekey=drupal8" sudo php core/scripts/run-tests.sh --php /usr/bin/php --url http://local.drupal --class "DrupalnodeTestsPageEditTest" For me it’s not working, right now :( configuring the script using PhpStorm it works
Use case : Debug tests - run-tests.sh (IV) ● Go to debug configuration (F9) ● Add a Php Script instance ● Configure it ○ File: path to run-tests.sh ○ Arguments: The run-tests parameters ○ Environment variables: XDEBUG_CONFIG with idekey
Use case : Debug tests - drush test-run (V) drush test-run --uri= local.drupal DrupalnodeTestsPageEditTest
...And what about PHPUnit? We can debug PHPUnit tests using Phpstorm adding a PHPUnit or PHPUnit on server instance
what about PHPUnit and php cli? We can run test through runt-tests.sh script or php scripts/run-tests.sh --php /usr/bin/php PHPUnit
And now...what?
Do you know why we have moustache? ● Configuraciones especiales de Xdebug ● Si lanzamos los test por consola no tenemos la cookie del navegador.
Movember and Drupal community If you can, please, donate. you won’t be the only one, maybe in that room you find some moustaches in @jose_lakatos @jsbalsera @penyaskito and @gloob http://es.movember.com/en/team/1674337 http://es.movember.com/mospace/10983485

Xdebug and Drupal8 tests (PhpUnit and Simpletest)

  • 1.
    Xdebug with PHPUnit In Drupal 8
  • 2.
  • 3.
    Intro: XDebug Depuraciónen PHP: ● print_r(), var_dump(), … ● FirePHP ● Kint , Krumo, Ladybug ● phpdbg incluido ya en 5.6
  • 4.
    Intro: XDebug ●Debugging and profiling PHP extension ● Show log trace information ● Allow step by step debugging More info
  • 5.
    Intro: XDebug -My experience I feel secure on my own!!! but It’s not the holy grail
  • 6.
    Xdebug installation +configuration: PHP extension + System configuration + IDE configuration + Browser configuration
  • 7.
    Xdebug installation: PHPextension sudo apt-get install php5-xdebug http://xdebug.org/docs/install
  • 8.
    Xdebug installation: Systemconfiguration /etc/php5/apache2/php.ini AND/OR /etc/php5/cli/php.ini ● zend_extension="/usr/lib/php5/20121212/xdebug.so" ● xdebug.remote_enable=1 ● xdebug.remote_host= IDE host ● xdebug.remote_port="9000" ● xdebug.profiler_enable=1 ● xdebug.profiler_output_dir="/tmp" ● xdebug.idekey="drupal8"
  • 9.
    How do wecheck it? Web: echo phpinfo();
  • 10.
    Xdebug installation: Howdo we check it? Console (cli): php -v & php -i | grep remote
  • 11.
    IDE configuration ●Set Xdebug in PhpStorm ● Add a Php remote debug / Php Unit instance in PhpStorm ● Set session id (ide key)
  • 12.
    IDE configuration: SetXDebug ● Configure Php debug ● Configure server
  • 13.
    IDE configuration: Debuginstance Open Debug panel pressing F9 and select Edit configuration Add new PHP Remote Debug instance Set the ide key (session id) and server
  • 14.
    Browser configuration ●The IDE needs an Id to start the debug ● The browser provides the Id (session_id) ● Chrome / Firefox extension to provide Id ○ Xdebug helper
  • 15.
    Use case :Debug code (I) Environment configuration: ● Drupal 8 installed in local ● XDebug installed in local ● PhpStorm configured with an instance Use case: ● Add breakpoint in code ● Run debug mode ● Navigate to stop in the breakpoint This is my day by day use of XDebug.
  • 16.
    Use case :Debug code (II) Environment configuration: ● Drupal 8 installed in remote environment (vagrant) ● XDebug installed in remote environment (vagrant) ● PhpStorm configured with a sync code to remote env. Use case: ● Add breakpoint in code ● Run debug mode ● Navigate to stop in the breakpoint This is @LuisGonRod day by day use of XDebug.
  • 17.
    Use case :Debug code (III) Question: What if @LuisGonRod and me want debug in the same remote environment? http://derickrethans.nl/debugging-with-multiple-users.html
  • 18.
    Use case :Debug code (III)
  • 19.
    Use case :Debug tests (I) Environment configuration: ● Drupal 8 installed in local ● XDebug installed in local ● PhpStorm configured with an instance Running test by using browser ● Activate module Testing ● Run test DrupalnodeTestsPageEditTest Use case ● Add breakpoint in test code ● Run debug mode ● Run test and wait to stop in breakpoint Sometimes never stop...at least for me
  • 20.
    Use case :Debug tests (II) Environment configuration: ● Drupal 8 installed in local ● XDebug installed in local ● PhpStorm configured with an instance Running test by using Php cli ● Activate module Testing ● Run test using ○ run-tests.sh script ○ drush test-run
  • 21.
    Use case :Debug tests - run-tests.sh (III) XDEBUG_CONFIG="idekey=drupal8" sudo php core/scripts/run-tests.sh --php /usr/bin/php --url http://local.drupal --class "DrupalnodeTestsPageEditTest" For me it’s not working, right now :( configuring the script using PhpStorm it works
  • 22.
    Use case :Debug tests - run-tests.sh (IV) ● Go to debug configuration (F9) ● Add a Php Script instance ● Configure it ○ File: path to run-tests.sh ○ Arguments: The run-tests parameters ○ Environment variables: XDEBUG_CONFIG with idekey
  • 23.
    Use case :Debug tests - drush test-run (V) drush test-run --uri= local.drupal DrupalnodeTestsPageEditTest
  • 24.
    ...And what aboutPHPUnit? We can debug PHPUnit tests using Phpstorm adding a PHPUnit or PHPUnit on server instance
  • 25.
    what about PHPUnitand php cli? We can run test through runt-tests.sh script or php scripts/run-tests.sh --php /usr/bin/php PHPUnit
  • 26.
  • 27.
    Do you knowwhy we have moustache? ● Configuraciones especiales de Xdebug ● Si lanzamos los test por consola no tenemos la cookie del navegador.
  • 28.
    Movember and Drupalcommunity If you can, please, donate. you won’t be the only one, maybe in that room you find some moustaches in @jose_lakatos @jsbalsera @penyaskito and @gloob http://es.movember.com/en/team/1674337 http://es.movember.com/mospace/10983485