运行phpunit测试导致打开流失败:设备的ioctl不合适


Running phpunit tests yields in failed to open stream: Inappropriate ioctl for device

当尝试运行php库的单元测试时:

$ ./vendor/bin/phpunit -c Tests/phpunit.xml

我得到错误:

PHP Warning:  include_once(/home/philipp/src/my-project): failed to open stream: Inappropriate ioctl for device in /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Fileloader.php on line 58
PHP Stack trace:
PHP   1. {main}() /home/philipp/src/my-project/vendor/phpunit/phpunit/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /home/philipp/src/my-project/vendor/phpunit/phpunit/phpunit:36
PHP   3. PHPUnit_TextUI_Command->run() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:105
PHP   4. PHPUnit_TextUI_Command->handleArguments() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:115
PHP   5. PHPUnit_Util_Configuration->getTestSuiteConfiguration() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:623
PHP   6. PHPUnit_Util_Configuration->getTestSuite() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Configuration.php:853
PHP   7. PHPUnit_Framework_TestSuite->addTestFile() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Configuration.php:981
PHP   8. PHPUnit_Util_Fileloader::checkAndLoad() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Framework/TestSuite.php:333
PHP   9. PHPUnit_Util_Fileloader::load() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Fileloader.php:42
Warning: include_once(/home/philipp/src/my-project): failed to open stream: Inappropriate ioctl for device in /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Fileloader.php on line 58
Call Stack:
    0.0001     253712   1. {main}() /hdreamlines-libraryome/philipp/src/my-project/vendor/phpunit/phpunit/phpunit:0
    0.0045     763408   2. PHPUnit_TextUI_Command::main() /home/philipp/src/my-project/vendor/phpunit/phpunit/phpunit:36
    0.0045     764032   3. PHPUnit_TextUI_Command->run() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:105
    0.0045     766696   4. PHPUnit_TextUI_Command->handleArguments() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:115
    0.0070    1313824   5. PHPUnit_Util_Configuration->getTestSuiteConfiguration() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:623
    0.0070    1315088   6. PHPUnit_Util_Configuration->getTestSuite() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Configuration.php:853
    0.0084    1526408   7. PHPUnit_Framework_TestSuite->addTestFile() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Configuration.php:981
    0.0085    1560192   8. PHPUnit_Util_Fileloader::checkAndLoad() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Framework/TestSuite.php:333
    0.0085    1560296   9. PHPUnit_Util_Fileloader::load() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Fileloader.php:42
PHP Warning:  include_once(): Failed opening '/home/philipp/src/my-project' for inclusion (include_path='/home/philipp/src/my-project/vendor/phpunit/php-text-template:/home/philipp/src/my-project/vendor/phpunit/php-timer:.:/usr/share/php:/usr/share/pear') in /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Fileloader.php on line 58
PHP Stack trace:
PHP   1. {main}() /home/philipp/src/my-project/vendor/phpunit/phpunit/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /home/philipp/src/my-project/vendor/phpunit/phpunit/phpunit:36
PHP   3. PHPUnit_TextUI_Command->run() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:105
PHP   4. PHPUnit_TextUI_Command->handleArguments() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:115
PHP   5. PHPUnit_Util_Configuration->getTestSuiteConfiguration() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:623
PHP   6. PHPUnit_Util_Configuration->getTestSuite() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Configuration.php:853
PHP   7. PHPUnit_Framework_TestSuite->addTestFile() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Configuration.php:981
PHP   8. PHPUnit_Util_Fileloader::checkAndLoad() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Framework/TestSuite.php:333
PHP   9. PHPUnit_Util_Fileloader::load() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Fileloader.php:42
Warning: include_once(): Failed opening '/home/philipp/src/my-project' for inclusion (include_path='/home/philipp/src/my-project/vendor/phpunit/php-text-template:/home/philipp/src/my-project/vendor/phpunit/php-timer:.:/usr/share/php:/usr/share/pear') in /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Fileloader.php on line 58
Call Stack:
    0.0001     253712   1. {main}() /home/philipp/src/my-project/vendor/phpunit/phpunit/phpunit:0
    0.0045     763408   2. PHPUnit_TextUI_Command::main() /home/philipp/src/my-project/vendor/phpunit/phpunit/phpunit:36
    0.0045     764032   3. PHPUnit_TextUI_Command->run() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:105
    0.0045     766696   4. PHPUnit_TextUI_Command->handleArguments() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:115
    0.0070    1313824   5. PHPUnit_Util_Configuration->getTestSuiteConfiguration() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/TextUI/Command.php:623
    0.0070    1315088   6. PHPUnit_Util_Configuration->getTestSuite() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Configuration.php:853
    0.0084    1526408   7. PHPUnit_Framework_TestSuite->addTestFile() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Configuration.php:981
    0.0085    1560192   8. PHPUnit_Util_Fileloader::checkAndLoad() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Framework/TestSuite.php:333
    0.0085    1560296   9. PHPUnit_Util_Fileloader::load() /home/philipp/src/my-project/vendor/phpunit/phpunit/src/Util/Fileloader.php:42
PHPUnit 4.6.6 by Sebastian Bergmann and contributors.
Configuration read from /home/philipp/src/my-project/Tests/phpunit.xml

我怀疑这可能是一个文件权限错误,但是

sudo chown ME:ME . -R

无法解决此问题。

phpunit.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
         verbose="true"
         colors="true"
         bootstrap="../vendor/autoload.php"
    >
    <php>
        <ini name="display_errors" value="true" />
        <ini name="display_startup_errors" value="true" />
        <ini name="max_execution_time" value="600" />
        <ini name="memory_limit" value="256M" />
    </php>
    <filter>
        <blacklist>
            <directory suffix=".php">../vendor</directory>
        </blacklist>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">../src</directory>
        </whitelist>
    </filter>
    <testsuites>
        <testsuite name="MyLibrary">
            <file>./</file>
        </testsuite>
    </testsuites>
    <listeners>
        <listener class="'Mockery'Adapter'Phpunit'TestListener" />
    </listeners>
</phpunit>

库的源代码在src目录下,测试在Tests目录下。

这个phpunit设置没有找到应该在哪里的测试文件,因此需要添加路径:

$ ./vendor/bin/phpunit -c Tests/phpunit.xml Tests/
PHPUnit 4.6.6 by Sebastian Bergmann and contributors.
Configuration read from /home/philipp/src/my-library/Tests/phpunit.xml
......................
Time: 129 ms, Memory: 9.50Mb
OK (22 tests, 62 assertions)