Commit b8ddc399 authored by alexpott's avatar alexpott

Issue #1978978 by plopesc, ParisLiakos, dawehner: Convert simpletest_test_form() to a Controller.

parent 1ac72a9d
......@@ -254,15 +254,15 @@ public function submitForm(array &$form, array &$form_state) {
return;
}
$form_execute = array();
$form_state_execute = array('values' => array());
foreach ($classes as $class) {
$form_state_execute['values'][$class] = 1;
}
// @todo When simpletest_test_form is converted, extend it and remove this.
\Drupal::moduleHandler()->loadInclude('simpletest', 'inc', 'simpletest.pages');
simpletest_test_form_submit(array(), $form_state_execute);
// Submit the simpletest test form to rerun the tests.
$simpletest_test_form = new SimpletestTestForm();
$simpletest_test_form->submitForm($form_execute, $form_state_execute);
$form_state['redirect'] = $form_state_execute['redirect'];
}
......
<?php
/**
* @file
* Contains \Drupal\simpletest\Form\SimpletestTestForm.
*/
namespace Drupal\simpletest\Form;
use Drupal\Core\Form\FormInterface;
/**
* List tests arranged in groups that can be selected and run.
*/
class SimpletestTestForm implements FormInterface {
/**
* {@inheritdoc}
*/
public function getFormID() {
return 'simpletest_test_form';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, array &$form_state) {
$form['tests'] = array(
'#type' => 'details',
'#title' => t('Tests'),
'#description' => t('Select the test(s) or test group(s) you would like to run, and click <em>Run tests</em>.'),
);
$form['tests']['table'] = array(
'#theme' => 'simpletest_test_table',
);
// Generate the list of tests arranged by group.
$groups = simpletest_test_get_all();
$groups['PHPUnit'] = simpletest_phpunit_get_available_tests();
$form_state['storage']['PHPUnit'] = $groups['PHPUnit'];
foreach ($groups as $group => $tests) {
$form['tests']['table'][$group] = array(
'#collapsed' => TRUE,
);
foreach ($tests as $class => $info) {
$form['tests']['table'][$group][$class] = array(
'#type' => 'checkbox',
'#title' => $info['name'],
'#description' => $info['description'],
);
}
}
// Operation buttons.
$form['tests']['op'] = array(
'#type' => 'submit',
'#value' => t('Run tests'),
);
$form['clean'] = array(
'#type' => 'fieldset',
'#title' => t('Clean test environment'),
'#description' => t('Remove tables with the prefix "simpletest" and temporary directories that are left over from tests that crashed. This is intended for developers when creating tests.'),
);
$form['clean']['op'] = array(
'#type' => 'submit',
'#value' => t('Clean environment'),
'#submit' => array('simpletest_clean_environment'),
);
return $form;
}
/**
* {@inheritdoc}
*/
public function validateForm(array &$form, array &$form_state) {
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, array &$form_state) {
// Get list of tests.
$tests_list = array();
simpletest_classloader_register();
$phpunit_all = array_keys($form_state['storage']['PHPUnit']);
foreach ($form_state['values'] as $class_name => $value) {
// Since class_exists() will likely trigger an autoload lookup,
// we do the fast check first.
if ($value === 1 && class_exists($class_name)) {
$test_type = in_array($class_name, $phpunit_all) ? 'UnitTest' : 'WebTest';
$tests_list[$test_type][] = $class_name;
}
}
if (count($tests_list) > 0 ) {
$test_id = simpletest_run_tests($tests_list, 'drupal');
$form_state['redirect'] = 'admin/config/development/testing/results/' . $test_id;
}
else {
drupal_set_message(t('No test(s) selected.'), 'error');
}
}
}
......@@ -34,11 +34,8 @@ function simpletest_help($path, $arg) {
function simpletest_menu() {
$items['admin/config/development/testing'] = array(
'title' => 'Testing',
'page callback' => 'drupal_get_form',
'page arguments' => array('simpletest_test_form'),
'description' => 'Run tests against Drupal core and your modules. These tests help assure that your site code is working as designed.',
'access arguments' => array('administer unit tests'),
'file' => 'simpletest.pages.inc',
'route_name' => 'simpletest_test_form',
'weight' => -5,
);
$items['admin/config/development/testing/list'] = array(
......@@ -55,7 +52,7 @@ function simpletest_menu() {
$items['admin/config/development/testing/results/%'] = array(
'title' => 'Test result',
'description' => 'View result of tests.',
'router_name' => 'simpletest_result_form',
'route_name' => 'simpletest_result_form',
);
return $items;
}
......@@ -79,11 +76,11 @@ function simpletest_theme() {
return array(
'simpletest_test_table' => array(
'render element' => 'table',
'file' => 'simpletest.pages.inc',
'file' => 'simpletest.theme.inc',
),
'simpletest_result_summary' => array(
'render element' => 'form',
'file' => 'simpletest.pages.inc',
'file' => 'simpletest.theme.inc',
),
);
}
......
......@@ -5,6 +5,13 @@ simpletest_settings:
requirements:
_permission: 'administer unit tests'
simpletest_test_form:
pattern: '/admin/config/development/testing'
defaults:
_form: '\Drupal\simpletest\Form\SimpletestTestForm'
requirements:
_permission: 'administer unit tests'
simpletest_result_form:
pattern: '/admin/config/development/testing/results/{test_id}'
defaults:
......
......@@ -5,58 +5,6 @@
* Page callbacks for simpletest module.
*/
/**
* List tests arranged in groups that can be selected and run.
*/
function simpletest_test_form($form, &$form_state) {
$form['tests'] = array(
'#type' => 'details',
'#title' => t('Tests'),
'#description' => t('Select the test(s) or test group(s) you would like to run, and click <em>Run tests</em>.'),
);
$form['tests']['table'] = array(
'#theme' => 'simpletest_test_table',
);
// Generate the list of tests arranged by group.
$groups = simpletest_test_get_all();
$groups['PHPUnit'] = simpletest_phpunit_get_available_tests();
$form_state['storage']['PHPUnit'] = $groups['PHPUnit'];
foreach ($groups as $group => $tests) {
$form['tests']['table'][$group] = array(
'#collapsed' => TRUE,
);
foreach ($tests as $class => $info) {
$form['tests']['table'][$group][$class] = array(
'#type' => 'checkbox',
'#title' => $info['name'],
'#description' => $info['description'],
);
}
}
// Operation buttons.
$form['tests']['op'] = array(
'#type' => 'submit',
'#value' => t('Run tests'),
);
$form['clean'] = array(
'#type' => 'fieldset',
'#title' => t('Clean test environment'),
'#description' => t('Remove tables with the prefix "simpletest" and temporary directories that are left over from tests that crashed. This is intended for developers when creating tests.'),
);
$form['clean']['op'] = array(
'#type' => 'submit',
'#value' => t('Clean environment'),
'#submit' => array('simpletest_clean_environment'),
);
return $form;
}
/**
* Returns HTML for a test list generated by simpletest_test_form() into a table.
*
......@@ -176,33 +124,6 @@ function theme_simpletest_test_table($variables) {
}
}
/**
* Run selected tests.
*/
function simpletest_test_form_submit($form, &$form_state) {
// Get list of tests.
$tests_list = array();
simpletest_classloader_register();
$phpunit_all = array_keys($form_state['storage']['PHPUnit']);
foreach ($form_state['values'] as $class_name => $value) {
// Since class_exists() will likely trigger an autoload lookup,
// we do the fast check first.
if ($value === 1 && class_exists($class_name)) {
$test_type = in_array($class_name, $phpunit_all) ? 'UnitTest' : 'WebTest';
$tests_list[$test_type][] = $class_name;
}
}
if (count($tests_list) > 0 ) {
$test_id = simpletest_run_tests($tests_list, 'drupal');
$form_state['redirect'] = 'admin/config/development/testing/results/' . $test_id;
}
else {
drupal_set_message(t('No test(s) selected.'), 'error');
}
}
/**
* Returns HTML for the summary status of a simpletest result.
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment