[wp-trac] [WordPress Trac] #57071: PHPUnit tests are broken

WordPress Trac noreply at wordpress.org
Fri Nov 11 11:02:22 UTC 2022


#57071: PHPUnit tests are broken
--------------------------------+------------------------------
 Reporter:  emanuelx            |       Owner:  (none)
     Type:  defect (bug)        |      Status:  new
 Priority:  normal              |   Milestone:  Awaiting Review
Component:  Build/Test Tools    |     Version:  6.1
 Severity:  normal              |  Resolution:
 Keywords:  needs-testing-info  |     Focuses:
--------------------------------+------------------------------
Changes (by SergeyBiryukov):

 * keywords:  has-dev-note needs-testing-info => needs-testing-info
 * component:  General => Build/Test Tools


Old description:

> Hi, I'm using the test suite for testing the functionalities for my
> theme.
>
> I've adapted your install.sh scripts in a single container, and it's
> working fine until version 6.0.
>

> My tests configuration:
> PHP version: 8.0.2
>
> {{{#!php
> <?php
> ENV WP_TESTS_DIR=/app/wordpress/tests
> ENV WP_CORE_DIR=/usr/src/wordpress/
>
> define( 'ABSPATH', getenv_docker('WP_CORE_DIR', '') );
> }}}
>

> **Version <=6.0**
> The behaviour is:
>
> 1. Install.php file -  https://github.com/WordPress/wordpress-
> develop/blob/6.1/tests/phpunit/includes/install.php#L43
>
> - on this line the require_once will duplicate the forward slash.
>
> code line: require_once ABSPATH . '/wp-includes/class-wpdb.php';
> Translated line: require_once '/usr/src/wordpress//wp-includes/class-
> wpdb.php'
>
> 2. Mock-mailer file - https://github.com/WordPress/wordpress-
> develop/blob/6.1/tests/phpunit/includes/mock-mailer.php#L2
>
> on this line we have a missing slash.
>
> code line: require_once ABSPATH . 'wp-includes/PHPMailer/PHPMailer.php';
> Translated line: require_once '/usr/src/wordpress/wp-
> includes/PHPMailer/PHPMailer.php';
>

> On the first case, we have a duplicated forward slash, but this is
> necessary because the includes of phpMailer inside mock-mailer.php file.
>
> but this works fine, without any issue.
>
> **Version 6.1**
> The version 6.1 of tests, the issue with duplicated forward slash will
> break the code, I don't know why  on version <=6.0 it's working fine, and
> on version 6.1 the error is fired.
>
> I've analysed the code, and this is issue with duplicated slash is
> present on the code for several versions. So, something was introduced on
> this version 6.1 to trigger the error with require_once.
>

> Error ABSPATH with forward slash: /usr/src/wordpress/
>
> {{{#!php
> <?php
> [11-Nov-2022 10:03:02 UTC] PHP Warning:  require_once(/usr/src/wordpress
> //wp-includes/class-wpdb.php): Failed to open stream: No such file or
> directory in /app/wordpress/tests/includes/install.php on line 43
> [11-Nov-2022 10:03:02 UTC] PHP Fatal error:  Uncaught Error: Failed
> opening required '/usr/src/wordpress//wp-includes/class-wpdb.php'
> (include_path='.:/usr/local/lib/php') in
> /app/wordpress/tests/includes/install.php:43
> Stack trace:
> #0 {main}
>   thrown in /app/wordpress/tests/includes/install.php on line 43
>
> }}}
>
> Error ABSPATH without forward slash: /usr/src/wordpress
>
> {{{#!php
> <?php
> [11-Nov-2022 10:05:45 UTC] PHP Warning:  require_once(/usr/src
> /wordpresswp-includes/PHPMailer/PHPMailer.php): Failed to open stream: No
> such file or directory in /app/wordpress/tests/includes/mock-mailer.php
> on line 2
> PHPUnit 9.5.26 by Sebastian Bergmann and contributors.
>
> Error in bootstrap script: Error:
> Failed opening required '/usr/src/wordpresswp-
> includes/PHPMailer/PHPMailer.php' (include_path='.:/usr/local/lib/php')
> #0 /app/wordpress/tests/includes/bootstrap.php(250): require_once()
> #1 /theme/tests/bootstrap.php(66): require('/app/wordpress/...')
> #2 /theme/vendor/phpunit/phpunit/src/Util/FileLoader.php(66):
> include_once('/theme/tests/bo...')
> #3 /theme/vendor/phpunit/phpunit/src/Util/FileLoader.php(49):
> PHPUnit\Util\FileLoader::load('/theme/tests/bo...')
> #4 /theme/vendor/phpunit/phpunit/src/TextUI/Command.php(565):
> PHPUnit\Util\FileLoader::checkAndLoad('./tests/bootstr...')
> #5 /theme/vendor/phpunit/phpunit/src/TextUI/Command.php(345):
> PHPUnit\TextUI\Command->handleBootstrap('./tests/bootstr...')
> #6 /theme/vendor/phpunit/phpunit/src/TextUI/Command.php(112):
> PHPUnit\TextUI\Command->handleArguments(Array)
> #7 /theme/vendor/phpunit/phpunit/src/TextUI/Command.php(97):
> PHPUnit\TextUI\Command->run(Array, true)
> #8 /theme/vendor/phpunit/phpunit/phpunit(98):
> PHPUnit\TextUI\Command::main()
> #9 /theme/vendor/bin/phpunit(123): include('/theme/vendor/p...')
> #10 {main}
> Script phpunit -c phpunit-no-coverage.xml.dev handling the phpunit event
> returned with error code 1
> }}}

New description:

 Hi, I'm using the test suite for testing the functionalities for my theme.

 I've adapted your install.sh scripts in a single container, and it's
 working fine until version 6.0.


 My tests configuration:
 PHP version: 8.0.2

 {{{#!php
 <?php
 ENV WP_TESTS_DIR=/app/wordpress/tests
 ENV WP_CORE_DIR=/usr/src/wordpress/

 define( 'ABSPATH', getenv_docker('WP_CORE_DIR', '') );
 }}}


 **Version <=6.0**
 The behaviour is:

 1. Install.php file -  https://github.com/WordPress/wordpress-
 develop/blob/6.1/tests/phpunit/includes/install.php#L43

 - on this line the require_once will duplicate the forward slash.

 code line: `require_once ABSPATH . '/wp-includes/class-wpdb.php';`
 Translated line: `require_once '/usr/src/wordpress//wp-includes/class-
 wpdb.php'`

 2. Mock-mailer file - https://github.com/WordPress/wordpress-
 develop/blob/6.1/tests/phpunit/includes/mock-mailer.php#L2

 on this line we have a missing slash.

 code line: `require_once ABSPATH . 'wp-includes/PHPMailer/PHPMailer.php';`
 Translated line: `require_once '/usr/src/wordpress/wp-
 includes/PHPMailer/PHPMailer.php';`


 On the first case, we have a duplicated forward slash, but this is
 necessary because the includes of phpMailer inside mock-mailer.php file.

 but this works fine, without any issue.

 **Version 6.1**
 The version 6.1 of tests, the issue with duplicated forward slash will
 break the code, I don't know why  on version <=6.0 it's working fine, and
 on version 6.1 the error is fired.

 I've analysed the code, and this is issue with duplicated slash is present
 on the code for several versions. So, something was introduced on this
 version 6.1 to trigger the error with require_once.


 Error ABSPATH with forward slash: `/usr/src/wordpress/`

 {{{#!php
 <?php
 [11-Nov-2022 10:03:02 UTC] PHP Warning:  require_once(/usr/src/wordpress
 //wp-includes/class-wpdb.php): Failed to open stream: No such file or
 directory in /app/wordpress/tests/includes/install.php on line 43
 [11-Nov-2022 10:03:02 UTC] PHP Fatal error:  Uncaught Error: Failed
 opening required '/usr/src/wordpress//wp-includes/class-wpdb.php'
 (include_path='.:/usr/local/lib/php') in
 /app/wordpress/tests/includes/install.php:43
 Stack trace:
 #0 {main}
   thrown in /app/wordpress/tests/includes/install.php on line 43

 }}}

 Error ABSPATH without forward slash: `/usr/src/wordpress`

 {{{#!php
 <?php
 [11-Nov-2022 10:05:45 UTC] PHP Warning:  require_once(/usr/src
 /wordpresswp-includes/PHPMailer/PHPMailer.php): Failed to open stream: No
 such file or directory in /app/wordpress/tests/includes/mock-mailer.php on
 line 2
 PHPUnit 9.5.26 by Sebastian Bergmann and contributors.

 Error in bootstrap script: Error:
 Failed opening required '/usr/src/wordpresswp-
 includes/PHPMailer/PHPMailer.php' (include_path='.:/usr/local/lib/php')
 #0 /app/wordpress/tests/includes/bootstrap.php(250): require_once()
 #1 /theme/tests/bootstrap.php(66): require('/app/wordpress/...')
 #2 /theme/vendor/phpunit/phpunit/src/Util/FileLoader.php(66):
 include_once('/theme/tests/bo...')
 #3 /theme/vendor/phpunit/phpunit/src/Util/FileLoader.php(49):
 PHPUnit\Util\FileLoader::load('/theme/tests/bo...')
 #4 /theme/vendor/phpunit/phpunit/src/TextUI/Command.php(565):
 PHPUnit\Util\FileLoader::checkAndLoad('./tests/bootstr...')
 #5 /theme/vendor/phpunit/phpunit/src/TextUI/Command.php(345):
 PHPUnit\TextUI\Command->handleBootstrap('./tests/bootstr...')
 #6 /theme/vendor/phpunit/phpunit/src/TextUI/Command.php(112):
 PHPUnit\TextUI\Command->handleArguments(Array)
 #7 /theme/vendor/phpunit/phpunit/src/TextUI/Command.php(97):
 PHPUnit\TextUI\Command->run(Array, true)
 #8 /theme/vendor/phpunit/phpunit/phpunit(98):
 PHPUnit\TextUI\Command::main()
 #9 /theme/vendor/bin/phpunit(123): include('/theme/vendor/p...')
 #10 {main}
 Script phpunit -c phpunit-no-coverage.xml.dev handling the phpunit event
 returned with error code 1
 }}}

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/57071#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list