2 namespace Civi\CiUtil\Command
;
5 * Class AntagonistCommand
7 * @package Civi\CiUtil\Command
9 class AntagonistCommand
{
14 public static function main($argv) {
15 if (count($argv) != 3) {
16 print "usage: {$argv[0]} <TargetTest::testFunc> </path/to/suite>\n";
19 list ($program, $target, $suite) = $argv;
21 $candidateTests = \Civi\CiUtil\PHPUnitScanner
::findTestsByPath([$suite]);
22 // $candidateTests = array(
23 // array('class' => 'CRM_Core_RegionTest', 'method' => 'testBlank'),
24 // array('class' => 'CRM_Core_RegionTest', 'method' => 'testDefault'),
25 // array('class' => 'CRM_Core_RegionTest', 'method' => 'testOverride'),
26 // array('class' => 'CRM_Core_RegionTest', 'method' => 'testAllTypes'),
28 $antagonist = self
::findAntagonist($target, $candidateTests);
30 print_r(['found an antagonist' => $antagonist]);
33 print_r(['found no antagonists']);
38 * @param string $target
39 * E.g. "MyTest::testFoo".
40 * @param array $candidateTests
41 * List of strings (e.g. "MyTest::testFoo").
43 * array contains keys:
48 * - expectedResults: array
49 * - actualResults: array
51 public static function findAntagonist($target, $candidateTests) {
52 //$phpUnit = new \Civi\CiUtil\EnvTestRunner('./scripts/phpunit', 'EnvTests');
53 $phpUnit = new \Civi\CiUtil\
EnvTestRunner('phpunit', 'tests/phpunit/EnvTests.php');
54 $expectedResults = $phpUnit->run([$target]);
55 print_r(['$expectedResults' => $expectedResults]);
57 foreach ($candidateTests as $candidateTest) {
58 $candidateTestName = $candidateTest['class'] . '::' . $candidateTest['method'];
59 if ($candidateTestName == $target) {
62 $actualResults = $phpUnit->run([
66 print_r(['$actualResults' => $actualResults]);
67 foreach ($expectedResults as $testName => $expectedResult) {
68 if ($actualResults[$testName] != $expectedResult) {
70 'antagonist' => $candidateTest,
71 'expectedResults' => $expectedResults,
72 'actualResults' => $actualResults,