Index: server/pifr_server.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue_file_review/server/pifr_server.css,v
retrieving revision 1.6
diff -u -r1.6 pifr_server.css
--- server/pifr_server.css	18 Nov 2009 01:19:05 -0000	1.6
+++ server/pifr_server.css	18 Nov 2009 01:49:03 -0000
@@ -51,6 +51,7 @@
 .pifr-assertion-summary {
   padding: 5px;
   border: 1px solid #cccccc;
+  margin-bottom: 15px;
 }
 
 .pifr-assertion-header {
Index: review/assertion/pifr_assertion.server.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue_file_review/review/assertion/pifr_assertion.server.inc,v
retrieving revision 1.5
diff -u -r1.5 pifr_assertion.server.inc
--- review/assertion/pifr_assertion.server.inc	18 Nov 2009 01:19:05 -0000	1.5
+++ review/assertion/pifr_assertion.server.inc	18 Nov 2009 01:49:03 -0000
@@ -118,6 +118,7 @@
     // Build list of test summaries.
     $header = array(t('Test name'), t('Pass'), t('Fail'), t('Exception'));
     $rows = array();
+    $rows_fail = array();
     foreach ($result['data'] as $detail) {
       // Display the summary of the test.
       $row = array();
@@ -139,6 +140,9 @@
         'class' => 'pifr-' . $class,
         'data' => $row,
       );
+      if ($class != 'pass') {
+        $rows_fail[] = $rows[count($rows) - 1];
+      }
 
       // If individual assertions where included, display them below the
       // summary row with the ability to expand/collapse via javascript.
@@ -170,6 +174,9 @@
           'class' => 'pifr-assertion-wrapper',
           'data' => $row,
         );
+        if ($class != 'pass') {
+          $rows_fail[] = $rows[count($rows) - 1];
+        }
       }
     }
 
@@ -182,6 +189,13 @@
       $summary = '<div class="pifr-assertion-summary pifr-' . ($pass ? 'ok' : 'error') . '">' . $summary . '</div>';
     }
 
+    // Display failed rows above a table containing all rows.
+    if ($rows_fail) {
+      return $summary .
+        '<h3>' . t('Non-pass') . '</h3>' . theme('table', $header, $rows_fail) .
+        '<h3>' . t('All') . '</h3>' . theme('table', $header, $rows);
+    }
+
     // Merge all components.
     return $rows ? $summary . theme('table', $header, $rows) : '';
   }
