/** * {@inheritdoc} */ public function buildForm(array $form, array &$form_state, $test_id = NULL) { $this->buildStatusImageMap(); // Make sure there are test results to display and a re-run is not being // performed. $results = array(); if (is_numeric($test_id) && !($results = $this->getResults($test_id))) { drupal_set_message($this->t('No test results to display.'), 'error'); return new RedirectResponse(url('admin/config/development/testing', array('absolute' => TRUE))); } // Load all classes and include CSS. $form['#attached']['css'][] = drupal_get_path('module', 'simpletest') . '/css/simpletest.module.css'; // Keep track of which test cases passed or failed. $filter = array('pass' => array(), 'fail' => array()); // Summary result widget. $form['result'] = array('#type' => 'fieldset', '#title' => $this->t('Results')); $form['result']['summary'] = $summary = array('#theme' => 'simpletest_result_summary', '#pass' => 0, '#fail' => 0, '#exception' => 0, '#debug' => 0); simpletest_classloader_register(); // Cycle through each test group. $header = array($this->t('Message'), $this->t('Group'), $this->t('Filename'), $this->t('Line'), $this->t('Function'), array('colspan' => 2, 'data' => $this->t('Status'))); $form['result']['results'] = array(); foreach ($results as $group => $assertions) { // Create group details with summary information. $info = TestDiscovery::getTestInfo(new \ReflectionClass($group)); $form['result']['results'][$group] = array('#type' => 'details', '#title' => $info['name'], '#open' => TRUE, '#description' => $info['description']); $form['result']['results'][$group]['summary'] = $summary; $group_summary =& $form['result']['results'][$group]['summary']; // Create table of assertions for the group. $rows = array(); foreach ($assertions as $assertion) { $row = array(); // Assertion messages are in code, so we assume they are safe. $row[] = SafeMarkup::set($assertion->message); $row[] = $assertion->message_group; $row[] = drupal_basename($assertion->file); $row[] = $assertion->line; $row[] = $assertion->function; $row[] = $this->statusImageMap[$assertion->status]; $class = 'simpletest-' . $assertion->status; if ($assertion->message_group == 'Debug') { $class = 'simpletest-debug'; } $rows[] = array('data' => $row, 'class' => array($class)); $group_summary['#' . $assertion->status]++; $form['result']['summary']['#' . $assertion->status]++; } $form['result']['results'][$group]['table'] = array('#type' => 'table', '#header' => $header, '#rows' => $rows); // Set summary information. $group_summary['#ok'] = $group_summary['#fail'] + $group_summary['#exception'] == 0; $form['result']['results'][$group]['#open'] = !$group_summary['#ok']; // Store test group (class) as for use in filter. $filter[$group_summary['#ok'] ? 'pass' : 'fail'][] = $group; } // Overall summary status. $form['result']['summary']['#ok'] = $form['result']['summary']['#fail'] + $form['result']['summary']['#exception'] == 0; // Actions. $form['#action'] = url('admin/config/development/testing/results/re-run'); $form['action'] = array('#type' => 'fieldset', '#title' => $this->t('Actions'), '#attributes' => array('class' => array('container-inline')), '#weight' => -11); $form['action']['filter'] = array('#type' => 'select', '#title' => 'Filter', '#options' => array('all' => $this->t('All (@count)', array('@count' => count($filter['pass']) + count($filter['fail']))), 'pass' => $this->t('Pass (@count)', array('@count' => count($filter['pass']))), 'fail' => $this->t('Fail (@count)', array('@count' => count($filter['fail']))))); $form['action']['filter']['#default_value'] = $filter['fail'] ? 'fail' : 'all'; // Categorized test classes for to be used with selected filter value. $form['action']['filter_pass'] = array('#type' => 'hidden', '#default_value' => implode(',', $filter['pass'])); $form['action']['filter_fail'] = array('#type' => 'hidden', '#default_value' => implode(',', $filter['fail'])); $form['action']['op'] = array('#type' => 'submit', '#value' => $this->t('Run tests')); $form['action']['return'] = array('#type' => 'link', '#title' => $this->t('Return to list'), '#href' => 'admin/config/development/testing'); if (is_numeric($test_id)) { simpletest_clean_results_table($test_id); } return $form; }
/** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state, $test_id = NULL) { // Make sure there are test results to display and a re-run is not being // performed. $results = array(); if (is_numeric($test_id) && !($results = $this->getResults($test_id))) { drupal_set_message($this->t('No test results to display.'), 'error'); return new RedirectResponse($this->url('simpletest.test_form', array(), array('absolute' => TRUE))); } // Load all classes and include CSS. $form['#attached']['library'][] = 'simpletest/drupal.simpletest'; // Add the results form. $filter = static::addResultForm($form, $results, $this->getStringTranslation()); // Actions. $form['#action'] = $this->url('simpletest.result_form', array('test_id' => 're-run')); $form['action'] = array('#type' => 'fieldset', '#title' => $this->t('Actions'), '#attributes' => array('class' => array('container-inline')), '#weight' => -11); $form['action']['filter'] = array('#type' => 'select', '#title' => 'Filter', '#options' => array('all' => $this->t('All (@count)', array('@count' => count($filter['pass']) + count($filter['fail']))), 'pass' => $this->t('Pass (@count)', array('@count' => count($filter['pass']))), 'fail' => $this->t('Fail (@count)', array('@count' => count($filter['fail']))))); $form['action']['filter']['#default_value'] = $filter['fail'] ? 'fail' : 'all'; // Categorized test classes for to be used with selected filter value. $form['action']['filter_pass'] = array('#type' => 'hidden', '#default_value' => implode(',', $filter['pass'])); $form['action']['filter_fail'] = array('#type' => 'hidden', '#default_value' => implode(',', $filter['fail'])); $form['action']['op'] = array('#type' => 'submit', '#value' => $this->t('Run tests')); $form['action']['return'] = array('#type' => 'link', '#title' => $this->t('Return to list'), '#url' => Url::fromRoute('simpletest.test_form')); if (is_numeric($test_id)) { simpletest_clean_results_table($test_id); } return $form; }