phpcs - Fix error, "Expected 1 newline at end of file; XXX found".
[civicrm-core.git] / Civi / CiUtil / Command / AntagonistCommand.php
CommitLineData
f03dc6b0
TO
1<?php
2namespace Civi\CiUtil\Command;
3
4class AntagonistCommand {
00be9182 5 public static function main($argv) {
f03dc6b0
TO
6 if (count($argv) != 3) {
7 print "usage: {$argv[0]} <TargetTest::testFunc> </path/to/suite>\n";
8 exit(1);
9 }
10 list ($program, $target, $suite) = $argv;
11
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'),
18// );
19 $antagonist = self::findAntagonist($target, $candidateTests);
20 if ($antagonist) {
21 print_r(array('found an antagonist' => $antagonist));
22 }
23 else {
24 print_r(array('found no antagonists'));
25 }
26 }
27
28 /**
29 * @param string $target e.g. "MyTest::testFoo"
30 * @param array $candidateTests list of strings (e.g. "MyTest::testFoo")
31 * @return array|null array contains keys:
32 * - antagonist: array
33 * - file: string
34 * - class: string
35 * - method: string
36 * - expectedResults: array
37 * - actualResults: array
38 */
00be9182 39 public static function findAntagonist($target, $candidateTests) {
f03dc6b0
TO
40 //$phpUnit = new \Civi\CiUtil\EnvTestRunner('./scripts/phpunit', 'EnvTests');
41 $phpUnit = new \Civi\CiUtil\EnvTestRunner('phpunit', 'tests/phpunit/EnvTests.php');
42 $expectedResults = $phpUnit->run(array($target));
43 print_r(array('$expectedResults' => $expectedResults));
44
45 foreach ($candidateTests as $candidateTest) {
46 $candidateTestName = $candidateTest['class'] . '::' . $candidateTest['method'];
47 if ($candidateTestName == $target) {
48 continue;
49 }
50 $actualResults = $phpUnit->run(array(
51 $candidateTestName,
52 $target,
53 ));
54 print_r(array('$actualResults' => $actualResults));
55 foreach ($expectedResults as $testName => $expectedResult) {
56 if ($actualResults[$testName] != $expectedResult) {
57 return array(
58 'antagonist' => $candidateTest,
59 'expectedResults' => $expectedResults,
60 'actualResults' => $actualResults,
61 );
62 }
63 }
64 }
65 return NULL;
66 }
ef10e0b5 67}