![]() |
|
Snippets |
|
We wanted to use a 'propel-insert-sql' in our acceptance tests suite to clear DB before every test reducing interferences. We all learned here http://www.symfony-project.com/snippets/snippet/16 how to call a Pake task from our PHP code. To get a quiet 'propel-insert-sql' task letting 'test' task be verbose and reporting test results we must add a method to the pakeTask class in pakeTask.class.php file:
public function setVerbose() { $this->verbose = false; }
and edit sfPakePropel.php file to make 'propel-insert-sql' task quiet:
function run_propel_insert_sql($task, $args) { $task->setVerbose(); _call_phing($task, 'insert-sql'); }
This way we have a lot quiter acceptance test suite and a clean DB whenever we want.
I find boring to wait to run all the tests while I'm focusing on a single one or few ones. Thus I decided to hack pake simpletest task to accept test group selection.
1st step:
In your Pake tasks folder (eg.: /usr/share/pear/pake/tasks) edit the pakeSimpletestTask.class.php file
public static function call_simpletest($task, $type = 'text', $dirs = array(), $test_file = null)
and add this few lines replacing the single line 48
if (!$test_file) { $files = pakeFinder::type('file')->name('*Test.php')->in($test_dirs); } else { $files = pakeFinder::type('file')->name($test_file)->in($test_dirs); }
This way you are making your pake test task able to accept "hints" about which file to load in the test folder.
2nd step:
Open the sfPakeTest.php file in your symfony/tasks folder and do the following: Add
$test_file = null; if (count($args) > 1) { $test_file = $args[1]; }
at line 14, then change last line into
pakeSimpletestTask::call_simpletest($task, 'text', $dirs_to_test, $test_file);
That's all.
Now you can launch symfony test <app_name> <test_filename> and have this only executed with no loss of time. You can even use wildcards!!! For example: symfont test myportal *ValidatorTest.php It will execute all the tests named with that pattern in your test/myportal folder.
Super confortable testing at last! Test driven programming requires very flexible test groups approach and this could be a small contribution. Hope it helps. Bye!