开发者

Is it possible to run PHPUnit with a dynamically loaded extension library?

I have a suite of PHPUnit tests for my extension, and I want to run them as part of the extension's Hudson build process.

So I want to run PHPUnit specifying the extension library to load at runtime, but I can't figure out how to do this.

My directory structure is as follows:

/myextension.c
/otherextensionfiles.*
/modules/myextension.so
/tests/unittests.php

I've tried running PHPUnit with an configuration XML file as follows:

<phpunit>
<php>
<ini name="extension_dir" value="../modules/"/>
<ini name="extension" value="myextension.so"/>
</php>
</phpunit>

And then running it as follows (from the tests directory):

phpunit --configuration config.xml unittests.php

But then I get Fatal error: Call to undefined function myfunction(), so it's not loading the library.

I've also tried:

phpunit -d extension_dir=../modules/ -d extension=myextension.so unittests.php 
开发者_StackOverflow

And also dl('myextension.so') to the test setup, but no joy.

If it's relevant, this is using PHP 5.2 and PHPUnit 3.4.11.

I've cross-posted this question on the PHPUnit users mailing list.


I suspect not possible to set extension_dir at runtime in PHPUnit since it has the attribute PHP_INI_SYSTEM in this chart.

That means it's not possible to it with ini_set(), so I assume it's also not possible to set it with the PHPUnit config <ini name="extension_dir" value="/mydir/">.

EDIT:

However, since PHPUnit is just another PHP script, it is possible to run PHP directly, and pass in the override commands this way!

This gets around the above issue, and the following works:

php -d extension_dir=../modules -d extension=myextension.so /usr/bin/phpunit unittests.php

The only problem with this approach is that PHPUnit will no longer be able to find any extensions that were installed in the normal directory ( eg /usr/lib/php5/20060613/ ), this can be resolved by adding symbolic links from your extension_dir to the relevant files in the default extension_dir.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜