Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
D
drupal
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Custom Issue Tracker
Custom Issue Tracker
Labels
Merge Requests
304
Merge Requests
304
Requirements
Requirements
List
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Analytics
Analytics
Code Review
Insights
Issue
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
project
drupal
Commits
493a9ac6
Commit
493a9ac6
authored
May 26, 2008
by
Dries
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Patch
#254166
by pwolanin: script improvements.
parent
25a5bf9f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
169 additions
and
17 deletions
+169
-17
scripts/run-functional-tests.sh
scripts/run-functional-tests.sh
+169
-17
No files found.
scripts/run-functional-tests.sh
View file @
493a9ac6
...
...
@@ -4,30 +4,93 @@
/
**
*
@file
*
This script can be run with browser or from
command
line.
*
You can provide class names of the tests you wish to run.
*
When this script is run from browser you can
select
which reporter to use html or xml.
*
For
command
line: php run_functional_tests.php SearchMatchTest,ProfileModuleTestSingle
*
For browser: http://yoursite.com/sites/all/modules/simpletest/run_all_tests.php?include
=
SearchMatchTest,ProfileModuleTestSingle&reporter
=
html
*
If none of these two options are provided all tests will be run.
*
This script runs Drupal tests from
command
line.
*
You can provide
groups
or class names of the tests you wish to run.
*
For example: php scripts/run-functional-tests.sh Profile
*
If no arguments are provided, the
help
text will print.
*
/
$tests
=
NULL
;
$reporter
=
'text'
;
$test_names
=
array
()
;
$host
=
'localhost'
;
$path
=
''
;
array_shift
(
$_SERVER
[
'argv'
])
;
// throw away script name
$script
=
basename
(
array_shift
(
$_SERVER
[
'argv'
]))
;
if
(
in_array
(
'--help'
,
$_SERVER
[
'argv'
])
||
empty
(
$_SERVER
[
'argv'
]))
{
echo
<<<
EOF
Run Drupal tests from the shell.
Usage:
{
$script
}
[
OPTIONS] <tests>
Example:
{
$script
}
Profile
All arguments are long options.
--help
Print this page.
--clean
Cleans up database tables or directories from previous, failed,
tests and
then
exits
(
no tests are run
)
.
--url
Immediately preceeds a URL to
set
the host and path. You will
need this parameter
if
Drupal is
in
a subdirectory on your
localhost and you have not
set
\$
base_url
in
settings.php.
--reporter
Immediatly preceeds the name of the output reporter to use. This
Defaults to
"text"
,
while
other options include
"xml"
and
"html"
.
--all
Run all available tests.
--class
Run tests identified by speficic class names.
<test1>[,<test2>[,<test3> ...]]
One or more tests to be run. By default, these are interpreted
as the names of
test groups
as shown at ?q
=
admin/build/testing.
These group names typically correspond to module names like
"User"
or
"Profile"
or
"System"
, but there is also a group
"XML-RPC"
.
If
--class
is specified
then
these are interpreted as the names of
specific
test
classes whose
test
methods will be run. Tests must
be separated by commas. Ignored
if
--all
is specified.
To run this script you will normally invoke it from the root directory of your
Drupal installation as
php ./scripts/
{
$script
}
\n
EOF
;
exit
;
}
$clean
=
FALSE
;
$all
=
FALSE
;
$class_names
=
FALSE
;
$test_names
=
array
()
;
while
(
$param
=
array_shift
(
$_SERVER
[
'argv'
]))
{
switch
(
$param
)
{
case
'--url'
:
$url
=
array_shift
(
$_SERVER
[
'argv'
]
);
$parse
=
parse_url
(
$url
)
;
$host
=
$parse
[
'host'
]
;
$path
=
$parse
[
'path'
]
;
$parsed
=
parse_url
(
$url
)
;
$host
=
$parsed
[
'host'
]
;
$path
=
$parsed
[
'path'
]
;
break
;
case
'--all'
:
$all
=
TRUE
;
break
;
case
'--class'
:
$class_names
=
TRUE
;
break
;
case
'--clean'
:
$clean
=
TRUE
;
break
;
case
'--reporter'
:
$reporter
=
array_shift
(
$_SERVER
[
'argv'
]
);
if
(!
in_array
(
$reporter
, array
(
"text"
,
"xml"
,
"html"
)))
{
$reporter
=
"text"
;
}
break
;
default:
$test
s
=
explode
(
','
,
$param
)
;
$test
_names
+
=
explode
(
','
,
$param
)
;
break
;
}
}
...
...
@@ -46,13 +109,102 @@
require_once
'./includes/bootstrap.inc'
;
drupal_bootstrap
(
DRUPAL_BOOTSTRAP_FULL
)
;
//load simpletest files
simpletest_load
()
;
if
(!
module_exists
(
'simpletest'
))
{
echo
(
"ERROR: The simpletest module must be enabled before this script can run.
\n
"
)
;
exit
;
}
if
(
$clean
)
{
// Clean up left-over
times
and directories.
simpletest_clean_environment
()
;
// Get the status messages and print them.
$messages
=
array_pop
(
drupal_get_messages
(
'status'
))
;
foreach
(
$messages
as
$text
)
{
echo
(
"- "
.
$text
.
"
\n
"
)
;
}
exit
;
}
// Run tests as user
#1.
$GLOBALS
[
'user'
]
=
user_load
(
1
)
;
//Load simpletest files
$total_test
=
&simpletest_get_total_test
()
;
$test_instances
=
$total_test
->getTestInstances
()
;
if
(
$all
)
{
$test_list
=
NULL
;
}
else
{
if
(
$class_names
)
{
$test_list
=
_run_tests_check_classes
(
$test_names
,
$test_instances
)
;
}
else
{
$test_list
=
_run_tests_find_classes
(
$test_names
,
$test_instances
)
;
}
}
if
(
empty
(
$test_list
)
&&
!
$all
)
{
echo
(
"ERROR: No valid tests were specified.
\n
"
)
;
exit
;
}
// If not
in
'safe mode'
, increase the maximum execution
time
:
if
(!
ini_get
(
'safe_mode'
))
{
set_time_limit
(
360
)
;
}
simpletest_run_tests
(
$tests
,
$reporter
)
;
?>
// Tell the user about what tests are to be run.
if
(!
$all
&&
$reporter
==
'text'
)
{
echo
(
"Tests to be run:
\n
"
)
;
foreach
(
$test_list
as
$name
)
{
echo
(
"- "
.
$name
.
"
\n
"
)
;
}
echo
(
"
\n
"
)
;
}
simpletest_run_tests
(
array_keys
(
$test_list
)
,
$reporter
)
;
// Utility functions:
/
**
*
Check that each class name exists as a
test
,
return
the list of valid ones.
*
/
function
_run_tests_check_classes
(
$test_names
,
$test_instances
)
{
$test_list
=
array
()
;
$test_names
=
array_flip
(
$test_names
)
;
foreach
(
$test_instances
as
$group_test
)
{
$tests
=
$group_test
->getTestInstances
()
;
foreach
(
$tests
as
$test
)
{
$class
=
get_class
(
$test
)
;
$info
=
$test
->getInfo
()
;
if
(
isset
(
$test_names
[
$class
]))
{
$test_list
[
$class
]
=
$info
[
'name'
]
;
}
}
}
return
$test_list
;
}
/
**
*
Check that each group name exists,
return
the list of class
in
valid groups.
*
/
function
_run_tests_find_classes
(
$test_names
, &
$test_instances
)
{
$test_list
=
array
()
;
$test_names
=
array_flip
(
$test_names
)
;
uasort
(
$test_instances
,
'simpletest_compare_instances'
)
;
foreach
(
$test_instances
as
$group_test
)
{
$group
=
$group_test
->getLabel
()
;
if
(
isset
(
$test_names
[
$group
]))
{
$tests
=
$group_test
->getTestInstances
()
;
foreach
(
$tests
as
$test
)
{
$info
=
$test
->getInfo
()
;
$test_list
[
get_class
(
$test
)]
=
$info
[
'name'
]
;
}
}
}
return
$test_list
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment