Thursday, January 17, 2013

Re: Problem running CakeTestSuite in CakePHP 2.2.5 with PHPUnit 3.6.12

I got it working, but this is very strange.

IF there are NO tests in the App and you try to run a test suite for a plugin, then it will cause this error.

IF there are tests in the App then this error goes away.

Looks like Cake can't find the test suite for the plugin when the App doesn't have any tests. Adding some dummy tests solved this.

It's only by fluke that I found this.

On Thursday, 17 January 2013 13:37:36 UTC-5, Mathew wrote:
Hi,

I'm unable to run a CakeTestSuite, but I can run a CakeTestCase just fine on the CLI.

When I run the CakeTestSuite I get the following error.

Warning: is_file() expects parameter 1 to be string, array given in C:\Program Files (x86)\PHP\PEAR\PHPUnit\Util\Skeleton\Test.php on line 109

Call Stack:
    0.0004     335536   1. {main}() C:\work\zend\cake\Cake\Console\cake.php:0
    0.0049     452272   2. ShellDispatcher::run($argv = array (0 => 'C:\\work\\zend\\cake\\Cake\\Console\\cake.php', 1 => '-working', 2 => 'C:\\work\\zend\\cgtag\\cgtag\\app ', 3 =
> 'test', 4 => 'agg', 5 => 'Models')) C:\work\zend\cake\Cake\Console\cake.php:43
    0.1724    2600904   3. ShellDispatcher->dispatch() C:\work\zend\cake\Cake\Console\ShellDispatcher.php:69
    0.2364    3349648   4. Shell->runCommand($command = 'agg', $argv = array (0 => 'agg', 1 => 'Models')) C:\work\zend\cake\Cake\Console\ShellDispatcher.php:201
    0.2998    4215400   5. TestShell->main() C:\work\zend\cake\Cake\Console\Shell.php:395
    0.3002    4216112   6. TestShell->_run($runnerArgs = array ('core' => FALSE, 'app' => FALSE, 'plugin' => 'agg', 'output' => 'text', 'case' => 'Models'), $options = array (0 =>
'--colors')) C:\work\zend\cake\Cake\Console\Command\TestShell.php:259
    0.3169    4540880   7. CakeTestSuiteCommand->run($argv = array (0 => '--colors'), $exit = ???) C:\work\zend\cake\Cake\Console\Command\TestShell.php:274
    0.3960    6485384   8. PHPUnit_Util_Skeleton_Test->__construct($inClassName = 'All model tests', $inSourceFile = array ('core' => FALSE, 'app' => FALSE, 'plugin' => 'agg', 'out
put' => 'text', 'case' => 'Models'), $outClassName = ???, $outSourceFile = ???) C:\work\zend\cake\Cake\TestSuite\CakeTestSuiteCommand.php:80
    0.3962    6485512   9. is_file(array ('core' => FALSE, 'app' => FALSE, 'plugin' => 'agg', 'output' => 'text', 'case' => 'Models')) C:\Program Files (x86)\PHP\PEAR\PHPUnit\Util\
Skeleton\Test.php:109


Variables in local scope (#8):
  $inClassName = 'All model tests'
  $inSourceFile = array ('core' => FALSE, 'app' => FALSE, 'plugin' => 'agg', 'output' => 'text', 'case' => 'Models')
  $outClassName = ''
  $outSourceFile = ''
  $possibleFilename = *uninitialized*
  $possibleFilenames = *uninitialized*
  $reflector = *uninitialized*

Error: "Array" could not be opened.
#0 C:\work\zend\cake\Cake\TestSuite\CakeTestSuiteCommand.php(80): PHPUnit_Util_Skeleton_Test->__construct('All model tests', Array)
#1 C:\work\zend\cake\Cake\Console\Command\TestShell.php(274): CakeTestSuiteCommand->run(Array)
#2 C:\work\zend\cake\Cake\Console\Command\TestShell.php(259): TestShell->_run(Array, Array)
#3 C:\work\zend\cake\Cake\Console\Shell.php(395): TestShell->main()
#4 C:\work\zend\cake\Cake\Console\ShellDispatcher.php(201): Shell->runCommand('agg', Array)
#5 C:\work\zend\cake\Cake\Console\ShellDispatcher.php(69): ShellDispatcher->dispatch()
#6 C:\work\zend\cake\Cake\Console\cake.php(43): ShellDispatcher::run(Array)
#7 {main}

--------------------------

Now I ran this under the debugger and found that the problem appears to be in CakeTestSuiteCommand on line 77.

$skeleton = new PHPUnit_Util_Skeleton_Test(
$suite->getName(),
$this->arguments['testFile']
);

PHPUnit_Util_Skeleton_Test is expecting the second parameter to be a string, but Cake is using an array.

Here's what the array holds.

$this->arguments['testFile'] = array(
  'core'=>false,
  'app'=>false,
  'plugin'=>'agg',
  'output'=>'text',
  'case'=>'Models'
)

I don't know what to do to fix this. Is this a bug in Cake, or am I not configuring the test correctly.

I also tried to run this Suite via the Web but get the same error message.

Please help.


--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com.
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.
 
 

No comments: