Index: review/coder/pifr_coder.client.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue_file_review/review/coder/pifr_coder.client.inc,v
retrieving revision 1.8
diff -u -r1.8 pifr_coder.client.inc
--- review/coder/pifr_coder.client.inc	17 Dec 2009 02:12:15 -0000	1.8
+++ review/coder/pifr_coder.client.inc	17 Dec 2009 21:44:26 -0000
@@ -23,6 +23,16 @@
   protected $results = array();
 
   /**
+   * Status of coder review, for use by status().
+   *
+   * @var array
+   */
+  protected $status = array(
+    'position' => 0,
+    'total' => 0,
+  );
+
+  /**
    * Perform coder review.
    */
   protected function review() {
@@ -49,8 +59,10 @@
     // Cycle through all relevant files and perform review.
     $files = $this->syntax_ignore($this->file_list());
 
+    $this->status['total'] = count($files);
     $not_found = 0;
     foreach ($files as $file) {
+      $this->status['position']++;
       $filepath = $this->checkout_directory . '/' . $file;
 
       // Ensure that the file exists and is not a reference to a file that was
@@ -148,4 +160,16 @@
     }
     return $result;
   }
+
+  /**
+   * If on review operation then display the coder review position.
+   */
+  public function status() {
+    if ($this->operation == 'review') {
+      return t('Reviewing file @position of @total.', array(
+        '@position' => number_format($this->status['position']),
+        '@total' => number_format($this->status['total']),
+      ));
+    }
+  }
 }
Index: review/client.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue_file_review/review/client.inc,v
retrieving revision 1.20
diff -u -r1.20 client.inc
--- review/client.inc	16 Dec 2009 23:18:45 -0000	1.20
+++ review/client.inc	17 Dec 2009 21:44:26 -0000
@@ -86,6 +86,13 @@
   protected $files = array();
 
   /**
+   * Current operation for use by status().
+   *
+   * @var string
+   */
+  protected $operation = 'init';
+
+  /**
    * Error information with keys: 'code' and 'details'.
    *
    * @var array
@@ -244,6 +251,7 @@
     // operations have been completed.
     $code = 1;
     foreach ($this->operations as $operation) {
+      $this->operation = $operation;
       $this->log('Invoking operation [' . $operation . ']...');
       $this->$operation();
 
@@ -597,6 +605,15 @@
   }
 
   /**
+   * Get the current status of the review.
+   *
+   * @return string Summary of current status.
+   */
+  public function status() {
+    return t('Currently on operation [@operation].', array('@operation' => $this->operation));
+  }
+
+  /**
    * Wrapper for PHP exec() function.
    *
    * @param string $command Command to execute.
Index: review/simpletest/pifr_simpletest.client.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue_file_review/review/simpletest/pifr_simpletest.client.inc,v
retrieving revision 1.15
diff -u -r1.15 pifr_simpletest.client.inc
--- review/simpletest/pifr_simpletest.client.inc	10 Dec 2009 23:09:51 -0000	1.15
+++ review/simpletest/pifr_simpletest.client.inc	17 Dec 2009 21:44:26 -0000
@@ -186,4 +186,14 @@
     }
     return $result;
   }
+
+  /**
+   * If on review operation then display the assertion count.
+   */
+  public function status() {
+    if ($this->operation == 'review') {
+      $count = count($database->query('SELECT * FROM {simpletest}'));
+      return t('@count assertions.', array('@count' => number_format($count)));
+    }
+  }
 }
Index: client/pifr_client.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue_file_review/client/pifr_client.admin.inc,v
retrieving revision 1.26
diff -u -r1.26 pifr_client.admin.inc
--- client/pifr_client.admin.inc	4 Dec 2009 22:22:24 -0000	1.26
+++ client/pifr_client.admin.inc	17 Dec 2009 21:44:26 -0000
@@ -17,7 +17,7 @@
     '#type' => 'item',
     '#title' => t('Client'),
     '#value' => ($busy ?
-                 t('testing [@count assertions]', array('@count' => number_format(pifr_client_admin_assertion_count()))) :
+                 t('testing (see below for details)') :
                  t('idle') . ' ' . l(t('(run tests locally)'), 'pifr/client/review/test')) .
                  '<br />',
   );
@@ -31,10 +31,35 @@
   // If the log has events then display the log.
   $log_file = file_directory_path() . '/review.log';
   if (file_exists($log_file) && ($log = file_get_contents($log_file))) {
+    $test = variable_get('pifr_client_test', array());
+    $plugin = pifr_client_review_load($test);
+    $form['review'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Review'),
+      '#description' => t('Information about the current review.'),
+      '#access' => !$busy,
+      '#attributes' => array('class' => 'container-inline'),
+    );
+    $form['review']['plugin'] = array(
+      '#type' => 'item',
+      '#title' => t('Plugin'),
+      '#value' => $test['review']['plugin'],
+    );
+    $form['review']['arguments'] = array(
+      '#type' => 'item',
+      '#title' => t('Argument(s)'),
+      '#value' => print_r($test['review']['argument'], TRUE),
+    );
+    $form['review']['status'] = array(
+      '#type' => 'item',
+      '#title' => t('Status'),
+      '#value' => $plugin->status(),
+    );
+
     $form['log'] = array(
       '#type' => 'fieldset',
       '#title' => t('Log'),
-      '#description' => t('Last updated @date.', array('@date' => format_date(filemtime($log_file), 'custom', 'l, m/d/Y'))),
+      '#description' => t('Last updated @date.', array('@date' => format_date(filemtime($log_file), 'custom', 'l, at m/d/Y G:i:s'))),
       '#weight' => -7,
       '#value' => '<pre>' . $log . '</pre>',
       '#collapsible' => TRUE,
@@ -50,24 +75,6 @@
 }
 
 /**
- * Get the number of assertions that have been made during the current test
- * suite run.
- *
- * @return integer Number of assertions.
- */
-function pifr_client_admin_assertion_count() {
-  module_load_include('review.inc', 'pifr_client');
-  $type = pifr_client_review_database_type();
-
-  require_once drupal_get_path('module', 'pifr_client') . '/review/db/db.inc';
-  require_once drupal_get_path('module', 'pifr_client') . '/review/db/' . $type. '.inc';
-  $database = 'pifr_client_db_interface_' . $type;
-  $database = new $database;
-
-  return count($database->query('SELECT * FROM {simpletest}'));
-}
-
-/**
  * Reset variables.
  */
 function pifr_client_admin_dashboard_form_toggle_submit($form, &$form_state) {
Index: client/pifr_client.review.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project_issue_file_review/client/pifr_client.review.inc,v
retrieving revision 1.11
diff -u -r1.11 pifr_client.review.inc
--- client/pifr_client.review.inc	8 Dec 2009 19:01:29 -0000	1.11
+++ client/pifr_client.review.inc	17 Dec 2009 21:44:26 -0000
@@ -54,21 +54,23 @@
  * @return object Instantiated review class, or FALSE if invalid review plugin.
  */
 function pifr_client_review_load(array $test) {
+  static $instance = FALSE;
+
   // Load base review class.
   require_once drupal_get_path('module', 'pifr') . '/review/client.inc';
 
   // Load review plugin and run review.
-  if (module_exists($test['review']['plugin'])) {
+  if (!$instance && module_exists($test['review']['plugin'])) {
     require_once drupal_get_path('module', $test['review']['plugin']) . '/' . $test['review']['plugin'] . '.client.inc';
     $class = 'pifr_client_review_' . $test['review']['plugin'];
 
     // Initialize review.
-    return new $class($test);
+    $instance = new $class($test);
   }
   else {
     watchdog('pifr_client', 'Invalid review plugin [@plugin].', array('@plugin' => $test['review']['plugin']), WATCHDOG_ERROR);
   }
-  return FALSE;
+  return $instance;
 }
 
 /**
