316 lines
8.9 KiB
Plaintext
316 lines
8.9 KiB
Plaintext
<?php
|
|
// $Id$
|
|
|
|
/**
|
|
* Implements hook_menu().
|
|
*/
|
|
function system_test_menu() {
|
|
$items['admin/system-test/batch-theme'] = array(
|
|
'page callback' => 'system_test_batch_theme',
|
|
'access callback' => TRUE,
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
$items['system-test/sleep/%'] = array(
|
|
'page callback' => 'system_test_sleep',
|
|
'page arguments' => array(2),
|
|
'access callback' => TRUE,
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
$items['system-test/auth'] = array(
|
|
'page callback' => 'system_test_basic_auth_page',
|
|
'access callback' => TRUE,
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
$items['system-test/redirect/%'] = array(
|
|
'title' => 'Redirect',
|
|
'page callback' => 'system_test_redirect',
|
|
'page arguments' => array(2),
|
|
'access arguments' => array('access content'),
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
$items['system-test/set-header'] = array(
|
|
'page callback' => 'system_test_set_header',
|
|
'access arguments' => array('access content'),
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
$items['system-test/redirect-noscheme'] = array(
|
|
'page callback' => 'system_test_redirect_noscheme',
|
|
'access arguments' => array('access content'),
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
$items['system-test/redirect-noparse'] = array(
|
|
'page callback' => 'system_test_redirect_noparse',
|
|
'access arguments' => array('access content'),
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
$items['system-test/redirect-invalid-scheme'] = array(
|
|
'page callback' => 'system_test_redirect_invalid_scheme',
|
|
'access arguments' => array('access content'),
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
$items['system-test/destination'] = array(
|
|
'title' => 'Redirect',
|
|
'page callback' => 'system_test_destination',
|
|
'page arguments' => array(2),
|
|
'access arguments' => array('access content'),
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
|
|
$items['system-test/variable-get'] = array(
|
|
'title' => 'Variable Get',
|
|
'page callback' => 'variable_get',
|
|
'page arguments' => array('simpletest_bootstrap_variable_test', NULL),
|
|
'access arguments' => array('access content'),
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
|
|
$items['system-test/lock-acquire'] = array(
|
|
'title' => 'Lock acquire',
|
|
'page callback' => 'system_test_lock_acquire',
|
|
'access callback' => TRUE,
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
|
|
$items['system-test/lock-exit'] = array(
|
|
'title' => 'Lock acquire then exit',
|
|
'page callback' => 'system_test_lock_exit',
|
|
'access callback' => TRUE,
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
|
|
$items['system-test/main-content-handling'] = array(
|
|
'title' => 'Test main content handling',
|
|
'page callback' => 'system_test_main_content_fallback',
|
|
'access callback' => TRUE,
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
|
|
$items['system-test/main-content-fallback'] = array(
|
|
'title' => 'Test main content fallback',
|
|
'page callback' => 'system_test_main_content_fallback',
|
|
'access callback' => TRUE,
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
|
|
$items['system-test/main-content-duplication'] = array(
|
|
'title' => 'Test main content duplication',
|
|
'page callback' => 'system_test_main_content_fallback',
|
|
'access callback' => TRUE,
|
|
'type' => MENU_CALLBACK,
|
|
);
|
|
|
|
return $items;
|
|
}
|
|
|
|
/**
|
|
* Menu callback; start a new batch for testing the batch progress page theme.
|
|
*/
|
|
function system_test_batch_theme() {
|
|
$batch = array(
|
|
'operations' => array(
|
|
array('system_test_batch_theme_callback', array()),
|
|
),
|
|
);
|
|
batch_set($batch);
|
|
// Force the batch to redirect to some page other than this one (to avoid an
|
|
// infinite loop).
|
|
batch_process('node');
|
|
}
|
|
|
|
/**
|
|
* Batch callback function for testing the theme used by a batch.
|
|
*/
|
|
function system_test_batch_theme_callback() {
|
|
// Because drupalGet() steps through the full progressive batch before
|
|
// returning control to the test function, we cannot test that the correct
|
|
// theme is being used on the batch processing page by viewing that page
|
|
// directly. Instead, we save the theme being used in a variable here, so
|
|
// that it can be loaded and inspected in the thread running the test.
|
|
global $theme;
|
|
variable_set('system_test_batch_theme_used', $theme);
|
|
}
|
|
|
|
function system_test_sleep($seconds) {
|
|
sleep($seconds);
|
|
}
|
|
|
|
function system_test_basic_auth_page() {
|
|
$output = t('$_SERVER[\'PHP_AUTH_USER\'] is @username.', array('@username' => $_SERVER['PHP_AUTH_USER']));
|
|
$output .= t('$_SERVER[\'PHP_AUTH_PW\'] is @password.', array('@password' => $_SERVER['PHP_AUTH_PW']));
|
|
return $output;
|
|
}
|
|
|
|
function system_test_redirect($code) {
|
|
$code = (int)$code;
|
|
if ($code != 200) {
|
|
header("Location: " . url('system-test/redirect/200', array('absolute' => TRUE)), TRUE, $code);
|
|
exit;
|
|
}
|
|
return '';
|
|
}
|
|
|
|
function system_test_set_header() {
|
|
drupal_add_http_header($_GET['name'], $_GET['value']);
|
|
return t('The following header was set: %name: %value', array('%name' => $_GET['name'], '%value' => $_GET['value']));
|
|
}
|
|
|
|
function system_test_redirect_noscheme() {
|
|
header("Location: localhost/path", TRUE, 301);
|
|
exit;
|
|
}
|
|
|
|
function system_test_redirect_noparse() {
|
|
header("Location: http:///path", TRUE, 301);
|
|
exit;
|
|
}
|
|
|
|
function system_test_redirect_invalid_scheme() {
|
|
header("Location: ftp://localhost/path", TRUE, 301);
|
|
exit;
|
|
}
|
|
|
|
function system_test_destination() {
|
|
$destination = drupal_get_destination();
|
|
return 'The destination: ' . $destination['destination'];
|
|
}
|
|
|
|
/**
|
|
* Implements hook_modules_installed().
|
|
*/
|
|
function system_test_modules_installed($modules) {
|
|
if (in_array('aggregator', $modules)) {
|
|
drupal_set_message(t('hook_modules_installed fired for aggregator'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_modules_enabled().
|
|
*/
|
|
function system_test_modules_enabled($modules) {
|
|
if (in_array('aggregator', $modules)) {
|
|
drupal_set_message(t('hook_modules_enabled fired for aggregator'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_modules_disabled().
|
|
*/
|
|
function system_test_modules_disabled($modules) {
|
|
if (in_array('aggregator', $modules)) {
|
|
drupal_set_message(t('hook_modules_disabled fired for aggregator'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_modules_uninstalled().
|
|
*/
|
|
function system_test_modules_uninstalled($modules) {
|
|
if (in_array('aggregator', $modules)) {
|
|
drupal_set_message(t('hook_modules_uninstalled fired for aggregator'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_boot().
|
|
*/
|
|
function system_test_boot() {
|
|
watchdog('system_test', 'hook_boot');
|
|
}
|
|
|
|
/**
|
|
* Implements hook_init().
|
|
*/
|
|
function system_test_init() {
|
|
// Used by FrontPageTestCase to get the results of drupal_is_front_page().
|
|
if (variable_get('front_page_output', 0) && drupal_is_front_page()) {
|
|
drupal_set_message(t('On front page.'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_exit().
|
|
*/
|
|
function system_test_exit() {
|
|
watchdog('system_test', 'hook_exit');
|
|
}
|
|
|
|
/**
|
|
* Implements hook_system_info_alter().
|
|
*/
|
|
function system_test_system_info_alter(&$info, $file, $type) {
|
|
// We need a static otherwise the last test will fail to alter common_test.
|
|
static $test;
|
|
if (($dependencies = variable_get('dependencies', array())) || $test) {
|
|
if ($file->name == 'module_test') {
|
|
$info['hidden'] = FALSE;
|
|
$info['dependencies'][] = array_shift($dependencies);
|
|
variable_set('dependencies', $dependencies);
|
|
$test = TRUE;
|
|
}
|
|
if ($file->name == 'common_test') {
|
|
$info['hidden'] = FALSE;
|
|
$info['version'] = '7.x-2.4-beta3';
|
|
}
|
|
}
|
|
|
|
// Make the system_dependencies_test visible by default.
|
|
if ($file->name == 'system_dependencies_test') {
|
|
$info['hidden'] = FALSE;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Try to acquire a named lock and report the outcome.
|
|
*/
|
|
function system_test_lock_acquire() {
|
|
if (lock_acquire('system_test_lock_acquire')) {
|
|
lock_release('system_test_lock_acquire');
|
|
return 'TRUE: Lock successfully acquired in system_test_lock_acquire()';
|
|
}
|
|
else {
|
|
return 'FALSE: Lock not acquired in system_test_lock_acquire()';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Try to acquire a specific lock, and then exit.
|
|
*/
|
|
function system_test_lock_exit() {
|
|
if (lock_acquire('system_test_lock_exit', 900)) {
|
|
echo 'TRUE: Lock successfully acquired in system_test_lock_exit()';
|
|
// The shut-down function should release the lock.
|
|
exit();
|
|
}
|
|
else {
|
|
return 'FALSE: Lock not acquired in system_test_lock_exit()';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_page_build().
|
|
*/
|
|
function system_test_page_build(&$page) {
|
|
$menu_item = menu_get_item();
|
|
$main_content_display = &drupal_static('system_main_content_added', FALSE);
|
|
|
|
if ($menu_item['path'] == 'system-test/main-content-handling') {
|
|
$page['footer'] = drupal_set_page_content();
|
|
$page['footer']['main']['#markup'] = '<div id="system-test-content">' . $page['footer']['main']['#markup'] . '</div>';
|
|
}
|
|
else if ($menu_item['path'] == 'system-test/main-content-fallback') {
|
|
drupal_set_page_content();
|
|
$main_content_display = FALSE;
|
|
}
|
|
else if ($menu_item['path'] == 'system-test/main-content-duplication') {
|
|
drupal_set_page_content();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Menu callback to test main content fallback().
|
|
*/
|
|
function system_test_main_content_fallback() {
|
|
return t('Content to test main content fallback');
|
|
}
|
|
|