diff --git a/core/modules/php/lib/Drupal/php/Tests/PhpAccessTest.php b/core/modules/php/lib/Drupal/php/Tests/PhpAccessTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..ec7f740d392a25c1381f1c08863b5066ca2e57ba
--- /dev/null
+++ b/core/modules/php/lib/Drupal/php/Tests/PhpAccessTest.php
@@ -0,0 +1,39 @@
+ 'PHP filter access check',
+ 'description' => 'Make sure that users who don\'t have access to the PHP filter can\'t see it.',
+ 'group' => 'PHP',
+ );
+ }
+
+ /**
+ * Makes sure that the user can't use the PHP filter when not given access.
+ */
+ function testNoPrivileges() {
+ // Create node with PHP filter enabled.
+ $web_user = $this->drupalCreateUser(array('access content', 'create page content', 'edit own page content'));
+ $this->drupalLogin($web_user);
+ $node = $this->createNodeWithCode();
+
+ // Make sure that the PHP code shows up as text.
+ $this->drupalGet('node/' . $node->nid);
+ $this->assertText('print', t('PHP code was not evaluated.'));
+
+ // Make sure that user doesn't have access to filter.
+ $this->drupalGet('node/' . $node->nid . '/edit');
+ $this->assertNoRaw('', t('PHP code format not available.'));
+ }
+}
diff --git a/core/modules/php/lib/Drupal/php/Tests/PhpFilterTest.php b/core/modules/php/lib/Drupal/php/Tests/PhpFilterTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..71ee5beee587f942ef1999c08bac3e4c53fd1a42
--- /dev/null
+++ b/core/modules/php/lib/Drupal/php/Tests/PhpFilterTest.php
@@ -0,0 +1,49 @@
+ 'PHP filter functionality',
+ 'description' => 'Make sure that PHP filter properly evaluates PHP code when enabled.',
+ 'group' => 'PHP',
+ );
+ }
+
+ /**
+ * Makes sure that the PHP filter evaluates PHP code when used.
+ */
+ function testPhpFilter() {
+ // Log in as a user with permission to use the PHP code text format.
+ $php_code_permission = filter_permission_name(filter_format_load('php_code'));
+ $web_user = $this->drupalCreateUser(array('access content', 'create page content', 'edit own page content', $php_code_permission));
+ $this->drupalLogin($web_user);
+
+ // Create a node with PHP code in it.
+ $node = $this->createNodeWithCode();
+
+ // Make sure that the PHP code shows up as text.
+ $this->drupalGet('node/' . $node->nid);
+ $this->assertText('php print');
+
+ // Change filter to PHP filter and see that PHP code is evaluated.
+ $edit = array();
+ $langcode = LANGUAGE_NOT_SPECIFIED;
+ $edit["body[$langcode][0][format]"] = $this->php_code_format->format;
+ $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
+ $this->assertRaw(t('Basic page %title has been updated.', array('%title' => $node->title)), t('PHP code filter turned on.'));
+
+ // Make sure that the PHP code shows up as text.
+ $this->assertNoText('print "SimpleTest PHP was executed!"', t("PHP code isn't displayed."));
+ $this->assertText('SimpleTest PHP was executed!', t('PHP code has been evaluated.'));
+ }
+}
diff --git a/core/modules/php/lib/Drupal/php/Tests/PhpTestBase.php b/core/modules/php/lib/Drupal/php/Tests/PhpTestBase.php
new file mode 100644
index 0000000000000000000000000000000000000000..2af8c8b61ad7c2cafd418294c7ada529a3c0841b
--- /dev/null
+++ b/core/modules/php/lib/Drupal/php/Tests/PhpTestBase.php
@@ -0,0 +1,55 @@
+drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
+
+ // Create and login admin user.
+ $admin_user = $this->drupalCreateUser(array('administer filters'));
+ $this->drupalLogin($admin_user);
+
+ // Verify that the PHP code text format was inserted.
+ $php_format_id = 'php_code';
+ $this->php_code_format = filter_format_load($php_format_id);
+ $this->assertEqual($this->php_code_format->name, 'PHP code', t('PHP code text format was created.'));
+
+ // Verify that the format has the PHP code filter enabled.
+ $filters = filter_list_format($php_format_id);
+ $this->assertTrue($filters['php_code']->status, t('PHP code filter is enabled.'));
+
+ // Verify that the format exists on the administration page.
+ $this->drupalGet('admin/config/content/formats');
+ $this->assertText('PHP code', t('PHP code text format was created.'));
+
+ // Verify that anonymous and authenticated user roles do not have access.
+ $this->drupalGet('admin/config/content/formats/' . $php_format_id);
+ $this->assertFieldByName('roles[' . DRUPAL_ANONYMOUS_RID . ']', FALSE, t('Anonymous users do not have access to PHP code format.'));
+ $this->assertFieldByName('roles[' . DRUPAL_AUTHENTICATED_RID . ']', FALSE, t('Authenticated users do not have access to PHP code format.'));
+ }
+
+ /**
+ * Creates a test node with PHP code in the body.
+ *
+ * @return stdObject Node object.
+ */
+ function createNodeWithCode() {
+ return $this->drupalCreateNode(array('body' => array(LANGUAGE_NOT_SPECIFIED => array(array('value' => '')))));
+ }
+}
diff --git a/core/modules/php/php.info b/core/modules/php/php.info
index e1f2d570d52470045ada4db1fdfed2b52cc1d160..f155609dd20964a3d0b0cf43608f47913fa159f7 100644
--- a/core/modules/php/php.info
+++ b/core/modules/php/php.info
@@ -3,4 +3,3 @@ description = Allows embedded PHP code/snippets to be evaluated.
package = Core
version = VERSION
core = 8.x
-files[] = php.test
diff --git a/core/modules/php/php.test b/core/modules/php/php.test
deleted file mode 100644
index 980fb7bebf115e227582ea5f0e0d8672bf8ee112..0000000000000000000000000000000000000000
--- a/core/modules/php/php.test
+++ /dev/null
@@ -1,125 +0,0 @@
-drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
-
- // Create and login admin user.
- $admin_user = $this->drupalCreateUser(array('administer filters'));
- $this->drupalLogin($admin_user);
-
- // Verify that the PHP code text format was inserted.
- $php_format_id = 'php_code';
- $this->php_code_format = filter_format_load($php_format_id);
- $this->assertEqual($this->php_code_format->name, 'PHP code', t('PHP code text format was created.'));
-
- // Verify that the format has the PHP code filter enabled.
- $filters = filter_list_format($php_format_id);
- $this->assertTrue($filters['php_code']->status, t('PHP code filter is enabled.'));
-
- // Verify that the format exists on the administration page.
- $this->drupalGet('admin/config/content/formats');
- $this->assertText('PHP code', t('PHP code text format was created.'));
-
- // Verify that anonymous and authenticated user roles do not have access.
- $this->drupalGet('admin/config/content/formats/' . $php_format_id);
- $this->assertFieldByName('roles[' . DRUPAL_ANONYMOUS_RID . ']', FALSE, t('Anonymous users do not have access to PHP code format.'));
- $this->assertFieldByName('roles[' . DRUPAL_AUTHENTICATED_RID . ']', FALSE, t('Authenticated users do not have access to PHP code format.'));
- }
-
- /**
- * Creates a test node with PHP code in the body.
- *
- * @return stdObject Node object.
- */
- function createNodeWithCode() {
- return $this->drupalCreateNode(array('body' => array(LANGUAGE_NOT_SPECIFIED => array(array('value' => '')))));
- }
-}
-
-/**
- * Tests to make sure the PHP filter actually evaluates PHP code when used.
- */
-class PHPFilterTestCase extends PHPTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'PHP filter functionality',
- 'description' => 'Make sure that PHP filter properly evaluates PHP code when enabled.',
- 'group' => 'PHP',
- );
- }
-
- /**
- * Makes sure that the PHP filter evaluates PHP code when used.
- */
- function testPHPFilter() {
- // Log in as a user with permission to use the PHP code text format.
- $php_code_permission = filter_permission_name(filter_format_load('php_code'));
- $web_user = $this->drupalCreateUser(array('access content', 'create page content', 'edit own page content', $php_code_permission));
- $this->drupalLogin($web_user);
-
- // Create a node with PHP code in it.
- $node = $this->createNodeWithCode();
-
- // Make sure that the PHP code shows up as text.
- $this->drupalGet('node/' . $node->nid);
- $this->assertText('php print');
-
- // Change filter to PHP filter and see that PHP code is evaluated.
- $edit = array();
- $langcode = LANGUAGE_NOT_SPECIFIED;
- $edit["body[$langcode][0][format]"] = $this->php_code_format->format;
- $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
- $this->assertRaw(t('Basic page %title has been updated.', array('%title' => $node->title)), t('PHP code filter turned on.'));
-
- // Make sure that the PHP code shows up as text.
- $this->assertNoText('print "SimpleTest PHP was executed!"', t("PHP code isn't displayed."));
- $this->assertText('SimpleTest PHP was executed!', t('PHP code has been evaluated.'));
- }
-}
-
-/**
- * Tests to make sure access to the PHP filter is properly restricted.
- */
-class PHPAccessTestCase extends PHPTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'PHP filter access check',
- 'description' => 'Make sure that users who don\'t have access to the PHP filter can\'t see it.',
- 'group' => 'PHP',
- );
- }
-
- /**
- * Makes sure that the user can't use the PHP filter when not given access.
- */
- function testNoPrivileges() {
- // Create node with PHP filter enabled.
- $web_user = $this->drupalCreateUser(array('access content', 'create page content', 'edit own page content'));
- $this->drupalLogin($web_user);
- $node = $this->createNodeWithCode();
-
- // Make sure that the PHP code shows up as text.
- $this->drupalGet('node/' . $node->nid);
- $this->assertText('print', t('PHP code was not evaluated.'));
-
- // Make sure that user doesn't have access to filter.
- $this->drupalGet('node/' . $node->nid . '/edit');
- $this->assertNoRaw(' ', t('PHP code format not available.'));
- }
-}