2 namespace Civi\CiUtil\Command
;
4 class AntagonistCommand
{
5 public static function main($argv) {
6 if (count($argv) != 3) {
7 print "usage: {$argv[0]} <TargetTest::testFunc> </path/to/suite>\n";
10 list ($program, $target, $suite) = $argv;
12 $candidateTests = \Civi\CiUtil\PHPUnitScanner
::findTestsByPath(array($suite));
13 // $candidateTests = array(
14 // array('class' => 'CRM_Core_RegionTest', 'method' => 'testBlank'),
15 // array('class' => 'CRM_Core_RegionTest', 'method' => 'testDefault'),
16 // array('class' => 'CRM_Core_RegionTest', 'method' => 'testOverride'),
17 // array('class' => 'CRM_Core_RegionTest', 'method' => 'testAllTypes'),
19 $antagonist = self
::findAntagonist($target, $candidateTests);
21 print_r(array('found an antagonist' => $antagonist));
24 print_r(array('found no antagonists'));
29 * @param string $target
30 * E.g. "MyTest::testFoo".
31 * @param array $candidateTests
32 * List of strings (e.g. "MyTest::testFoo").
33 * @return array|null array contains keys:
38 * - expectedResults: array
39 * - actualResults: array
41 public static function findAntagonist($target, $candidateTests) {
42 //$phpUnit = new \Civi\CiUtil\EnvTestRunner('./scripts/phpunit', 'EnvTests');
43 $phpUnit = new \Civi\CiUtil\
EnvTestRunner('phpunit', 'tests/phpunit/EnvTests.php');
44 $expectedResults = $phpUnit->run(array($target));
45 print_r(array('$expectedResults' => $expectedResults));
47 foreach ($candidateTests as $candidateTest) {
48 $candidateTestName = $candidateTest['class'] . '::' . $candidateTest['method'];
49 if ($candidateTestName == $target) {
52 $actualResults = $phpUnit->run(array(
56 print_r(array('$actualResults' => $actualResults));
57 foreach ($expectedResults as $testName => $expectedResult) {
58 if ($actualResults[$testName] != $expectedResult) {
60 'antagonist' => $candidateTest,
61 'expectedResults' => $expectedResults,
62 'actualResults' => $actualResults,