Ticket #273 (closed defect: fixed)

Opened 4 months ago

Last modified 1 month ago

PHPUnit 3.3RC1 error in phpunit task adding files to filter

Reported by: silfreed@silfreed.net Assigned to: mrook
Priority: major Milestone: 2.3.3
Component: phing-tasks-phpunit Version: 2.3.1RC1
Keywords: Cc:

Description

PHPUnit 3.3RC1 throws an exception in PHPUnit_Util_Filter::addFileToFilter() which is used in PHPUnitTask.php to ignore certain files. Apparently the files being passed to this function aren't correct since the files can't be found and the exception is thrown.

It looks like this can be fixed by specifying the relative path to the files based on the path of the current file like in this patch.

-Doug

Index: PHPUnitTask.php
===================================================================
RCS file: /cvs/hovercraft/sandbox/php/pear/phing/tasks/ext/phpunit/PHPUnitTask.php,v
retrieving revision 1.2
diff -u -b -r1.2 PHPUnitTask.php
--- PHPUnitTask.php     27 Aug 2008 17:24:50 -0000      1.2
+++ PHPUnitTask.php     10 Sep 2008 16:45:10 -0000
@@ -104,6 +104,7 @@
                /**
                 * Add some defaults to the PHPUnit filter
                 */
+               $pwd = dirname(__FILE__);
                if (PHPUnitUtil::$installedVersion == 3)
                {
                        require_once 'PHPUnit/Framework.php';
@@ -114,26 +115,26 @@
                                define('PHPUnit_MAIN_METHOD', 'PHPUnitTask::undefined');
                        }
                        
-                       PHPUnit_Util_Filter::addFileToFilter('PHPUnitTask.php', 'PHING');
-                       PHPUnit_Util_Filter::addFileToFilter('PHPUnitTestRunner.php', 'PHING');
-                       PHPUnit_Util_Filter::addFileToFilter('phing/Task.php', 'PHING');
-                       PHPUnit_Util_Filter::addFileToFilter('phing/Target.php', 'PHING');
-                       PHPUnit_Util_Filter::addFileToFilter('phing/Project.php', 'PHING');
-                       PHPUnit_Util_Filter::addFileToFilter('phing/Phing.php', 'PHING');
-                       PHPUnit_Util_Filter::addFileToFilter('phing.php', 'PHING');
+                       PHPUnit_Util_Filter::addFileToFilter($pwd.'/PHPUnitTask.php', 'PHING');
+                       PHPUnit_Util_Filter::addFileToFilter($pwd.'/PHPUnitTestRunner.php', 'PHING');
+                       PHPUnit_Util_Filter::addFileToFilter($pwd.'/../../../Task.php', 'PHING');
+                       PHPUnit_Util_Filter::addFileToFilter($pwd.'/../../../Target.php', 'PHING');
+                       PHPUnit_Util_Filter::addFileToFilter($pwd.'/../../../Project.php', 'PHING');
+                       PHPUnit_Util_Filter::addFileToFilter($pwd.'/../../../Phing.php', 'PHING');
+                       PHPUnit_Util_Filter::addFileToFilter($pwd.'/../../../../phing.php', 'PHING');
                }
                else
                {
                        require_once 'PHPUnit2/Framework.php';
                        require_once 'PHPUnit2/Util/Filter.php';
                        
-                       PHPUnit2_Util_Filter::addFileToFilter('PHPUnitTask.php');
-                       PHPUnit2_Util_Filter::addFileToFilter('PHPUnitTestRunner.php');
-                       PHPUnit2_Util_Filter::addFileToFilter('phing/Task.php');
-                       PHPUnit2_Util_Filter::addFileToFilter('phing/Target.php');
-                       PHPUnit2_Util_Filter::addFileToFilter('phing/Project.php');
-                       PHPUnit2_Util_Filter::addFileToFilter('phing/Phing.php');
-                       PHPUnit2_Util_Filter::addFileToFilter('phing.php');
+                       PHPUnit2_Util_Filter::addFileToFilter($pwd.'/PHPUnitTask.php');
+                       PHPUnit2_Util_Filter::addFileToFilter($pwd.'/PHPUnitTestRunner.php');
+                       PHPUnit2_Util_Filter::addFileToFilter($pwd.'/../../../Task.php', 'PHING');
+                       PHPUnit2_Util_Filter::addFileToFilter($pwd.'/../../../Target.php', 'PHING');
+                       PHPUnit2_Util_Filter::addFileToFilter($pwd.'/../../../Project.php', 'PHING');
+                       PHPUnit2_Util_Filter::addFileToFilter($pwd.'/../../../Phing.php', 'PHING');
+                       PHPUnit2_Util_Filter::addFileToFilter($pwd.'/../../../../phing.php', 'PHING');
                }
        }

Attachments

Change History

10/06/08 19:01:49 changed by mrook

  • status changed from new to closed.
  • resolution set to fixed.

This bug has been fixed in the SVN tree, revision r393.

Thank you for the report, and for helping us make Phing better!

10/21/08 12:51:10 changed by hans

  • status changed from closed to reopened.
  • resolution deleted.
  • milestone changed from 2.3.1 to 2.3.3.

10/21/08 12:57:31 changed by hans

(In [408]) Applying fix from r393 to 2.3 branch. Refs #273, #291

10/21/08 13:00:11 changed by hans

  • status changed from reopened to closed.
  • resolution set to fixed.

10/21/08 22:53:28 changed by fred.alger@foxycart.com

Hah, good to see this is fixed. Burned half a day today chasing down this problem. One question about the path to the PHPUnit, however -- it will obviously work on Linux systems, but how about on Windows where the path component separator is backwards, i.e. a backslash?

10/21/08 22:53:41 changed by Frederick Alger <fred.alger@foxycart.com>

Here's how I patched my local PHPUnitTest.php:

--- PHPUnitTask.php 2008-10-21 15:47:04.000000000 -0700
+++ PHPUnitTask.php.patched 2008-10-21 15:47:21.000000000 -0700
@@ -101,6 +101,13 @@
    require_once 'phing/tasks/ext/phpunit/BatchTest.php';
    require_once 'phing/tasks/ext/phpunit/FormatterElement.php';

+    $fs = FileSystem::getFileSystem();
+    $sep = $fs->getSeparator();
+    $path = dirname(__FILE__) . $sep;
+
+    $phing_path = $path . join($sep, array('..', '..', '..', '..')) . $sep;
+    $phing_classpath = $phing_path . 'phing' . $sep;
+
    /**
     * Add some defaults to the PHPUnit filter
     */
@@ -114,26 +121,27 @@
        define('PHPUnit_MAIN_METHOD', 'PHPUnitTask::undefined');
      }

-     PHPUnit_Util_Filter::addFileToFilter('PHPUnitTask.php', 'PHING');
-     PHPUnit_Util_Filter::addFileToFilter('PHPUnitTestRunner.php', 'PHING');
-     PHPUnit_Util_Filter::addFileToFilter('phing/Task.php', 'PHING');
-     PHPUnit_Util_Filter::addFileToFilter('phing/Target.php', 'PHING');
-     PHPUnit_Util_Filter::addFileToFilter('phing/Project.php', 'PHING');
-     PHPUnit_Util_Filter::addFileToFilter('phing/Phing.php', 'PHING');
-     PHPUnit_Util_Filter::addFileToFilter('phing.php', 'PHING');
+
+     PHPUnit_Util_Filter::addFileToFilter($path.'PHPUnitTask.php', 'PHING');
+     PHPUnit_Util_Filter::addFileToFilter($path.'PHPUnitTestRunner.php', 'PHING');
+     PHPUnit_Util_Filter::addFileToFilter($phing_classpath.'Task.php', 'PHING');
+     PHPUnit_Util_Filter::addFileToFilter($phing_classpath, 'Target.php', 'PHING');
+     PHPUnit_Util_Filter::addFileToFilter($phing_classpath, 'Project.php', 'PHING');
+     PHPUnit_Util_Filter::addFileToFilter($phing_classpath, 'Phing.php', 'PHING');
+     PHPUnit_Util_Filter::addFileToFilter($phing_path.'phing.php', 'PHING');
    }
    else
    {
      require_once 'PHPUnit2/Framework.php';
      require_once 'PHPUnit2/Util/Filter.php';

-     PHPUnit2_Util_Filter::addFileToFilter('PHPUnitTask.php');
-     PHPUnit2_Util_Filter::addFileToFilter('PHPUnitTestRunner.php');
-     PHPUnit2_Util_Filter::addFileToFilter('phing/Task.php');
-     PHPUnit2_Util_Filter::addFileToFilter('phing/Target.php');
-     PHPUnit2_Util_Filter::addFileToFilter('phing/Project.php');
-     PHPUnit2_Util_Filter::addFileToFilter('phing/Phing.php');
-     PHPUnit2_Util_Filter::addFileToFilter('phing.php');
+     PHPUnit2_Util_Filter::addFileToFilter($path.'PHPUnitTask.php');
+     PHPUnit2_Util_Filter::addFileToFilter($path.'PHPUnitTestRunner.php');
+     PHPUnit2_Util_Filter::addFileToFilter($phing_classpath.'Task.php');
+     PHPUnit2_Util_Filter::addFileToFilter($phing_classpath.'Target.php');
+     PHPUnit2_Util_Filter::addFileToFilter($phing_classpath.'Project.php');
+     PHPUnit2_Util_Filter::addFileToFilter($phing_classpath.'Phing.php');
+     PHPUnit2_Util_Filter::addFileToFilter($phing_path.'phing.php');
    }
  }

11/11/08 21:53:30 changed by hans

  • status changed from closed to reopened.
  • resolution deleted.

According to Edward on list,this is still an issue.

11/19/08 17:41:24 changed by urkle

It looks like mrook applied a corrective fix to the branches (r427) (that for some reason wasn't showing up in the trac view of SVN 2 weeks ago) that looks like it'll fix it.. The only thing I noticed is that the main "phing.php" class was removed from the list of filtered files. Was this intentional? or an "oops"?

11/23/08 21:28:39 changed by mrook

  • status changed from reopened to closed.
  • resolution set to fixed.

This was intentional, the main class 'Phing.php' is still included. Closing this ticket, as it appears to be -finally- fixed.

11/24/08 23:05:57 changed by hans

Excellent -- I'll roll 2.3.3 with this fix. Thanks, Michiel.


Add/Change #273 (PHPUnit 3.3RC1 error in phpunit task adding files to filter)




Action