Suppressing the request when running PHPUnit with Kohana 3.2-Collection of common programming errors

I’m having trouble correctly setting up unit testing in Kohana 3.2.

I installed PHPUnit. I changed the bootstrap to activate Kohana’s unittest module. I also changed the index.php file to look like this:

if ( ! defined('SUPPRESS_REQUEST'))
{
    echo Request::factory()
        ->execute()
        ->send_headers()
        ->body();
}

I created a folder tests in my application folder. In it, I inserted a phpunit.xml file that looks like this:



    
        ./
    

I am having two problems (the first one is the one I really need an answer to):

1- When I go into tests from the command line and try running phpunit, it seems that SUPPRESS_REQUEST never gets set to true. The Request is executed, and therefore no tests are run. The only way I am able to run the tests successfully is to momentarily comment out the entire Request::factory() line in index.php. Does anyone know how to get around this problem? If I should be adding a define(‘SUPPRESS_REQUEST’, true) somewhere, where should I do it? I’m new to Kohana and PHPUnit.

2- PHPUnit complains that the variable REMOTE_ADDR is not set.

PHP Notice:  Undefined index: REMOTE_ADDR in
/Users/**/Sites/root/application/bootstrap.php on line 76

This is actually not a huge problem for now as tests still seem to run in spite of this, but I’m wondering if anyone knows if I should be setting this variable somewhere in specific.

  1. In modules/unittest there is a file called bootstrap.php which works perfectly well with phpunit.

    My phpunit.xml which references that bootstrap is this:

    
    
        
            
                ./
            
        
    
    

    Also, for the REMOTE_ADDR problem, when phpunit is running the CLI version of PHP, which I don’t think has access to a REMOTE_ADDR variable. If you look at the bootstrap from unittest, it does not use http related globals.

    I’m not sure why you have to run Request::factory code in your bootstrap. On my vanilla 3.2 install, the Request::factory code lives in index.php and not bootstrap.php and does not have any reference to SUPRESS REQUEST. You may have some lingering files from a pre-3.2 installation which need cleaning.

Originally posted 2013-11-27 11:52:28.