Skip to content
Snippets Groups Projects
Commit b8ddc399 authored by Alex Pott's avatar Alex Pott
Browse files

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

parent 1ac72a9d
No related branches found
No related tags found
2 merge requests!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!789Issue #3210310: Adjust Database API to remove deprecated Drupal 9 code in Drupal 10
...@@ -254,15 +254,15 @@ public function submitForm(array &$form, array &$form_state) { ...@@ -254,15 +254,15 @@ public function submitForm(array &$form, array &$form_state) {
return; return;
} }
$form_execute = array();
$form_state_execute = array('values' => array()); $form_state_execute = array('values' => array());
foreach ($classes as $class) { foreach ($classes as $class) {
$form_state_execute['values'][$class] = 1; $form_state_execute['values'][$class] = 1;
} }
// @todo When simpletest_test_form is converted, extend it and remove this. // Submit the simpletest test form to rerun the tests.
\Drupal::moduleHandler()->loadInclude('simpletest', 'inc', 'simpletest.pages'); $simpletest_test_form = new SimpletestTestForm();
$simpletest_test_form->submitForm($form_execute, $form_state_execute);
simpletest_test_form_submit(array(), $form_state_execute);
$form_state['redirect'] = $form_state_execute['redirect']; $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) { ...@@ -34,11 +34,8 @@ function simpletest_help($path, $arg) {
function simpletest_menu() { function simpletest_menu() {
$items['admin/config/development/testing'] = array( $items['admin/config/development/testing'] = array(
'title' => 'Testing', '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.', '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'), 'route_name' => 'simpletest_test_form',
'file' => 'simpletest.pages.inc',
'weight' => -5, 'weight' => -5,
); );
$items['admin/config/development/testing/list'] = array( $items['admin/config/development/testing/list'] = array(
...@@ -55,7 +52,7 @@ function simpletest_menu() { ...@@ -55,7 +52,7 @@ function simpletest_menu() {
$items['admin/config/development/testing/results/%'] = array( $items['admin/config/development/testing/results/%'] = array(
'title' => 'Test result', 'title' => 'Test result',
'description' => 'View result of tests.', 'description' => 'View result of tests.',
'router_name' => 'simpletest_result_form', 'route_name' => 'simpletest_result_form',
); );
return $items; return $items;
} }
...@@ -79,11 +76,11 @@ function simpletest_theme() { ...@@ -79,11 +76,11 @@ function simpletest_theme() {
return array( return array(
'simpletest_test_table' => array( 'simpletest_test_table' => array(
'render element' => 'table', 'render element' => 'table',
'file' => 'simpletest.pages.inc', 'file' => 'simpletest.theme.inc',
), ),
'simpletest_result_summary' => array( 'simpletest_result_summary' => array(
'render element' => 'form', 'render element' => 'form',
'file' => 'simpletest.pages.inc', 'file' => 'simpletest.theme.inc',
), ),
); );
} }
......
...@@ -5,6 +5,13 @@ simpletest_settings: ...@@ -5,6 +5,13 @@ simpletest_settings:
requirements: requirements:
_permission: 'administer unit tests' _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: simpletest_result_form:
pattern: '/admin/config/development/testing/results/{test_id}' pattern: '/admin/config/development/testing/results/{test_id}'
defaults: defaults:
......
...@@ -5,58 +5,6 @@ ...@@ -5,58 +5,6 @@
* Page callbacks for simpletest module. * 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. * Returns HTML for a test list generated by simpletest_test_form() into a table.
* *
...@@ -176,33 +124,6 @@ function theme_simpletest_test_table($variables) { ...@@ -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. * Returns HTML for the summary status of a simpletest result.
* *
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment