Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
drupal
Manage
Activity
Members
Labels
Plan
Wiki
Custom issue tracker
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Model registry
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
project
drupal
Commits
78465097
Commit
78465097
authored
12 years ago
by
catch
Browse files
Options
Downloads
Patches
Plain Diff
Revert "Issue
#1541958
by sun: Split setUp() into specific sub-methods."
This reverts commit
4079eb2d
.
parent
4079eb2d
No related branches found
Branches containing commit
No related tags found
Tags containing commit
2 merge requests
!7452
Issue #1797438. HTML5 validation is preventing form submit and not fully...
,
!789
Issue #3210310: Adjust Database API to remove deprecated Drupal 9 code in Drupal 10
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
core/modules/simpletest/drupal_web_test_case.php
+46
-101
46 additions, 101 deletions
core/modules/simpletest/drupal_web_test_case.php
with
46 additions
and
101 deletions
core/modules/simpletest/drupal_web_test_case.php
+
46
−
101
View file @
78465097
...
...
@@ -1277,40 +1277,30 @@ protected function drupalLogout() {
}
/**
* Generates a database prefix for running tests.
* Generates a random database prefix, runs the install scripts on the
* prefixed database and enable the specified modules. After installation
* many caches are flushed and the internal browser is setup so that the
* page requests will run on the new prefix. A temporary files directory
* is created with the same name as the database prefix.
*
* The generated database table prefix is used for the Drupal installation
* being performed for the test. It is also used as user agent HTTP header
* value by the cURL-based browser of DrupalWebTestCase, which is sent to the
* Drupal installation of the test. During early Drupal bootstrap, the user
* agent HTTP header is parsed, and if it matches, all database queries use
* the database table prefix that has been generated here.
*
* @see DrupalWebTestCase::curlInitialize()
* @see drupal_valid_test_ua()
* @see DrupalWebTestCase::setUp()
* @param ...
* List of modules to enable for the duration of the test. This can be
* either a single array or a variable number of string arguments.
*/
protected
function
prepareDatabasePrefix
()
{
$this
->
databasePrefix
=
'simpletest'
.
mt_rand
(
1000
,
1000000
)
;
protected
function
setUp
()
{
global
$user
,
$language_interface
,
$conf
;
// As soon as the database prefix is set, the test might start to execute.
// All assertions as well as the SimpleTest batch operations are associated
// with the testId, so the database prefix has to be associated with it.
// Generate a temporary prefixed database to ensure that tests have a clean starting point.
$this
->
databasePrefix
=
'simpletest'
.
mt_rand
(
1000
,
1000000
);
db_update
(
'simpletest_test_id'
)
->
fields
(
array
(
'last_prefix'
=>
$this
->
databasePrefix
))
->
condition
(
'test_id'
,
$this
->
testId
)
->
execute
();
}
/**
* Changes the database connection to the prefixed one.
*
* @see DrupalWebTestCase::setUp()
*/
protected
function
changeDatabasePrefix
()
{
if
(
empty
(
$this
->
databasePrefix
))
{
$this
->
prepareDatabasePrefix
();
}
// Reset all statics and variables to perform tests in a clean environment.
$conf
=
array
();
drupal_static_reset
();
// Clone the current connection and replace the current prefix.
$connection_info
=
Database
::
getConnectionInfo
(
'default'
);
Database
::
renameConnection
(
'default'
,
'simpletest_original_default'
);
...
...
@@ -1320,23 +1310,6 @@ protected function changeDatabasePrefix() {
);
}
Database
::
addConnectionInfo
(
'default'
,
'default'
,
$connection_info
[
'default'
]);
}
/**
* Prepares the current environment for running the test.
*
* Backups various current environment variables and resets them, so they do
* not interfere with the Drupal site installation in which tests are executed
* and can be restored in tearDown().
*
* Also sets up new resources for the testing environment, such as the public
* filesystem and configuration directories.
*
* @see DrupalWebTestCase::setUp()
* @see DrupalWebTestCase::tearDown()
*/
protected
function
prepareEnvironment
()
{
global
$user
,
$language_interface
,
$conf
;
// Store necessary current values before switching to prefixed database.
$this
->
originalLanguage
=
$language_interface
;
...
...
@@ -1345,13 +1318,23 @@ protected function prepareEnvironment() {
$this
->
originalConfigSignatureKey
=
$GLOBALS
[
'config_signature_key'
];
$this
->
originalFileDirectory
=
variable_get
(
'file_public_path'
,
conf_path
()
.
'/files'
);
$this
->
originalProfile
=
drupal_get_profile
();
$this
->
originalCleanUrl
=
variable_get
(
'clean_url'
,
0
);
$this
->
originalUser
=
$user
;
$clean_url_original
=
variable_get
(
'clean_url'
,
0
);
// Set to English to prevent exceptions from utf8_truncate() from t()
// during install if the current language is not 'en'.
// The following array/object conversion is copied from language_default().
$language
=
(
object
)
array
(
'langcode'
=>
'en'
,
'name'
=>
'English'
,
'direction'
=>
0
,
'enabled'
=>
1
,
'weight'
=>
0
,
);
// Save and clean
the
shutdown callbacks array because it
is
static cached
//
and
will be changed by the test run.
Otherwise
it will contain
callbacks
// from both environments
and the
testing environment will try
to call the
// handlers
defined by the original one
.
// Save and clean shutdown callbacks array because it static cached
and
// will be changed by the test run.
If we don't, then
it will contain
//
callbacks
from both environments
. So
testing environment will try
//
to call
handlers
from original environment
.
$callbacks
=
&
drupal_register_shutdown_function
();
$this
->
originalShutdownCallbacks
=
$callbacks
;
$callbacks
=
array
();
...
...
@@ -1359,14 +1342,14 @@ protected function prepareEnvironment() {
// Create test directory ahead of installation so fatal errors and debug
// information can be logged during installation process.
// Use temporary files directory with the same prefix as the database.
$
this
->
public_files_directory
=
$this
->
originalFileDirectory
.
'/simpletest/'
.
substr
(
$this
->
databasePrefix
,
10
);
$
this
->
private_files_directory
=
$
this
->
public_files_directory
.
'/private'
;
$
this
->
temp_files_directory
=
$
this
->
private_files_directory
.
'/temp'
;
$public_files_directory
=
$this
->
originalFileDirectory
.
'/simpletest/'
.
substr
(
$this
->
databasePrefix
,
10
);
$private_files_directory
=
$public_files_directory
.
'/private'
;
$temp_files_directory
=
$private_files_directory
.
'/temp'
;
// Create the directories
file_prepare_directory
(
$
this
->
public_files_directory
,
FILE_CREATE_DIRECTORY
|
FILE_MODIFY_PERMISSIONS
);
file_prepare_directory
(
$
this
->
private_files_directory
,
FILE_CREATE_DIRECTORY
);
file_prepare_directory
(
$
this
->
temp_files_directory
,
FILE_CREATE_DIRECTORY
);
file_prepare_directory
(
$public_files_directory
,
FILE_CREATE_DIRECTORY
|
FILE_MODIFY_PERMISSIONS
);
file_prepare_directory
(
$private_files_directory
,
FILE_CREATE_DIRECTORY
);
file_prepare_directory
(
$temp_files_directory
,
FILE_CREATE_DIRECTORY
);
$this
->
generatedTestFiles
=
FALSE
;
// Create and set a new configuration directory and signature key.
...
...
@@ -1380,48 +1363,12 @@ protected function prepareEnvironment() {
// Log fatal errors.
ini_set
(
'log_errors'
,
1
);
ini_set
(
'error_log'
,
$
this
->
public_files_directory
.
'/error.log'
);
ini_set
(
'error_log'
,
$public_files_directory
.
'/error.log'
);
// Set the test information for use in other parts of Drupal.
$test_info
=
&
$GLOBALS
[
'drupal_test_info'
];
$test_info
[
'test_run_id'
]
=
$this
->
databasePrefix
;
$test_info
[
'in_child_site'
]
=
FALSE
;
}
/**
* Sets up a Drupal site for running functional and integration tests.
*
* Generates a random database prefix and installs Drupal with the specified
* installation profile in DrupalWebTestCase::$profile into the prefixed
* database. Afterwards, installs any additional modules specified by the
* test.
*
* After installation all caches are flushed and several configuration values
* are reset to the values of the parent site executing the test, since the
* default values may be incompatible with the environment in which tests are
* being executed.
*
* @param ...
* List of modules to enable for the duration of the test. This can be
* either a single array or a variable number of string arguments.
*
* @see DrupalWebTestCase::prepareDatabasePrefix()
* @see DrupalWebTestCase::changeDatabasePrefix()
* @see DrupalWebTestCase::prepareEnvironment()
*/
protected
function
setUp
()
{
global
$user
,
$language_interface
,
$conf
;
// Create and change the database prefix.
$this
->
prepareDatabasePrefix
();
$this
->
changeDatabasePrefix
();
// Reset all statics and variables to perform tests in a clean environment.
$conf
=
array
();
drupal_static_reset
();
// Prepare the environment for running tests.
$this
->
prepareEnvironment
();
// Preset the 'install_profile' system variable, so the first call into
// system_rebuild_module_data() (in drupal_install_system()) will register
...
...
@@ -1430,16 +1377,15 @@ protected function setUp() {
// profile's hook_install() and other hook implementations are never invoked.
$conf
[
'install_profile'
]
=
$this
->
profile
;
// Perform the actual Drupal installation.
include_once
DRUPAL_ROOT
.
'/core/includes/install.inc'
;
drupal_install_system
();
$this
->
preloadRegistry
();
// Set path variables.
variable_set
(
'file_public_path'
,
$
this
->
public_files_directory
);
variable_set
(
'file_private_path'
,
$
this
->
private_files_directory
);
variable_set
(
'file_temporary_path'
,
$
this
->
temp_files_directory
);
variable_set
(
'file_public_path'
,
$public_files_directory
);
variable_set
(
'file_private_path'
,
$private_files_directory
);
variable_set
(
'file_temporary_path'
,
$temp_files_directory
);
// Set the 'simpletest_parent_profile' variable to add the parent profile's
// search path to the child site's search paths.
...
...
@@ -1482,19 +1428,18 @@ protected function setUp() {
// the installation process.
drupal_cron_run
();
//
Ensure that the session is not
w
r
it
ten to the new environment and replace
// the global $user session with uid 1 from the new test site.
//
Log in
wit
h a clean $user.
$this
->
originalUser
=
$user
;
drupal_save_session
(
FALSE
);
$user
=
user_load
(
1
);
// Restore necessary variables.
variable_set
(
'install_task'
,
'done'
);
variable_set
(
'clean_url'
,
$
this
->
originalCleanUr
l
);
variable_set
(
'clean_url'
,
$
clean_url_origina
l
);
variable_set
(
'site_mail'
,
'simpletest@example.com'
);
variable_set
(
'date_default_timezone'
,
date_default_timezone_get
());
// Set up English language.
unset
(
$conf
[
'language_default'
]);
unset
(
$
GLOBALS
[
'
conf
'
]
[
'language_default'
]);
$language_interface
=
language_default
();
// Use the test mail class instead of the default mail handler class.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment