HR-216 - CiviReportTestCase - Add more output for diagnosing errors
authorTim Otten <totten@civicrm.org>
Mon, 24 Feb 2014 22:33:03 +0000 (14:33 -0800)
committerTim Otten <totten@civicrm.org>
Mon, 24 Feb 2014 22:33:03 +0000 (14:33 -0800)
tests/phpunit/CiviTest/CiviReportTestCase.php

index f43dc77ab87cc0a95f90aa98fdbf664e409fc416..33759743d3d53df7d8dab34263d1c1914b0113e5 100644 (file)
@@ -106,20 +106,37 @@ class CiviReportTestCase extends CiviUnitTestCase {
   public function assertCsvArraysEqual($expectedCsvArray, $actualCsvArray) {
     // TODO provide better debug output
 
+    $flatData = "\n===== EXPECTED DATA ====\n"
+      . $this->flattenCsvArray($expectedCsvArray)
+      . "\n===== ACTUAL DATA ====\n"
+      . $this->flattenCsvArray($actualCsvArray);
+
     $this->assertEquals(
       count($actualCsvArray),
       count($expectedCsvArray),
-      'Arrays have different number of rows; in line ' . __LINE__
+      'Arrays have different number of rows; in line ' . __LINE__ . '; data: ' . $flatData
     );
 
     foreach ($actualCsvArray as $intKey => $strVal) {
+      $rowData = var_export(array(
+        'expected' => $expectedCsvArray[$intKey],
+        'actual'  => $actualCsvArray[$intKey],
+      ), TRUE);
       $this->assertNotNull($expectedCsvArray[$intKey], 'In line ' . __LINE__);
       $this->assertEquals(
         count($actualCsvArray[$intKey]),
         count($expectedCsvArray[$intKey]),
-        'Arrays have different number of columns at row ' . $intKey . '; in line ' . __LINE__
+        'Arrays have different number of columns at row ' . $intKey . '; in line ' . __LINE__. '; data: ' . $rowData
       );
       $this->assertEquals($expectedCsvArray[$intKey], $strVal);
     }
   }
+
+  public function flattenCsvArray($rows) {
+    $result = '';
+    foreach ($rows as $row) {
+      $result .= implode(',', $row) . "\n";
+    }
+    return $result;
+  }
 }