Yii Framework Forum: [Solved] Phpunit Throws Exception On Failed Test - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Solved] Phpunit Throws Exception On Failed Test Rate Topic: -----

#1 User is offline   jodev 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 10-January 11
  • Location:The Netherlands

Posted 17 January 2013 - 11:39 AM

I'm working on a side project which basically involves creating an extremely minimalistic MVC framework as part of a book/tutorial. I have just started, but already hit a snag with PHPUnit. Any test run that yields no errors work fine. This includes tests marked as skipped and incomplete. However, any test that fails normally (even a simple $this->fail() ) results in an exception being thrown:

PHPUnit 3.7.13 by Sebastian Bergmann.

..F

Time: 0 seconds, Memory: 2.00Mb

There was 1 failure:

1) Mfw\tests\validators\ValidatorTest::testCheckErrorSetUsingCreateMethod

Warning: require(C:\www\vendor\Mfw\tests/../../PHP\Invoker.php): failed to open stream: No such file or directory in C:\www\vendor\Mfw\Autoloader.php on line 32

Call Stack:
    0.0017     124848   1. {main}() C:\xampp\php\phpunit:0
    0.0182     360992   2. PHPUnit_TextUI_Command::main() C:\xampp\php\phpunit:46
    0.0183     364200   3. PHPUnit_TextUI_Command->run() C:\xampp\php\pear\PHPUnit\TextUI\Command.php:129
    0.4605    1401976   4. PHPUnit_TextUI_TestRunner->doRun() C:\xampp\php\pear\PHPUnit\TextUI\Command.php:176
    0.6824    1990912   5. PHPUnit_TextUI_ResultPrinter->printResult() C:\xampp\php\pear\PHPUnit\TextUI\TestRunner.php:352
    0.6845    1991224   6. PHPUnit_TextUI_ResultPrinter->printFailures() C:\xampp\php\pear\PHPUnit\TextUI\ResultPrinter.php:163
    0.6849    1991352   7. PHPUnit_TextUI_ResultPrinter->printDefects() C:\xampp\php\pear\PHPUnit\TextUI\ResultPrinter.php:307
    0.6852    1991616   8. PHPUnit_TextUI_ResultPrinter->printDefect() C:\xampp\php\pear\PHPUnit\TextUI\ResultPrinter.php:225
    0.6863    1991744   9. PHPUnit_TextUI_ResultPrinter->printDefectTrace() C:\xampp\php\pear\PHPUnit\TextUI\ResultPrinter.php:238
    0.6957    2029296  10. PHPUnit_Util_Filter::getFilteredStacktrace() C:\xampp\php\pear\PHPUnit\TextUI\ResultPrinter.php:274
    0.6964    2029560  11. PHPUnit_Util_GlobalState::phpunitFiles() C:\xampp\php\pear\PHPUnit\Util\Filter.php:76
    6.1022    2205872  12. PHPUnit_Util_GlobalState::addDirectoryContainingClassToPHPUnitFilesList() C:\xampp\php\pear\PHPUnit\Util\GlobalState.php:388
    6.1022    2205936  13. class_exists() C:\xampp\php\pear\PHPUnit\Util\GlobalState.php:409
    6.1038    2206144  14. Mfw\Autoloader->autoload() C:\xampp\php\pear\PHPUnit\Util\GlobalState.php:0


Fatal error: require(): Failed opening required 'C:\www\vendor\Mfw\tests/../../PHP\Invoker.php' (include_path='.;C:\xampp\php\PEAR') in C:\www\vendor\Mfw\Autoloader.php on line 32

[ ... identical stack trace omitted ...]


I manually placed Invoker.php in the PEAR/PHP directory as it couldn't find a release package through the installer. Still, it's trying to locate it in my webroot to begin with. I'm suspecting that my autoloader may be involved, but i'm not sure if so, and how. Here it is, copied nearly 1-on-1 from the PRS-0 fig-standard:

<?php
namespace Mfw;

class Autoloader
{
    protected $vendorDir = '';

    public function __construct($vendorDir)
    {
        if (!is_string($vendorDir) || !is_dir($vendorDir)) {
            throw new \InvalidArgumentException(
                'Autoloader must be supplied a string with the vendor directory'
            );
        }

        $this->vendorDir = rtrim($vendorDir, '/');
    }

    public function autoload($className)
    {
        $className = ltrim($className, '\\');
        $fileName = '';
        $namespace = '';
        if ($lastNsPos = strrpos($className, '\\')) {
            $namespace = substr($className, 0, $lastNsPos);
            $className = substr($className, $lastNsPos + 1);
            $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace)
                . DIRECTORY_SEPARATOR;
        }
        $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';

        require $this->vendorDir . '/' . $fileName;
    }
}


Anyone dare hazard a guess what might be going on any suggestion whatsoever? Thanks!
0

#2 User is offline   Ragazzo 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 12-August 12

Posted 17 January 2013 - 02:05 PM

Did u installed optional packages (Invoker for example)? See in the phpunit site in installation chapter. And what about "include_path"?
0

#3 User is offline   jodev 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 10-January 11
  • Location:The Netherlands

Posted 19 January 2013 - 04:15 AM

I have not. When I tried to, Pear reported "No releases available for package "pear.phpunit.de/PHP_Invoke". Also, as far as I understand, PHP_Invoke requires the pcntl extension, which does not appear to be available on Windows. Even so, the package is optional, so it would strike me as add that it is needed to simply fail a test.

The include path btw does point to the (existing) PEAR directory (the path is:
.;C:\xampp\php\PEAR




View PostRagazzo, on 17 January 2013 - 02:05 PM, said:

Did u installed optional packages (Invoker for example)? See in the phpunit site in installation chapter. And what about "include_path"?

0

#4 User is offline   Ragazzo 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 12-August 12

Posted 19 January 2013 - 01:00 PM

U can get some packages, that are not available on the channel, from here pear.phpunit.de/
0

#5 User is offline   jodev 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 75
  • Joined: 10-January 11
  • Location:The Netherlands

Posted 20 January 2013 - 05:35 AM

I think I might have solved it now. Took another look through the PHPUnit issue list and ran across this issue. I added the supplied commit and the exception is no longer thrown.

Appreciate the effort though. :)
1

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users