You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm using patchwork for mocking functions in unit tests via https://packagist.org/packages/brain/monkey . The package I'm working on is a wordpress-plugin. My developer system is a Ubuntu 14.04 with Apache 2.4 and PHP 5.5 with mod-php.
The PHPUnit test runner uses vendor/autoload.php as bootstrap file.
The actuall installed versions are
patchwork 1.4.0
brain/monkey 1.2.1
hamcrest-php 1.2.2
mockery 0.9.4
I don't use any patchwork.json.
All tests run without problems as expected in the PHPUnit CLI runner. Now when I'm starting my »application« by just making a HTTP request to the Web-Frontend (http://my-project.dev/wp-admin) I sometimes see this error message:
Fatal error: Call to undefined function patchwork\callrerouting\deployqueue() in /var/www/…/wp-admin/admin-header.php on line 2
For what I see, this comes as both processes (test and web frontend) share the same composer autoloader. Composers autoload_files.php looks like this at this moment:
So to overcome this issue, I just deleted the complete vendor/ directory and run composer with the --no-dev option:
$ composer install --no-dev
At this moment there were no patchwork sources at all. But the error still occurred. Only after I restarted apache, the error was gone.
I know, that patchwork is not meant to use in production and therefore I have to make sure, it never goes into the autoloader on any production system. But I want to understand what exactly goes on here. Is it the PHP OPcache, that caches the streams of patchwork? How can I make sure that I can switch between testing-processes and web frontend-processes on a developing system without running into these caching issues?
The text was updated successfully, but these errors were encountered:
This should help you test the cache hypothesis, which I think is very likely to be true. I also think it would have taken me quite a while to arrive at such hypothesis. I can only say I applaud your reasoning!
This should help you test the cache hypothesis, which I think is very likely to be true. I also think it would have taken me quite a while to arrive at such hypothesis. I can only say I applaud your reasoning!
I'll keep that in mind. I still didn't found a way to reproduce it. But nice to see, the hypothesis is addressed in these commits. Thanks!
Hi,
I'm using patchwork for mocking functions in unit tests via https://packagist.org/packages/brain/monkey . The package I'm working on is a
wordpress-plugin
. My developer system is a Ubuntu 14.04 with Apache 2.4 and PHP 5.5 with mod-php.The composer.json define these requirements:
The PHPUnit test runner uses
vendor/autoload.php
as bootstrap file.The actuall installed versions are
I don't use any
patchwork.json
.All tests run without problems as expected in the PHPUnit CLI runner. Now when I'm starting my »application« by just making a HTTP request to the Web-Frontend (
http://my-project.dev/wp-admin
) I sometimes see this error message:For what I see, this comes as both processes (test and web frontend) share the same composer autoloader. Composers
autoload_files.php
looks like this at this moment:So to overcome this issue, I just deleted the complete
vendor/
directory and run composer with the--no-dev
option:At this moment there were no patchwork sources at all. But the error still occurred. Only after I restarted apache, the error was gone.
I know, that patchwork is not meant to use in production and therefore I have to make sure, it never goes into the autoloader on any production system. But I want to understand what exactly goes on here. Is it the PHP OPcache, that caches the streams of patchwork? How can I make sure that I can switch between testing-processes and web frontend-processes on a developing system without running into these caching issues?
The text was updated successfully, but these errors were encountered: