From f40532da769cd1dd551a42bec64dbb1aff240099 Mon Sep 17 00:00:00 2001
From: Angie Byron <webchick@24967.no-reply.drupal.org>
Date: Tue, 31 Mar 2009 01:49:55 +0000
Subject: [PATCH] #376129 by boombatower, Damien Tournoud, and chx: Change
 getInfo() to a static method to reduce memory footprint of SimpleTest.

---
 modules/aggregator/aggregator.test            | 14 ++---
 modules/block/block.test                      |  4 +-
 modules/blog/blog.test                        |  2 +-
 modules/blogapi/blogapi.test                  |  2 +-
 modules/book/book.test                        |  4 +-
 modules/comment/comment.test                  | 10 ++--
 modules/contact/contact.test                  |  4 +-
 modules/dblog/dblog.test                      |  2 +-
 modules/field/field.test                      | 10 ++--
 .../field_sql_storage/field_sql_storage.test  |  2 +-
 modules/field/modules/text/text.test          |  2 +-
 modules/filter/filter.test                    |  4 +-
 modules/forum/forum.test                      |  2 +-
 modules/help/help.test                        |  2 +-
 modules/locale/locale.test                    | 20 +++----
 modules/menu/menu.test                        |  2 +-
 modules/node/node.test                        | 22 ++++----
 modules/path/path.test                        |  4 +-
 modules/php/php.test                          |  4 +-
 modules/poll/poll.test                        |  8 +--
 modules/profile/profile.test                  | 12 ++--
 modules/search/search.test                    | 10 ++--
 modules/simpletest/simpletest.module          | 31 +++++-----
 modules/simpletest/simpletest.test            |  2 +-
 modules/simpletest/tests/actions.test         |  2 +-
 modules/simpletest/tests/bootstrap.test       |  8 +--
 modules/simpletest/tests/cache.test           |  4 +-
 modules/simpletest/tests/common.test          | 24 ++++----
 modules/simpletest/tests/database_test.test   | 56 +++++++++----------
 modules/simpletest/tests/file.test            | 38 ++++++-------
 modules/simpletest/tests/form.test            | 10 ++--
 modules/simpletest/tests/graph.test           |  2 +-
 modules/simpletest/tests/image.test           |  4 +-
 modules/simpletest/tests/menu.test            |  4 +-
 modules/simpletest/tests/module.test          |  2 +-
 modules/simpletest/tests/registry.test        |  4 +-
 modules/simpletest/tests/schema.test          |  2 +-
 modules/simpletest/tests/session.test         |  2 +-
 modules/simpletest/tests/unicode.test         |  2 +-
 modules/simpletest/tests/xmlrpc.test          |  4 +-
 modules/statistics/statistics.test            |  2 +-
 modules/syslog/syslog.test                    |  2 +-
 modules/system/system.test                    | 30 +++++-----
 modules/taxonomy/taxonomy.test                | 12 ++--
 modules/tracker/tracker.test                  |  2 +-
 modules/translation/translation.test          |  2 +-
 modules/trigger/trigger.test                  |  2 +-
 modules/upload/upload.test                    |  2 +-
 modules/user/user.test                        | 18 +++---
 scripts/run-tests.sh                          | 13 ++---
 50 files changed, 214 insertions(+), 218 deletions(-)

diff --git a/modules/aggregator/aggregator.test b/modules/aggregator/aggregator.test
index f2dd8bb36e39..6d3305c52c2a 100644
--- a/modules/aggregator/aggregator.test
+++ b/modules/aggregator/aggregator.test
@@ -243,7 +243,7 @@ EOF;
 }
 
 class AddFeedTestCase extends AggregatorTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Add feed functionality'),
       'description' => t('Add feed test.'),
@@ -272,7 +272,7 @@ class AddFeedTestCase extends AggregatorTestCase {
 }
 
 class UpdateFeedTestCase extends AggregatorTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Update feed functionality'),
       'description' => t('Update feed test.'),
@@ -314,7 +314,7 @@ class UpdateFeedTestCase extends AggregatorTestCase {
 }
 
 class RemoveFeedTestCase extends AggregatorTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Remove feed functionality'),
       'description' => t('Remove feed test.'),
@@ -342,7 +342,7 @@ class RemoveFeedTestCase extends AggregatorTestCase {
 }
 
 class UpdateFeedItemTestCase extends AggregatorTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Update feed item functionality'),
       'description' => t('Update feed items from a feed.'),
@@ -403,7 +403,7 @@ class UpdateFeedItemTestCase extends AggregatorTestCase {
 }
 
 class RemoveFeedItemTestCase extends AggregatorTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Remove feed item functionality'),
       'description' => t('Remove feed items from a feed.'),
@@ -443,7 +443,7 @@ class RemoveFeedItemTestCase extends AggregatorTestCase {
 class CategorizeFeedItemTestCase extends AggregatorTestCase {
   private static $prefix = 'simpletest_aggregator_';
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Categorize feed item functionality'),
       'description' => t('Test feed item categorization.'),
@@ -502,7 +502,7 @@ class CategorizeFeedItemTestCase extends AggregatorTestCase {
 class ImportOPMLTestCase extends AggregatorTestCase {
   private static $prefix = 'simpletest_aggregator_';
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Import feeds from OPML functionality'),
       'description' => t('Test OPML import.'),
diff --git a/modules/block/block.test b/modules/block/block.test
index 43ea00290a0f..00bc556a384e 100644
--- a/modules/block/block.test
+++ b/modules/block/block.test
@@ -4,7 +4,7 @@
 class BlockTestCase extends DrupalWebTestCase {
   protected $regions;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Block functionality'),
       'description' => t('Add, edit and delete custom block. Configure and move a module-defined block.'),
@@ -152,7 +152,7 @@ class BlockTestCase extends DrupalWebTestCase {
 }
 
 class NonDefaultBlockAdmin extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Non default theme admin'),
       'description' => t('Check the administer page for non default theme.'),
diff --git a/modules/blog/blog.test b/modules/blog/blog.test
index 53d2febef9ed..658640a9b69a 100644
--- a/modules/blog/blog.test
+++ b/modules/blog/blog.test
@@ -6,7 +6,7 @@ class BlogTestCase extends DrupalWebTestCase {
   protected $own_user;
   protected $any_user;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Blog functionality'),
       'description' => t('Create, view, edit, delete, and change blog entries and verify its consistency in the database.'),
diff --git a/modules/blogapi/blogapi.test b/modules/blogapi/blogapi.test
index dd0d72ee6178..525e5365e8d8 100644
--- a/modules/blogapi/blogapi.test
+++ b/modules/blogapi/blogapi.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class BlogAPITestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Blog API functionality'),
       'description' => t('Create, edit, and delete post; upload file; and set/get categories.'),
diff --git a/modules/book/book.test b/modules/book/book.test
index 4313012411f6..5f48446bd602 100644
--- a/modules/book/book.test
+++ b/modules/book/book.test
@@ -4,7 +4,7 @@
 class BookTestCase extends DrupalWebTestCase {
   protected $book;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Book functionality'),
       'description' => t('Create a book, add pages, and test book interface.'),
@@ -174,7 +174,7 @@ class BookTestCase extends DrupalWebTestCase {
 }
 
 class BookBlockTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Block availability'),
       'description' => t('Check if the book navigation block is available.'),
diff --git a/modules/comment/comment.test b/modules/comment/comment.test
index 2e4b6c4da537..95956119fdbe 100644
--- a/modules/comment/comment.test
+++ b/modules/comment/comment.test
@@ -229,7 +229,7 @@ class CommentHelperCase extends DrupalWebTestCase {
 }
 
 class CommentInterfaceTest extends CommentHelperCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Comment interface'),
       'description' => t('Test comment user interfaces.'),
@@ -359,7 +359,7 @@ class CommentInterfaceTest extends CommentHelperCase {
 }
 
 class CommentAnonymous extends CommentHelperCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Anonymous comments'),
       'description' => t('Test anonymous comments.'),
@@ -455,7 +455,7 @@ class CommentAnonymous extends CommentHelperCase {
 }
 
 class CommentApprovalTest extends CommentHelperCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Comment approval'),
       'description' => t('Test comment approval functionality.'),
@@ -537,7 +537,7 @@ class CommentApprovalTest extends CommentHelperCase {
  * Functional tests for the comment module blocks.
  */
 class CommentBlockFunctionalTest extends CommentHelperCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Comment blocks'),
       'description' => t('Test comment block functionality.'),
@@ -606,7 +606,7 @@ class CommentBlockFunctionalTest extends CommentHelperCase {
  * Unit tests for comment module integration with RSS feeds.
  */
 class CommentRSSUnitTest extends CommentHelperCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Comment RSS'),
       'description' => t('Test comments as part of an RSS feed.'),
diff --git a/modules/contact/contact.test b/modules/contact/contact.test
index 5965efbe33a6..fb85aa0c37d4 100644
--- a/modules/contact/contact.test
+++ b/modules/contact/contact.test
@@ -5,7 +5,7 @@
  * Test the sitewide contact form.
  */
 class ContactSitewideTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Site-wide contact form'),
       'description' => t('Tests site-wide contact form functionality.'),
@@ -256,7 +256,7 @@ class ContactSitewideTestCase extends DrupalWebTestCase {
  * Test the personal contact form.
  */
 class ContactPersonalTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Personal contact form'),
       'description' => t('Tests personal contact form functionality.'),
diff --git a/modules/dblog/dblog.test b/modules/dblog/dblog.test
index 3022586e867a..2e5aadd050ce 100644
--- a/modules/dblog/dblog.test
+++ b/modules/dblog/dblog.test
@@ -5,7 +5,7 @@ class DBLogTestCase extends DrupalWebTestCase {
   protected $big_user;
   protected $any_user;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('DBLog functionality'),
       'description' => t('Generate events and verify dblog entries; verify user access to log reports based on persmissions.'),
diff --git a/modules/field/field.test b/modules/field/field.test
index 2dabfca5e5c1..adf9c06bfd98 100644
--- a/modules/field/field.test
+++ b/modules/field/field.test
@@ -4,7 +4,7 @@
 // TODO : use drupalCreateField() / drupalCreateFieldInstance() all over ?
 
 class FieldAttachTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('Field attach tests'),
       'description'  => t("Test Field Attach API functions."),
@@ -606,7 +606,7 @@ class FieldAttachTestCase extends DrupalWebTestCase {
 
 class FieldInfoTestCase extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('Field info tests'),
       'description'  => t("Get information about existing fields, instances and bundles."),
@@ -712,7 +712,7 @@ class FieldInfoTestCase extends DrupalWebTestCase {
 }
 
 class FieldFormTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('Field form tests'),
       'description'  => t("Test Field form handling."),
@@ -919,7 +919,7 @@ class FieldFormTestCase extends DrupalWebTestCase {
 }
 
 class FieldTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('Field tests'),
       'description'  => t("Create / read /update a field."),
@@ -1063,7 +1063,7 @@ class FieldTestCase extends DrupalWebTestCase {
 class FieldInstanceTestCase extends DrupalWebTestCase {
   protected $field;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('Field instance tests'),
       'description'  => t("Create field entities by attaching fields to entities."),
diff --git a/modules/field/modules/field_sql_storage/field_sql_storage.test b/modules/field/modules/field_sql_storage/field_sql_storage.test
index 0b9072a1ae2a..4cabf085d8eb 100644
--- a/modules/field/modules/field_sql_storage/field_sql_storage.test
+++ b/modules/field/modules/field_sql_storage/field_sql_storage.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class FieldSqlStorageTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('Field SQL storage tests'),
       'description'  => t("Test field SQL storage module."),
diff --git a/modules/field/modules/text/text.test b/modules/field/modules/text/text.test
index a7c35ceccb3e..c837b57c26a5 100644
--- a/modules/field/modules/text/text.test
+++ b/modules/field/modules/text/text.test
@@ -4,7 +4,7 @@
 class TextFieldTestCase extends DrupalWebTestCase {
   protected $instance;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('Text Field'),
       'description'  => t("Test the creation of text fields."),
diff --git a/modules/filter/filter.test b/modules/filter/filter.test
index 344737732a15..b99b8de2b334 100644
--- a/modules/filter/filter.test
+++ b/modules/filter/filter.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class FilterAdminTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Filter administration functionality'),
       'description' => t('Thoroughly test the administrative interface of the filter module.'),
@@ -181,7 +181,7 @@ class FilterAdminTestCase extends DrupalWebTestCase {
 class FilterTestCase extends DrupalWebTestCase {
   protected $format;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Core filters'),
       'description' => t('Filter each filter individually: Convert URLs into links, Convert line breaks, Correct broken HTML, Escape all HTML, Limit allowed HTML tags.'),
diff --git a/modules/forum/forum.test b/modules/forum/forum.test
index 82e6ff1e0ccc..9dbfa39520b5 100644
--- a/modules/forum/forum.test
+++ b/modules/forum/forum.test
@@ -11,7 +11,7 @@ class ForumTestCase extends DrupalWebTestCase {
   protected $root_forum;
   protected $nids;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Forum functionality'),
       'description' => t('Create, view, edit, delete, and change forum entries and verify its consistency in the database.'),
diff --git a/modules/help/help.test b/modules/help/help.test
index 0c833f4e3df7..089bd48624a6 100644
--- a/modules/help/help.test
+++ b/modules/help/help.test
@@ -5,7 +5,7 @@ class HelpTestCase extends DrupalWebTestCase {
   protected $big_user;
   protected $any_user;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Help functionality'),
       'description' => t('Verify help display and user access to help based on persmissions.'),
diff --git a/modules/locale/locale.test b/modules/locale/locale.test
index d44e857b364c..674da387120f 100644
--- a/modules/locale/locale.test
+++ b/modules/locale/locale.test
@@ -23,7 +23,7 @@
  * Functional tests for the language configuration forms.
  */
 class LocaleConfigurationTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Language configuration'),
       'description' => t('Adds a new locale and tests changing its status and the default language.'),
@@ -165,7 +165,7 @@ class LocaleConfigurationTest extends DrupalWebTestCase {
  * Functional test for string translation and validation.
  */
 class LocaleTranslationFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('String translate, search and validate'),
       'description' => t('Adds a new locale and translates its name. Checks the validation of translation strings and search results.'),
@@ -528,7 +528,7 @@ class LocaleTranslationFunctionalTest extends DrupalWebTestCase {
  * Functional tests for the import of translation files.
  */
 class LocaleImportFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Translation import'),
       'description' => t('Tests the importation of locale files.'),
@@ -778,7 +778,7 @@ EOF;
  * Functional tests for the export of translation files.
  */
 class LocaleExportFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Translation export'),
       'description' => t('Tests the exportation of locale files.'),
@@ -860,7 +860,7 @@ EOF;
  * Locale uninstall with English UI functional test.
  */
 class LocaleUninstallFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Locale uninstall (EN)'),
       'description' => t('Tests the uninstall process using the built-in UI language.'),
@@ -966,7 +966,7 @@ class LocaleUninstallFunctionalTest extends DrupalWebTestCase {
  * to test with this new language.
  */
 class LocaleUninstallFrenchFunctionalTest extends LocaleUninstallFunctionalTest {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Locale uninstall (FR)'),
       'description' => t('Tests the uninstall process using French as UI language.'),
@@ -986,7 +986,7 @@ class LocaleUninstallFrenchFunctionalTest extends LocaleUninstallFunctionalTest
  */
 class LanguageSwitchingFunctionalTest extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Language switching'),
       'description' => t('Tests for the language switching feature.'),
@@ -1065,7 +1065,7 @@ class LanguageSwitchingFunctionalTest extends DrupalWebTestCase {
  * Functional tests for a user's ability to change their default language.
  */
 class LocaleUserLanguageFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('User language settings'),
       'description' => t("Tests user's ability to change their default language."),
@@ -1160,7 +1160,7 @@ class LocaleUserLanguageFunctionalTest extends DrupalWebTestCase {
  * Functional tests for configuring a different path alias per language.
  */
 class LocalePathFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Path language settings'),
       'description' => t('Checks you can configure a language for individual url aliases.'),
@@ -1243,7 +1243,7 @@ class LocalePathFunctionalTest extends DrupalWebTestCase {
  * Functional tests for multilingual support on nodes.
  */
 class LocaleContentFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Content language settings'),
       'description' => t('Checks you can enable multilingual support on content types and configure a language for a node.'),
diff --git a/modules/menu/menu.test b/modules/menu/menu.test
index 6a41627c715a..d0647bb0f486 100644
--- a/modules/menu/menu.test
+++ b/modules/menu/menu.test
@@ -7,7 +7,7 @@ class MenuTestCase extends DrupalWebTestCase {
   protected $menu;
   protected $items;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Menu link creation/deletion'),
       'description' => t('Add a custom menu, add menu links to the custom menu and Navigation menu, check their data, and delete them using the menu module UI.'),
diff --git a/modules/node/node.test b/modules/node/node.test
index bbc91b5efc92..60798b01bfd0 100644
--- a/modules/node/node.test
+++ b/modules/node/node.test
@@ -6,7 +6,7 @@
  */
 class NodeLoadMultipleUnitTest extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Load multiple nodes'),
       'description' => t('Test the loading of multiple nodes.'),
@@ -85,7 +85,7 @@ class NodeRevisionsTestCase extends DrupalWebTestCase {
   protected $nodes;
   protected $logs;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Node revisions'),
       'description' => t('Create a node with revisions and test viewing, reverting, and deleting revisions.'),
@@ -167,7 +167,7 @@ class NodeRevisionsTestCase extends DrupalWebTestCase {
 }
 
 class NodeTeaserTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Node teaser'),
       'description' => t('Test node_teaser() with different strings and lengths.'),
@@ -312,7 +312,7 @@ class NodeTeaserTestCase extends DrupalWebTestCase {
 }
 
 class PageEditTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Node edit'),
       'description' => t('Create a node and test node edit functionality.'),
@@ -366,7 +366,7 @@ class PageEditTestCase extends DrupalWebTestCase {
 }
 
 class PagePreviewTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Node preview'),
       'description' => t('Test node preview functionality.'),
@@ -403,7 +403,7 @@ class PagePreviewTestCase extends DrupalWebTestCase {
 }
 
 class PageCreationTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Node creation'),
       'description' => t('Create a node and test saving it.'),
@@ -438,7 +438,7 @@ class PageCreationTestCase extends DrupalWebTestCase {
 }
 
 class PageViewTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Node edit permissions'),
       'description' => t('Create a node and test edit permissions.'),
@@ -477,7 +477,7 @@ class PageViewTestCase extends DrupalWebTestCase {
 }
 
 class NodeTitleXSSTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
      return array(
       'name' => t('Node title XSS filtering'),
       'description' => t('Create a node with dangerous tags in its title and test that they are escaped.'),
@@ -511,7 +511,7 @@ class NodeTitleXSSTestCase extends DrupalWebTestCase {
 }
 
 class NodeBlockTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Block availability'),
       'description' => t('Check if the syndicate block is available.'),
@@ -544,7 +544,7 @@ class NodeBlockTestCase extends DrupalWebTestCase {
  * Check that the post information displays when enabled for a content type.
  */
 class NodePostSettingsTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Node post information display'),
       'description' => t('Check that the post information (submitted by Username on date) text displays appropriately.'),
@@ -610,7 +610,7 @@ class NodePostSettingsTestCase extends DrupalWebTestCase {
  * sitewide RSS feed at rss.xml.
  */
 class NodeRSSContentTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Node RSS Content'),
       'description' => t('Ensure that data added to nodes by other modules appears in RSS feeds.'),
diff --git a/modules/path/path.test b/modules/path/path.test
index 479cd1f062df..0015fe36bb97 100644
--- a/modules/path/path.test
+++ b/modules/path/path.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class PathTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Path alias functionality'),
       'description' => t('Add, edit, delete, and change alias and verify its consistency in the database.'),
@@ -126,7 +126,7 @@ class PathTestCase extends DrupalWebTestCase {
 }
 
 class PathLanguageTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Path aliases with translated nodes'),
       'description' => t('Confirm that paths work with translated nodes'),
diff --git a/modules/php/php.test b/modules/php/php.test
index 84ddb6c554c6..487c5a5d6989 100644
--- a/modules/php/php.test
+++ b/modules/php/php.test
@@ -37,7 +37,7 @@ class PHPTestCase extends DrupalWebTestCase {
  * Tests to make sure the PHP filter actually evaluates PHP code when used.
  */
 class PHPFilterTestCase extends PHPTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('PHP filter functionality'),
       'description' => t('Make sure that PHP filter properly evaluates PHP code when enabled.'),
@@ -80,7 +80,7 @@ class PHPFilterTestCase extends PHPTestCase {
  * Tests to make sure access to the PHP filter is properly restricted.
  */
 class PHPAccessTestCase extends PHPTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('PHP filter access check'),
       'description' => t('Make sure that users who don\'t have access to the PHP filter can\'t see it.'),
diff --git a/modules/poll/poll.test b/modules/poll/poll.test
index 15e3a454fade..6ff2a78254f6 100644
--- a/modules/poll/poll.test
+++ b/modules/poll/poll.test
@@ -74,7 +74,7 @@ class PollTestCase extends DrupalWebTestCase {
 }
 
 class PollCreateTestCase extends PollTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array('name' => t('Poll create'), 'description' => 'Adds "more choices", previews and creates a poll.', 'group' => t('Poll'));
   }
 
@@ -90,7 +90,7 @@ class PollCreateTestCase extends PollTestCase {
 }
 
 class PollVoteTestCase extends PollTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array('name' => t('Poll vote'), 'description' => 'Vote on a poll', 'group' => t('Poll'));
   }
 
@@ -125,7 +125,7 @@ class PollVoteTestCase extends PollTestCase {
 }
 
 class PollBlockTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Block availability'),
       'description' => t('Check if the most recent poll block is available.'),
@@ -159,7 +159,7 @@ class PollBlockTestCase extends DrupalWebTestCase {
  */
 class PollJSAddChoice extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Poll add choice'),
       'description' => t('Submits a POST request for an additional poll choice.'),
diff --git a/modules/profile/profile.test b/modules/profile/profile.test
index 58193d40e10e..4a211c31dcfe 100644
--- a/modules/profile/profile.test
+++ b/modules/profile/profile.test
@@ -114,7 +114,7 @@ class ProfileTestCase extends DrupalWebTestCase {
 }
 
 class ProfileTestFields extends ProfileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => 'Test single fields',
       'description' => t('Testing profile module with add/edit/delete textfield, textarea, list, checkbox, and url fields into profile page') ,
@@ -149,7 +149,7 @@ class ProfileTestFields extends ProfileTestCase {
 }
 
 class ProfileTestSelect extends ProfileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => 'Test select field',
       'description' => t('Testing profile module with add/edit/delete a select field') ,
@@ -174,7 +174,7 @@ class ProfileTestSelect extends ProfileTestCase {
 }
 
 class ProfileTestDate extends ProfileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => 'Test date field',
       'description' => t('Testing profile module with add/edit/delete a date field') ,
@@ -210,7 +210,7 @@ class ProfileTestDate extends ProfileTestCase {
 }
 
 class ProfileTestWeights extends ProfileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => 'Test field weights',
       'description' => t('Testing profile modules weigting of fields') ,
@@ -239,7 +239,7 @@ class ProfileTestWeights extends ProfileTestCase {
  * Test profile field autocompletion and access.
  */
 class ProfileTestAutocomplete extends ProfileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Autocompletion'),
       'description' => t('Test profile fields with autocompletion.'),
@@ -292,7 +292,7 @@ class ProfileTestAutocomplete extends ProfileTestCase {
 }
 
 class ProfileBlockTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Block availability'),
       'description' => t('Check if the author-information block is available.'),
diff --git a/modules/search/search.test b/modules/search/search.test
index 96e0368012a4..bb4705ff8323 100644
--- a/modules/search/search.test
+++ b/modules/search/search.test
@@ -7,7 +7,7 @@ define('SEARCH_TYPE', '_test_');
 define('SEARCH_TYPE_2', '_test2_');
 
 class SearchMatchTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Search engine queries'),
       'description' => t('Indexes content and queries it.'),
@@ -197,7 +197,7 @@ class SearchMatchTestCase extends DrupalWebTestCase {
 class SearchBikeShed extends DrupalWebTestCase {
   protected $searching_user;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Bike shed'),
       'description' => t('Tests the bike shed text on the no results page.'),
@@ -227,7 +227,7 @@ class SearchBikeShed extends DrupalWebTestCase {
 class SearchAdvancedSearchForm extends DrupalWebTestCase {
   protected $node;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Advanced search form'),
       'description' => t('Indexes content and tests the advanced search form.'),
@@ -288,7 +288,7 @@ class SearchAdvancedSearchForm extends DrupalWebTestCase {
 }
 
 class SearchRankingTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Search engine ranking'),
       'description' => t('Indexes content and tests ranking factors.'),
@@ -371,7 +371,7 @@ class SearchRankingTestCase extends DrupalWebTestCase {
 }
 
 class SearchBlockTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Block availability'),
       'description' => t('Check if the search form block is available.'),
diff --git a/modules/simpletest/simpletest.module b/modules/simpletest/simpletest.module
index f0ab28fd727b..efc3a1fa9220 100644
--- a/modules/simpletest/simpletest.module
+++ b/modules/simpletest/simpletest.module
@@ -89,7 +89,7 @@ function simpletest_test_form() {
     $header = array(t('Message'), t('Group'), t('Filename'), t('Line'), t('Function'), array('colspan' => 2, 'data' => t('Status')));
     while ($result = db_fetch_object($results)) {
       $class = $result->test_class;
-      $info = $uncategorized_tests[$class]->getInfo();
+      $info = call_user_func(array($class, 'getInfo'));
       $group = $info['group'];
       $selected_tests[$group][$class] = TRUE;
       if (!isset($group_summary[$group])) {
@@ -130,7 +130,7 @@ function simpletest_test_form() {
     foreach ($form['results'] as $group => &$elements) {
       $group_ok = TRUE;
       foreach ($elements as $class => &$element) {
-        $info = $uncategorized_tests[$class]->getInfo();
+        $info = call_user_func(array($class, 'getInfo'));
         $ok = $element['summary']['#fail'] + $element['summary']['#exception'] == 0;
         $element += array(
           '#type' => 'fieldset',
@@ -166,15 +166,13 @@ function simpletest_test_form() {
     $form['tests']['table'][$group_name] = array(
       '#collapsed' => TRUE,
     );
-    foreach ($test_group as $test) {
-      $test_info = $test->getInfo();
-      $test_class = get_class($test);
-      $is_selected = isset($selected_tests[$group_name][$test_class]);
-      $form['tests']['table'][$group_name][$test_class] = array(
+    foreach ($test_group as $class => $info) {
+      $is_selected = isset($selected_tests[$group_name][$class]);
+      $form['tests']['table'][$group_name][$class] = array(
         '#type' => 'checkbox',
-        '#title' => $test_info['name'],
+        '#title' => $info['name'],
         '#default_value' => $is_selected,
-        '#description' => $test_info['description'],
+        '#description' => $info['description'],
       );
       if ($is_selected) {
         $form['tests']['table'][$group_name]['#collapsed'] = FALSE;
@@ -475,18 +473,17 @@ function simpletest_get_all_tests() {
       include_once DRUPAL_ROOT . '/' . $file;
     }
     $classes = array_values(array_diff(get_declared_classes(), $existing_classes));
-    $formatted_classes = array();
     foreach ($classes as $key => $class) {
-      if (method_exists($class, 'getInfo')) {
-        $formatted_classes[$class] = new $class;
+      if (!method_exists($class, 'getInfo')) {
+        unset($classes[$key]);
       }
     }
   }
-  if (count($formatted_classes) == 0) {
+  if (count($classes) == 0) {
     drupal_set_message('No test cases found.', 'error');
     return FALSE;
   }
-  return $formatted_classes;
+  return $classes;
 }
 
 /**
@@ -498,9 +495,9 @@ function simpletest_get_all_tests() {
  */
 function simpletest_categorize_tests($tests) {
   $groups = array();
-  foreach ($tests as $test => $instance) {
-    $info = $instance->getInfo();
-    $groups[$info['group']][$test] = $instance;
+  foreach ($tests as $test) {
+    $info = call_user_func(array($test, 'getInfo'));
+    $groups[$info['group']][$test] = $info;
   }
   uksort($groups, 'strnatcasecmp');
   return $groups;
diff --git a/modules/simpletest/simpletest.test b/modules/simpletest/simpletest.test
index d3934988d500..58b75b181441 100644
--- a/modules/simpletest/simpletest.test
+++ b/modules/simpletest/simpletest.test
@@ -13,7 +13,7 @@ class SimpleTestFunctionalTest extends DrupalWebTestCase {
    */
   protected $test_ids = array();
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('SimpleTest functionality'),
       'description' => t('Test SimpleTest\'s web interface: check that the intended tests were
diff --git a/modules/simpletest/tests/actions.test b/modules/simpletest/tests/actions.test
index 3965500ef8a7..42bfaf3223b0 100644
--- a/modules/simpletest/tests/actions.test
+++ b/modules/simpletest/tests/actions.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class ActionsConfigurationTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Actions configuration'),
       'description' => t('Tests complex actions configuration by adding, editing, and deleting a complex action.'),
diff --git a/modules/simpletest/tests/bootstrap.test b/modules/simpletest/tests/bootstrap.test
index 3cacf11751bf..befc5ea53bf0 100644
--- a/modules/simpletest/tests/bootstrap.test
+++ b/modules/simpletest/tests/bootstrap.test
@@ -3,7 +3,7 @@
 
 class BootstrapIPAddressTestCase extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('IP address and HTTP_HOST test'),
       'description' => t('Get the IP address from the current visitor from the server variables, check hostname validation.'),
@@ -82,7 +82,7 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase {
 
 class BootstrapPageCacheTestCase extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Page cache test'),
       'description' => t('Enable the page cache and test it with conditional HTTP requests.'),
@@ -136,7 +136,7 @@ class BootstrapVariableTestCase extends DrupalWebTestCase {
     parent::setUp('system_test');
   }
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Variable test'),
       'description' => t('Make sure the variable system functions correctly.'),
@@ -182,7 +182,7 @@ class BootstrapVariableTestCase extends DrupalWebTestCase {
  */
 class HookBootExitTestCase extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Boot and exit hook invocation'),
       'description' => t('Test that hook_boot() and hook_exit() are called correctly.'),
diff --git a/modules/simpletest/tests/cache.test b/modules/simpletest/tests/cache.test
index 368947143f1a..31d13c3e7a7d 100644
--- a/modules/simpletest/tests/cache.test
+++ b/modules/simpletest/tests/cache.test
@@ -102,7 +102,7 @@ class CacheTestCase extends DrupalWebTestCase {
 }
 
 class CacheSavingCase extends CacheTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Cache saving test'),
       'description' => t('Check our variables are saved and restored the right way.'),
@@ -163,7 +163,7 @@ class CacheSavingCase extends CacheTestCase {
 }
 
 class CacheClearCase extends CacheTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Cache clear test'),
       'description' => t('Check our clearing is done the proper way.'),
diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test
index 2fa9b168770f..2a2af52f7b9d 100644
--- a/modules/simpletest/tests/common.test
+++ b/modules/simpletest/tests/common.test
@@ -6,7 +6,7 @@
  */
 class CommonLUnitTest extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Tests for the l() function'),
       'description' => t('Confirm that url() works correctly with various input.'),
@@ -30,7 +30,7 @@ class CommonSizeTestCase extends DrupalWebTestCase {
   protected $exact_test_cases;
   protected $rounded_test_cases;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Size parsing test'),
       'description' => t('Parse a predefined amount of bytes and compare the output with the expected value.'),
@@ -134,7 +134,7 @@ class DrupalTagsHandlingTestCase extends DrupalWebTestCase {
     '"Drupal, although it rhymes with sloopal, is as awesome as a troopal!"' => 'Drupal, although it rhymes with sloopal, is as awesome as a troopal!',
   );
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Drupal tags handling'),
       'description' => t("Performs tests on Drupal's handling of tags, both explosion and implosion tactics used."),
@@ -184,7 +184,7 @@ class DrupalTagsHandlingTestCase extends DrupalWebTestCase {
  * Test the Drupal CSS system.
  */
 class CascadingStylesheetsTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Cascading stylesheets'),
       'description' => t('Tests adding various cascading stylesheets to the page.'),
@@ -278,7 +278,7 @@ class CascadingStylesheetsTestCase extends DrupalWebTestCase {
  * Test drupal_http_request().
  */
 class DrupalHTTPRequestTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Drupal HTTP request'),
       'description' => t("Performs tests on Drupal's HTTP request mechanism."),
@@ -359,7 +359,7 @@ class DrupalHTTPRequestTestCase extends DrupalWebTestCase {
  * Testing drupal_set_content and drupal_get_content.
  */
 class DrupalSetContentTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Drupal set/get content'),
       'description' => t('Performs tests on setting and retrieiving content from theme regions.'),
@@ -410,7 +410,7 @@ class JavaScriptTestCase extends DrupalWebTestCase {
    */
   var $preprocess_js = NULL;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('JavaScript'),
       'description' => t('Tests the JavaScript system.'),
@@ -562,7 +562,7 @@ class JavaScriptTestCase extends DrupalWebTestCase {
  * Tests for drupal_render().
  */
 class DrupalRenderUnitTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Drupal render'),
       'description' => t('Performs unit tests on drupal_render().'),
@@ -627,7 +627,7 @@ class DrupalRenderUnitTestCase extends DrupalWebTestCase {
  * Tests Drupal error and exception handlers.
  */
 class DrupalErrorHandlerUnitTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Drupal error handlers'),
       'description' => t('Performs tests on the Drupal error and exception handler.'),
@@ -739,7 +739,7 @@ class DrupalErrorHandlerUnitTest extends DrupalWebTestCase {
  * Test for valid_url().
  */
 class ValidUrlTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Valid Url'),
       'description' => t("Performs tests on Drupal's valid url function."),
@@ -847,7 +847,7 @@ class ValidUrlTestCase extends DrupalWebTestCase {
  * Tests for CRUD API functions.
  */
 class DrupalDataApiTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Data API functions'),
       'description' => t('Tests the performance of CRUD APIs.'),
@@ -904,7 +904,7 @@ class DrupalErrorCollectionUnitTest extends DrupalWebTestCase {
    */
   protected $collectedErrors = array();
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('SimpleTest error collecter'),
       'description' => t('Performs tests on the Simpletest error and exception collecter.'),
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index bc9a84b3b817..a59e321aa4d4 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -171,7 +171,7 @@ class DatabaseTestCase extends DrupalWebTestCase {
  */
 class DatabaseConnectionTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Connection tests'),
       'description' => t('Tests of the core database system.'),
@@ -239,7 +239,7 @@ class DatabaseConnectionTestCase extends DatabaseTestCase {
  */
 class DatabaseFetchTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Fetch tests'),
       'description' => t('Test the Database system\'s various fetch capabilities.'),
@@ -320,7 +320,7 @@ class DatabaseFetchTestCase extends DatabaseTestCase {
  */
 class DatabaseFetch2TestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Fetch tests, part 2'),
       'description' => t('Test the Database system\'s various fetch capabilities.'),
@@ -385,7 +385,7 @@ class DatabaseFetch2TestCase extends DatabaseTestCase {
  */
 class DatabaseInsertTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Insert tests'),
       'description' => t('Test the Insert query builder.'),
@@ -519,7 +519,7 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
  */
 class DatabaseInsertLOBTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Insert tests, LOB fields'),
       'description' => t('Test the Insert query builder with LOB fields.'),
@@ -559,7 +559,7 @@ class DatabaseInsertLOBTestCase extends DatabaseTestCase {
  */
 class DatabaseInsertDefaultsTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Insert tests, default fields'),
       'description' => t('Test the Insert query builder with default values.'),
@@ -612,7 +612,7 @@ class DatabaseInsertDefaultsTestCase extends DatabaseTestCase {
  */
 class DatabaseUpdateTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Update tests'),
       'description' => t('Test the Update query builder.'),
@@ -683,7 +683,7 @@ class DatabaseUpdateTestCase extends DatabaseTestCase {
  */
 class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Update tests, Complex'),
       'description' => t('Test the Update query builder, complex queries.'),
@@ -804,7 +804,7 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
  */
 class DatabaseUpdateLOBTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Update tests, LOB'),
       'description' => t('Test the Update query builder with LOB fields.'),
@@ -856,7 +856,7 @@ class DatabaseUpdateLOBTestCase extends DatabaseTestCase {
  */
 class DatabaseDeleteTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Delete tests'),
       'description' => t('Test the Delete query builder.'),
@@ -883,7 +883,7 @@ class DatabaseDeleteTestCase extends DatabaseTestCase {
  */
 class DatabaseMergeTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Merge tests'),
       'description' => t('Test the Merge query builder.'),
@@ -1071,7 +1071,7 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
  */
 class DatabaseSelectTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Select tests'),
       'description' => t('Test the Select query builder.'),
@@ -1242,7 +1242,7 @@ class DatabaseSelectTestCase extends DatabaseTestCase {
  */
 class DatabaseSelectSubqueryTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Select tests, subqueries'),
       'description' => t('Test the Select query builder.'),
@@ -1308,7 +1308,7 @@ class DatabaseSelectSubqueryTestCase extends DatabaseTestCase {
  */
 class DatabaseSelectOrderedTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Select tests, ordered'),
       'description' => t('Test the Select query builder.'),
@@ -1395,7 +1395,7 @@ class DatabaseSelectOrderedTestCase extends DatabaseTestCase {
  */
 class DatabaseSelectComplexTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Select tests, complex'),
       'description' => t('Test the Select query builder with more complex queries.'),
@@ -1598,7 +1598,7 @@ class DatabaseSelectComplexTestCase extends DatabaseTestCase {
 
 class DatabaseSelectPagerDefaultTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Pager query tests'),
       'description' => t('Test the pager query extender.'),
@@ -1678,7 +1678,7 @@ class DatabaseSelectPagerDefaultTestCase extends DatabaseTestCase {
 
 class DatabaseSelectTableSortDefaultTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Tablesort query tests'),
       'description' => t('Test the tablesort query extender.'),
@@ -1723,7 +1723,7 @@ class DatabaseSelectTableSortDefaultTestCase extends DatabaseTestCase {
  */
 class DatabaseTaggingTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Query tagging tests'),
       'description' => t('Test the tagging capabilities of the Select builder.'),
@@ -1806,7 +1806,7 @@ class DatabaseTaggingTestCase extends DatabaseTestCase {
  */
 class DatabaseAlterTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Query altering tests'),
       'description' => t('Test the hook_query_alter capabilities of the Select builder.'),
@@ -1890,7 +1890,7 @@ class DatabaseAlterTestCase extends DatabaseTestCase {
  */
 class DatabaseAlter2TestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Query altering tests, part 2'),
       'description' => t('Test the hook_query_alter capabilities of the Select builder.'),
@@ -1952,7 +1952,7 @@ class DatabaseAlter2TestCase extends DatabaseTestCase {
  */
 class DatabaseRegressionTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Regression tests'),
       'description' => t('Regression tests cases for the database layer.'),
@@ -2002,7 +2002,7 @@ class DatabaseRegressionTestCase extends DatabaseTestCase {
  */
 class DatabaseLoggingTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Query logging'),
       'description' => t('Test the query logging facility.'),
@@ -2127,7 +2127,7 @@ class DatabaseLoggingTestCase extends DatabaseTestCase {
  * Range query tests.
  */
 class DatabaseRangeQueryTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Range query test'),
       'description' => t('Test the Range query functionality.'),
@@ -2158,7 +2158,7 @@ class DatabaseRangeQueryTestCase extends DrupalWebTestCase {
  * Temporary query tests.
  */
 class DatabaseTemporaryQueryTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Temporary query test'),
       'description' => t('Test the temporary query functionality.'),
@@ -2208,7 +2208,7 @@ class DatabaseTemporaryQueryTestCase extends DrupalWebTestCase {
  * database system interprets SQL syntax in an expected fashion.
  */
 class DatabaseAnsiSyntaxTestCase extends DatabaseTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('ANSI SQL syntax tests'),
       'description' => t('Test ANSI SQL syntax interpretation.'),
@@ -2249,7 +2249,7 @@ class DatabaseAnsiSyntaxTestCase extends DatabaseTestCase {
  * Test invalid data handling.
  */
 class DatabaseInvalidDataTestCase extends DatabaseTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Invalid data'),
       'description' => t('Test handling of some invalid data.'),
@@ -2322,7 +2322,7 @@ class DatabaseInvalidDataTestCase extends DatabaseTestCase {
  * Drupal-specific SQL syntax tests.
  */
 class DatabaseQueryTestCase extends DatabaseTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Custom query syntax tests'),
       'description' => t('Test Drupal\'s extended prepared statement syntax..'),
@@ -2366,7 +2366,7 @@ class DatabaseQueryTestCase extends DatabaseTestCase {
  */
 class DatabaseTransactionTestCase extends DatabaseTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Transaction tests'),
       'description' => t('Test the transaction abstraction system.'),
diff --git a/modules/simpletest/tests/file.test b/modules/simpletest/tests/file.test
index c0dcb7ad11f9..302a94ed4883 100644
--- a/modules/simpletest/tests/file.test
+++ b/modules/simpletest/tests/file.test
@@ -249,7 +249,7 @@ class FileHookTestCase extends FileTestCase {
  *  This will run tests against the file_space_used() function.
  */
 class FileSpaceUsedTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File space used tests'),
       'description' => t('Tests the file_space_used() function.'),
@@ -309,7 +309,7 @@ class FileSpaceUsedTest extends FileTestCase {
  *  This will run tests against the file validation functions (file_validate_*).
  */
 class FileValidatorTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File validator tests'),
       'description' => t('Tests the functions used to validate uploaded files.'),
@@ -467,7 +467,7 @@ class FileValidatorTest extends DrupalWebTestCase {
  *  Tests the file_unmanaged_save_data() function.
  */
 class FileUnmanagedSaveDataTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Unmanaged file save data'),
       'description' => t('Tests the unmanaged file save data function.'),
@@ -511,7 +511,7 @@ class FileSaveUploadTest extends FileHookTestCase {
    */
   var $maxFidBefore;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File uploading'),
       'description' => t('Tests the file uploading functions.'),
@@ -639,7 +639,7 @@ class FileSaveUploadTest extends FileHookTestCase {
  * Directory related tests.
  */
 class FileDirectoryTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File paths and directories'),
       'description' => t('Tests operations dealing with directories.'),
@@ -804,7 +804,7 @@ class FileDirectoryTest extends FileTestCase {
  * Tests the file_scan_directory() function.
  */
 class FileScanDirectoryTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File scan directory'),
       'description' => t('Tests the file_scan_directory() function.'),
@@ -932,7 +932,7 @@ class FileScanDirectoryTest extends FileTestCase {
  * Deletion related tests.
  */
 class FileUnmanagedDeleteTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Unmanaged file delete'),
       'description' => t('Tests the unmanaged file delete function.'),
@@ -978,7 +978,7 @@ class FileUnmanagedDeleteTest extends FileTestCase {
  * Deletion related tests.
  */
 class FileUnmanagedDeleteRecursiveTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Unmanaged recursive file delete'),
       'description' => t('Tests the unmanaged file delete recursive function.'),
@@ -1055,7 +1055,7 @@ class FileUnmanagedDeleteRecursiveTest extends FileTestCase {
  * Unmanaged move related tests.
  */
 class FileUnmanagedMoveTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Unmanaged file moving'),
       'description' => t('Tests the unmanaged file move function.'),
@@ -1127,7 +1127,7 @@ class FileUnmanagedMoveTest extends FileTestCase {
  * Unmanaged copy related tests.
  */
 class FileUnmanagedCopyTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Unmanaged file copying'),
       'description' => t('Tests the unmanaged file copy function.'),
@@ -1214,7 +1214,7 @@ class FileUnmanagedCopyTest extends FileTestCase {
  * Deletion related tests.
  */
 class FileDeleteTest extends FileHookTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File delete'),
       'description' => t('Tests the file delete function.'),
@@ -1245,7 +1245,7 @@ class FileDeleteTest extends FileHookTestCase {
  * Move related tests
  */
 class FileMoveTest extends FileHookTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File moving'),
       'description' => t('Tests the file move function.'),
@@ -1406,7 +1406,7 @@ class FileMoveTest extends FileHookTestCase {
  * Copy related tests.
  */
 class FileCopyTest extends FileHookTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File copying'),
       'description' => t('Tests the file copy function.'),
@@ -1552,7 +1552,7 @@ class FileCopyTest extends FileHookTestCase {
  * Tests the file_load() function.
  */
 class FileLoadTest extends FileHookTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File loading'),
       'description' => t('Tests the file_load() function.'),
@@ -1649,7 +1649,7 @@ class FileLoadTest extends FileHookTestCase {
  * Tests the file_save() function.
  */
 class FileSaveTest extends FileHookTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File saving'),
       'description' => t('Tests the file_save() function.'),
@@ -1705,7 +1705,7 @@ class FileSaveTest extends FileHookTestCase {
  * Tests the file_validate() function..
  */
 class FileValidateTest extends FileHookTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File validate'),
       'description' => t('Tests the file_validate() function.'),
@@ -1744,7 +1744,7 @@ class FileValidateTest extends FileHookTestCase {
  *  Tests the file_save_data() function.
  */
 class FileSaveDataTest extends FileHookTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File save data'),
       'description' => t('Tests the file save data function.'),
@@ -1875,7 +1875,7 @@ class FileSaveDataTest extends FileHookTestCase {
  * Tests for download/file transfer functions.
  */
 class FileDownloadTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File download'),
       'description' => t('Tests for file download/transfer functions.'),
@@ -1921,7 +1921,7 @@ class FileDownloadTest extends FileTestCase {
  * Tests for file_munge_filename() and file_unmunge_filename().
  */
 class FileNameMungingTest extends FileTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('File naming'),
       'description' => t('Test filename munging and unmunging.'),
diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test
index be5c3117d324..88b2614b9ca3 100644
--- a/modules/simpletest/tests/form.test
+++ b/modules/simpletest/tests/form.test
@@ -8,7 +8,7 @@
 
 class FormsTestCase extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Required field validation'),
       'description' => t('Carriage returns, tabs, and spaces are not valid content for a required field.'),
@@ -78,7 +78,7 @@ class FormsTestCase extends DrupalWebTestCase {
  * Test form type functions for expected behavior.
  */
 class FormsTestTypeCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Form type-specific tests'),
       'description' => t('Test form type functions for expected behavior.'),
@@ -116,7 +116,7 @@ class FormsTestTypeCase extends DrupalWebTestCase {
  */
 class FormsElementsTableSelectFunctionalTest extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Tableselect form element type test'),
       'description' => t('Test the tableselect element for expected behavior'),
@@ -320,7 +320,7 @@ class FormsElementsTableSelectFunctionalTest extends DrupalWebTestCase {
  */
 class FormsFormCleanIdFunctionalTest extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('form_clean_id() test'),
       'description' => t('Test the function form_clean_id() for expected behavior'),
@@ -350,7 +350,7 @@ class FormsFormCleanIdFunctionalTest extends DrupalWebTestCase {
  */
 class FormAPITestCase extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Drupal Execute and Batch API'),
       'description' => t('Tests the compatibility of drupal_execute and the Batch API'),
diff --git a/modules/simpletest/tests/graph.test b/modules/simpletest/tests/graph.test
index ce95ac46b6bc..cd88c2ee20b3 100644
--- a/modules/simpletest/tests/graph.test
+++ b/modules/simpletest/tests/graph.test
@@ -10,7 +10,7 @@
  * Unit tests for the graph handling features.
  */
 class GraphUnitTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Graph'),
       'description' => t('Graph handling unit tests.'),
diff --git a/modules/simpletest/tests/image.test b/modules/simpletest/tests/image.test
index 4be01c773aac..21fb97ac9c8f 100644
--- a/modules/simpletest/tests/image.test
+++ b/modules/simpletest/tests/image.test
@@ -14,7 +14,7 @@ class ImageToolkitTestCase extends DrupalWebTestCase {
   protected $file;
   protected $image;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Image toolkit tests'),
       'description' => t('Check image tookit functions.'),
@@ -203,7 +203,7 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
   protected $width = 40;
   protected $height = 20;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Image GD manipulation tests'),
       'description' => t('Check that core image manipulations work properly: scale, resize, rotate, crop, scale and crop, and desaturate.'),
diff --git a/modules/simpletest/tests/menu.test b/modules/simpletest/tests/menu.test
index 633945cfcdd2..882b3831f7bb 100644
--- a/modules/simpletest/tests/menu.test
+++ b/modules/simpletest/tests/menu.test
@@ -7,7 +7,7 @@
  */
 
 class MenuIncTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Hook menu tests'),
       'description' => t('Test menu hook functionality.'),
@@ -65,7 +65,7 @@ class MenuIncTestCase extends DrupalWebTestCase {
  * Tests rebuilding the menu by setting 'menu_rebuild_needed.'
  */
 class MenuRebuildTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Menu rebuild test'),
       'description' => t('Test rebuilding of menu.'),
diff --git a/modules/simpletest/tests/module.test b/modules/simpletest/tests/module.test
index ca4f7ac5e54c..057fc640a880 100644
--- a/modules/simpletest/tests/module.test
+++ b/modules/simpletest/tests/module.test
@@ -10,7 +10,7 @@
  * Unit tests for the module API.
  */
 class ModuleUnitTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Module API'),
       'description' => t('Test low-level module functions.'),
diff --git a/modules/simpletest/tests/registry.test b/modules/simpletest/tests/registry.test
index e8abd231bcff..4a859a64f91a 100644
--- a/modules/simpletest/tests/registry.test
+++ b/modules/simpletest/tests/registry.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class RegistryParseFileTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Registry parse file test'),
       'description' => t('Parse a simple file and check that its resources are saved to the database.'),
@@ -51,7 +51,7 @@ CONTENTS;
 class RegistryParseFilesTestCase extends DrupalWebTestCase {
   protected $fileTypes = array('new', 'existing_changed');
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Registry parse files test'),
       'description' => t('Read two a simple files from disc, and check that their resources are saved to the database.'),
diff --git a/modules/simpletest/tests/schema.test b/modules/simpletest/tests/schema.test
index ed418770958c..968106c34ec5 100644
--- a/modules/simpletest/tests/schema.test
+++ b/modules/simpletest/tests/schema.test
@@ -10,7 +10,7 @@
  * Unit tests for the Schema API.
  */
 class SchemaTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Schema API'),
       'description' => t('Tests table creation and modification via the schema API.'),
diff --git a/modules/simpletest/tests/session.test b/modules/simpletest/tests/session.test
index 63932e7e44f4..1ee80485e9ef 100644
--- a/modules/simpletest/tests/session.test
+++ b/modules/simpletest/tests/session.test
@@ -7,7 +7,7 @@
  */
 
 class SessionTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Session tests'),
       'description' => t('Drupal session handling tests.'),
diff --git a/modules/simpletest/tests/unicode.test b/modules/simpletest/tests/unicode.test
index e2f3206be5d6..b9eeba8d0a1d 100644
--- a/modules/simpletest/tests/unicode.test
+++ b/modules/simpletest/tests/unicode.test
@@ -18,7 +18,7 @@ class UnicodeUnitTest extends DrupalWebTestCase {
    */
   protected $extendedMode = FALSE;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Unicode handling'),
       'description' => t('Tests Drupal Unicode handling.'),
diff --git a/modules/simpletest/tests/xmlrpc.test b/modules/simpletest/tests/xmlrpc.test
index c645654b53ed..ce6a053d2425 100644
--- a/modules/simpletest/tests/xmlrpc.test
+++ b/modules/simpletest/tests/xmlrpc.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class XMLRPCValidator1IncTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('XML-RPC validator'),
       'description'  => t('See !validator-link.', array('!validator-link' => l('the xmlrpc validator1 specification', 'http://www.xmlrpc.com/validator1Docs'))),
@@ -122,7 +122,7 @@ class XMLRPCValidator1IncTestCase extends DrupalWebTestCase {
 }
 
 class XMLRPCMessagesTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name'  => t('XML-RPC message'),
       'description' => t('Test large messages.'),
diff --git a/modules/statistics/statistics.test b/modules/statistics/statistics.test
index 2c0ac586c84a..a40e18c968a1 100644
--- a/modules/statistics/statistics.test
+++ b/modules/statistics/statistics.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class StatisticsBlockVisitorsTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Top visitor blocking'),
       'description' => t('Tests blocking of IP addresses via the top visitors report.'),
diff --git a/modules/syslog/syslog.test b/modules/syslog/syslog.test
index 61a7affda052..1db3f5ac9190 100644
--- a/modules/syslog/syslog.test
+++ b/modules/syslog/syslog.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class SyslogTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Syslog functionality'),
       'description' => t('Test syslog settings.'),
diff --git a/modules/system/system.test b/modules/system/system.test
index 5ce12039e39c..1e26330a9026 100644
--- a/modules/system/system.test
+++ b/modules/system/system.test
@@ -58,7 +58,7 @@ class ModuleTestCase extends DrupalWebTestCase {
  * Test module enabling/disabling functionality.
  */
 class EnableDisableTestCase extends ModuleTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Enable/disable modules'),
       'description' => t('Enable/disable core module and confirm table creation/deletion.'),
@@ -118,7 +118,7 @@ class EnableDisableTestCase extends ModuleTestCase {
  * Test module dependency functionality.
  */
 class ModuleDependencyTestCase extends ModuleTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Module dependencies'),
       'description' => t('Enable module without dependency enabled.'),
@@ -157,7 +157,7 @@ class ModuleDependencyTestCase extends ModuleTestCase {
  * Test required modules functionality.
  */
 class ModuleRequiredTestCase extends ModuleTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Required modules'),
       'description' => t('Attempt disabling of required modules.'),
@@ -184,7 +184,7 @@ class IPAddressBlockingTestCase extends DrupalWebTestCase {
   /**
    * Implementation of getInfo().
    */
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('IP address blocking'),
       'description' => t('Test IP address blocking.'),
@@ -254,7 +254,7 @@ class CronRunTestCase extends DrupalWebTestCase {
   /**
    * Implementation of getInfo().
    */
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Cron run'),
       'description' => t('Test cron run.'),
@@ -325,7 +325,7 @@ class AdminOverviewTestCase extends DrupalWebTestCase {
   /**
    * Implementation of getInfo().
    */
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Admin overview'),
       'description' => t('Confirm that the admin overview page appears as expected.'),
@@ -392,7 +392,7 @@ class AdminMetaTagTestCase extends DrupalWebTestCase {
   /**
    * Implementation of getInfo().
    */
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Fingerprinting meta tag'),
       'description' => t('Confirm that the fingerprinting meta tag appears as expected.'),
@@ -420,7 +420,7 @@ class AccessDeniedTestCase extends DrupalWebTestCase {
   /**
    * Implementation of getInfo().
    */
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('403 functionality'),
       'description' => t("Tests page access denied functionality, including custom 403 pages."),
@@ -481,7 +481,7 @@ class PageNotFoundTestCase extends DrupalWebTestCase {
   /**
    * Implementation of getInfo().
    */
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('404 functionality'),
       'description' => t("Tests page not found functionality, including custom 404 pages."),
@@ -540,7 +540,7 @@ class PageNotFoundTestCase extends DrupalWebTestCase {
  * Tests generic date and time handling capabilities of Drupal.
  */
 class DateTimeFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Date and time'),
       'description' => t('Configure date and time settings. Test date formatting and time zone handling, including daylight saving time.'),
@@ -587,7 +587,7 @@ class PageTitleFiltering extends DrupalWebTestCase {
   /**
    * Implementation of getInfo().
    */
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('HTML in page titles'),
       'description' => t('Tests correct handling or conversion by drupal_set_title() and drupal_get_title().'),
@@ -649,7 +649,7 @@ class PageTitleFiltering extends DrupalWebTestCase {
  */
 class FrontPageTestCase extends DrupalWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Front page'),
       'description' => t('Tests front page functionality and administration.'),
@@ -700,7 +700,7 @@ class FrontPageTestCase extends DrupalWebTestCase {
 }
 
 class SystemBlockTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Block functionality'),
       'description' => t('Configure and move powered-by block.'),
@@ -754,7 +754,7 @@ class SystemSettingsForm extends DrupalWebTestCase {
   /**
    * Implementation of getInfo().
    */
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('System setting forms'),
       'description' => t('Tests correctness of system_settings_form() processing.'),
@@ -833,7 +833,7 @@ class SystemSettingsForm extends DrupalWebTestCase {
  * Tests for the theme interface functionality.
  */
 class SystemThemeFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Theme interface functionality'),
       'description' => t('Tests the theme interface functionality by enabling and switching themes, and using an administration theme.'),
diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test
index a32a48cfc265..2679da3e73e4 100644
--- a/modules/taxonomy/taxonomy.test
+++ b/modules/taxonomy/taxonomy.test
@@ -43,7 +43,7 @@ class TaxonomyWebTestCase extends DrupalWebTestCase {
 */
 class TaxonomyVocabularyFunctionalTest extends TaxonomyWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Taxonomy vocabulary interface'),
       'description' => t('Test the taxonomy vocabulary interface.'),
@@ -173,7 +173,7 @@ class TaxonomyVocabularyFunctionalTest extends TaxonomyWebTestCase {
  */
 class TaxonomyVocabularyUnitTest extends TaxonomyWebTestCase {
 
-function getInfo() {
+public static function getInfo() {
      return array(
        'name' => t('Taxonomy vocabularies'),
        'description' => t('Test loading, saving and deleting vocabularies.'),
@@ -282,7 +282,7 @@ function getInfo() {
  */
 class TaxonomyTermUnitTest extends TaxonomyWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Taxonomy term unit tests'),
       'description' => t('Unit tests for taxonomy term functions.'),
@@ -357,7 +357,7 @@ class TaxonomyTermUnitTest extends TaxonomyWebTestCase {
  */
 class TaxonomyTermTestCase extends TaxonomyWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Taxonomy term functions and forms.'),
       'description' => t('Test load, save and delete for taxonomy terms.'),
@@ -563,7 +563,7 @@ class TaxonomyTermTestCase extends TaxonomyWebTestCase {
  */
 class TaxonomyLoadMultipleUnitTest extends TaxonomyWebTestCase {
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Taxonomy term multiple loading'),
       'description' => t('Test the loading of multiple taxonomy terms at once'),
@@ -629,7 +629,7 @@ class TaxonomyLoadMultipleUnitTest extends TaxonomyWebTestCase {
  * Tests for taxonomy hook invocation.
  */
 class TaxonomyHooksTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Taxonomy term hooks'),
       'description' => t('Hooks for taxonomy term load/save/delete.'),
diff --git a/modules/tracker/tracker.test b/modules/tracker/tracker.test
index ba917fa80e3e..4063b16b4361 100644
--- a/modules/tracker/tracker.test
+++ b/modules/tracker/tracker.test
@@ -6,7 +6,7 @@ class TrackerTest extends DrupalWebTestCase {
   protected $other_user;
   protected $new_node;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Tracker'),
       'description' => t('Create nodes and check for their display in the tracker listings.'),
diff --git a/modules/translation/translation.test b/modules/translation/translation.test
index e34fef529ead..c1fd79b77536 100644
--- a/modules/translation/translation.test
+++ b/modules/translation/translation.test
@@ -4,7 +4,7 @@
 class TranslationTestCase extends DrupalWebTestCase {
   protected $book;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Translation functionality'),
       'description' => t('Create a page with translation, modify the page outdating translation, and update translation.'),
diff --git a/modules/trigger/trigger.test b/modules/trigger/trigger.test
index 6067a9560322..c51a140cb86c 100644
--- a/modules/trigger/trigger.test
+++ b/modules/trigger/trigger.test
@@ -5,7 +5,7 @@ class TriggerContentTestCase extends DrupalWebTestCase {
   var $_cleanup_roles = array();
   var $_cleanup_users = array();
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Trigger content (node) actions'),
       'description' => t('Perform various tests with content actions.') ,
diff --git a/modules/upload/upload.test b/modules/upload/upload.test
index b95ff78f86d8..9c2956c9d27a 100644
--- a/modules/upload/upload.test
+++ b/modules/upload/upload.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class UploadTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Upload functionality'),
       'description' => t('Check content uploaded to nodes.'),
diff --git a/modules/user/user.test b/modules/user/user.test
index 430d105d4e19..055f7c26166f 100644
--- a/modules/user/user.test
+++ b/modules/user/user.test
@@ -2,7 +2,7 @@
 // $Id$
 
 class UserRegistrationTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('User registration'),
       'description' => t('Registers a user, fails login, resets password, successfully logs in with the one time password, changes password, logs out, successfully logs in with the new password, visits profile page.'),
@@ -102,7 +102,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
 
 
 class UserValidationTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Username/e-mail validation'),
       'description' => t('Verify that username/email validity checks behave as designed.'),
@@ -153,7 +153,7 @@ class UserValidationTestCase extends DrupalWebTestCase {
 }
 
 class UserCancelTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Cancel account'),
       'description' => t('Ensure that account cancellation methods work as expected.'),
@@ -494,7 +494,7 @@ class UserPictureTestCase extends DrupalWebTestCase {
   protected $user;
   protected $_directory_test;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Upload user picture'),
       'description' => t('Assure that dimension check, extension check and image scaling work as designed.'),
@@ -714,7 +714,7 @@ class UserPermissionsTestCase extends DrupalWebTestCase {
   protected $admin_user;
   protected $rid;
 
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('Role permissions'),
       'description' => t('Verify that role permissions can be added and removed via the permissions page.'),
@@ -761,7 +761,7 @@ class UserPermissionsTestCase extends DrupalWebTestCase {
 }
 
 class UserAdminTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('User admininstration'),
       'description' => t('Test user admininstration page functionality.'),
@@ -814,7 +814,7 @@ class UserAdminTestCase extends DrupalWebTestCase {
  * Tests for user-configurable time zones.
  */
 class UserTimeZoneFunctionalTest extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('User time zones'),
       'description' => t('Set a user time zone and verify that dates are displayed in local time.'),
@@ -874,7 +874,7 @@ class UserTimeZoneFunctionalTest extends DrupalWebTestCase {
  * Test user autocompletion.
  */
 class UserAutocompleteTestCase extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('User autocompletion'),
       'description' => t('Test user autocompletion functionality.'),
@@ -914,7 +914,7 @@ class UserAutocompleteTestCase extends DrupalWebTestCase {
  * Test user blocks.
  */
 class UserBlocksUnitTests extends DrupalWebTestCase {
-  function getInfo() {
+  public static function getInfo() {
     return array(
       'name' => t('User blocks'),
       'description' => t('Test user blocks.'),
diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh
index c593e7c52fd3..a6723fc9f866 100755
--- a/scripts/run-tests.sh
+++ b/scripts/run-tests.sh
@@ -54,8 +54,7 @@
   echo   "-------------------------------\n\n";
   foreach ($groups as $group => $tests) {
     echo $group . "\n";
-    foreach ($tests as $class_name => $instance) {
-      $info = $instance->getInfo();
+    foreach ($tests as $class_name => $info) {
       echo " - " . $info['name'] . ' (' . $class_name . ')' . "\n";
     }
   }
@@ -377,13 +376,13 @@ function simpletest_script_get_test_list() {
 
   $test_list = array();
   if ($args['all']) {
-    $test_list = array_keys($all_tests);
+    $test_list = $all_tests;
   }
   else {
     if ($args['class']) {
       // Check for valid class names.
       foreach ($args['test_names'] as $class_name) {
-        if (isset($all_tests[$class_name])) {
+        if (in_array($class_name, $all_tests)) {
           $test_list[] = $class_name;
         }
       }
@@ -395,7 +394,7 @@ function simpletest_script_get_test_list() {
       }
 
       // Check for valid class names.
-      foreach ($all_tests as $class_name => $instance) {
+      foreach ($all_tests as $class_name => $info) {
         $refclass = new ReflectionClass($class_name);
         $file = $refclass->getFileName();
         if (isset($files[$file])) {
@@ -407,7 +406,7 @@ function simpletest_script_get_test_list() {
       // Check for valid group names and get all valid classes in group.
       foreach ($args['test_names'] as $group_name) {
         if (isset($groups[$group_name])) {
-          foreach($groups[$group_name] as $class_name => $instance) {
+          foreach($groups[$group_name] as $class_name => $info) {
             $test_list[] = $class_name;
           }
         }
@@ -440,7 +439,7 @@ function simpletest_script_reporter_init() {
   else {
     echo "Tests to be run:\n";
     foreach ($test_list as $class_name) {
-      $info = $all_tests[$class_name]->getInfo();
+      $info = call_user_func(array($class_name, 'getInfo'));
       echo " - " . $info['name'] . ' (' . $class_name . ')' . "\n";
     }
     echo "\n";
-- 
GitLab