diff --git a/core/lib/Drupal/Core/Installer/Installer.php b/core/lib/Drupal/Core/Installer/Installer.php
new file mode 100644
index 0000000..5b668ce
--- /dev/null
+++ b/core/lib/Drupal/Core/Installer/Installer.php
@@ -0,0 +1,373 @@
+<?php
+
+namespace Drupal\Core\Installer;
+
+/**
+ * An implementation of the InstallerInterface that provides a more explicit
+ * wrapper around the install_drupal function, used for non-interactive
+ * installs.
+ */
+class Installer implements InstallerInterface {
+
+  /**
+   * @var string
+   */
+  protected $profile;
+
+  /**
+   * @var string
+   */
+  protected $locale;
+
+  /**
+   * @var string
+   */
+  protected $accountPassword;
+
+  /**
+   * @var string
+   */
+  protected $accountUsername;
+
+  /**
+   * @var string
+   */
+  protected $accountMail;
+
+  /**
+   * @var string
+   */
+  protected $cleanUrls;
+
+  /**
+   * @var string
+   */
+  protected $siteMail;
+
+  /**
+   * @var string
+   */
+  protected $siteName;
+
+  /**
+   * @var string
+   */
+  protected $defaultDbDriver;
+
+  /**
+   * @var array
+   */
+  protected $defaultDbSettings;
+
+  /**
+   * @var string
+   */
+  private $installCallback;
+
+  /**
+   * @var string
+   */
+  private $siteHostName;
+
+  /**
+   * @var string
+   */
+  private $sitePath;
+
+  /**
+
+  /**
+   * {@inheritdoc}
+   */
+  function install() {
+    $this->exportGlobals();
+    $this->validate();
+    return $this->installCallback($this->installDrupalSettings());
+  }
+
+  /**
+   * Validates that all required properties have been set.
+   *
+   * @throws InstallerException
+   * @return bool
+   */
+  function validate() {
+    $class_info = new \ReflectionClass($this);
+    $properties = array();
+    $missing_properties = array();
+    foreach ($class_info->getProperties(\ReflectionProperty::IS_PROTECTED) as $property) {
+      $var_name = $property->getName();
+      if ($this->{$var_name} === NULL) {
+        $missing_properties[] = $var_name;
+      }
+    }
+
+    if (!empty($missing_properties)) {
+      $message = "All properties must be set! The following have not been set: ";
+      $message += implode(', ', $missing_properties);
+      throw new InstallerException($message);
+    }
+    return TRUE;
+  }
+
+  /**
+   * Calls the install callback, which will default to install_drupal() outside
+   * of a testing scenario.
+   *
+   * @param array $settings
+   */
+  protected function installCallback($settings) {
+    if ($this->installCallback) {
+      $callback = $this->installCallback;
+    }
+    else {
+      if (!function_exists('install_drupal')) {
+        require $this->drupalRoot() . '/core/includes/install.core.inc';
+      }
+      $callback = 'install_drupal';
+    }
+    // Unfortunately, a chdir is necessary for the installtion to work, due to
+    // core's inconsistant use of the DRUPAL_ROOT constant.
+    // TODO: Fix Drupal's use of DRUPAL_ROOT so that this isn't necessary.
+    chdir($this->drupalRoot());
+    return call_user_func($callback, $settings);
+  }
+
+  protected function drupalRoot() {
+    return substr(__FILE__, 0, strpos(__FILE__, "core/lib/Drupal/Core"));
+  }
+  /**
+   * Setter for the install callback. Should only be used in tests.
+   *
+   * @param callable $callback
+   */
+  public function setInstallCallback($callback) {
+    $this->installCallback = $callback;
+  }
+
+  /**
+   * Creates the global variables necessary for install_drupal to work, since it
+   * needs more than it claims in it's function signature.
+   */
+  protected function exportGlobals() {
+    define('MAINTENANCE_MODE', 'install');
+
+    if ($hostname = $this->getSiteHostName()) {
+      $_SERVER['HTTP_HOST'] = $hostname;
+    }
+    $_SERVER['SCRIPT_NAME'] = $this->getSitePath()  . '/index.php';
+  }
+
+  /**
+   * Returns the installation settings in the format necessary for 
+   * install_drupal().
+   *
+   * @return array
+   */
+  protected function installDrupalSettings() {
+    return array(
+      'parameters' => array(
+        'profile' => $this->getProfile(),
+        'locale' => $this->getLocale(),
+      ),
+      'forms' => array(
+        'install_settings_form' => array(
+          'driver' => $this->getDefaultDbDriver(),
+          $this->getDefaultDbDriver() => $this->getDefaultDbSettings(),
+          'op' => 'Save and continue'
+        ),
+        'install_configure_form' => array(
+          'account' => array(
+            'mail' => $this->getAccountMail(),
+            'name' =>  $this->getAccountUsername(),
+            'pass' => array(
+              'pass1' => $this->getAccountPassword(),
+              'pass2' => $this->getAccountPassword(),
+            )
+          ),
+          'clean_url' => $this->getCleanUrls(),
+          'op' => 'Save and continue',
+          'site_mail' => $this->getSiteMail(),
+          'site_name' => $this->getSiteName(),
+          'update_status_module' => array(
+            '1' => true,
+            '2' => true
+          ),
+        ),
+      ),
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setSite($hostname, $path = '/') {
+    $this->siteHostName = $hostname;
+    $this->sitePath = $path;
+    return $this;
+  }
+
+  /**
+   * Returns the hostname of the site to use for the install. If NULL, the 
+   * default site should be used.
+   *
+   * @return string|null
+   */
+  protected function getSiteHostName() {
+    return $this->siteHostName;
+  }
+
+  /**
+   * Returns the path of the site to use for the install, if using a 
+   * sub-directory based multisite. Will return "/" if not set.
+   *
+   * @return string
+   */
+  protected function getSitePath() {
+    return $this->sitePath;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setProfile($profile) {
+    $this->profile = $profile;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getProfile() {
+    return $this->profile;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setAccountMail($accountMail) {
+    $this->accountMail = $accountMail;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getAccountMail() {
+    return $this->accountMail;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setAccountPassword($accountPassword) {
+    $this->accountPassword = $accountPassword;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getAccountPassword() {
+    return $this->accountPassword;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setAccountUsername($accountUsername) {
+    $this->accountUsername = $accountUsername;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getAccountUsername() {
+    return $this->accountUsername;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setCleanUrls($cleanUrls) {
+    $this->cleanUrls = $cleanUrls;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCleanUrls() {
+    return $this->cleanUrls;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setDefaultDbSettings($driver, $defaultDbSettings) {
+    $this->defaultDbDriver = $driver;
+    $this->defaultDbSettings = $defaultDbSettings;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDefaultDbDriver() {
+    return $this->defaultDbDriver;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDefaultDbSettings() {
+    return $this->defaultDbSettings;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setLocale($locale) {
+    $this->locale = $locale;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getLocale() {
+    return $this->locale;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setSiteMail($siteMail) {
+    $this->siteMail = $siteMail;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getSiteMail() {
+    return $this->siteMail;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setSiteName($siteName) {
+    $this->siteName = $siteName;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getSiteName() {
+    return $this->siteName;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Installer/InstallerInterface.php b/core/lib/Drupal/Core/Installer/InstallerInterface.php
new file mode 100644
index 0000000..a37570b
--- /dev/null
+++ b/core/lib/Drupal/Core/Installer/InstallerInterface.php
@@ -0,0 +1,118 @@
+<?php
+
+namespace Drupal\Core\Installer;
+
+/**
+ * Provides an interface for a code-based installation of Drupal.
+ */
+interface InstallerInterface {
+
+  /**
+   * Runs the installer.
+   *
+   * @return bool
+   */
+  public function install();
+
+  /**
+   * @return string
+   */
+  public function getSiteName();
+
+  /**
+   * @param string $siteName
+   */
+  public function setSiteName($siteName);
+
+  /**
+   * @return string
+   */
+  public function getAccountUsername();
+
+  /**
+   * @param string $accountUsername
+   */
+  public function setAccountUsername($accountUsername);
+
+  /**
+   * @return string
+   */
+  public function getDefaultDbDriver();
+
+  /**
+   * @return array
+   */
+  public function getDefaultDbSettings();
+
+  /**
+   * @param array $defaultDbSettings
+   */
+  public function setDefaultDbSettings($driver, $defaultDbSettings);
+
+  /**
+   * @param string $cleanUrls
+   */
+  public function setCleanUrls($cleanUrls);
+
+  /**
+   * @return string
+   */
+  public function getCleanUrls();
+
+  /**
+   * @return string
+   */
+  public function getAccountPassword();
+
+  /**
+   * @param string $accountPassword
+   */
+  public function setAccountPassword($accountPassword);
+
+  /**
+   * @return string
+   */
+  public function getAccountMail();
+
+  /**
+   * @param string $accountMail
+   */
+  public function setAccountMail($accountMail);
+
+  /**
+   * @return string
+   */
+  public function getProfile();
+
+  /**
+   * @param string $profile
+   */
+  public function setProfile($profile);
+
+  /**
+   * @param string $hostname
+   * @param string $path
+   */
+  public function setSite($hostname, $path);
+
+  /**
+   * @return string
+   */
+  public function getSiteMail();
+
+
+  /**
+   * @param string $siteMail
+   */
+  public function setSiteMail($siteMail);
+
+  /**
+   * @return string
+   */
+  public function getLocale();
+
+  /**
+   * @param string $locale
+   */
+  public function setLocale($locale);
+}
diff --git a/core/tests/Drupal/Tests/Core/Installer/InstallerTest.php b/core/tests/Drupal/Tests/Core/Installer/InstallerTest.php
new file mode 100644
index 0000000..d26b7ed
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Installer/InstallerTest.php
@@ -0,0 +1,199 @@
+<?php
+
+namespace Drupal\Tests\Core\Installer;
+
+use Drupal\Core\Installer\Installer;
+use Drupal\Core\Database\Database;
+use Symfony\Component\HttpFoundation\Request;
+use Drupal\Core\DrupalKernel;
+
+/**
+ * @group slow
+ *
+ * This test must be isolated because the Installer will install Drupal
+ * in the same process this test is running in, which would otherwise pollute
+ * the environment of all other tests.
+ *
+ * @preserveGlobalState disabled
+ * @runTestsInSeparateProcesses
+ */
+class InstallerTest extends \PHPUnit_Framework_TestCase {
+
+  protected $installPrefix;
+  protected $defaultDbInfo;
+
+  static function getInfo() {
+    return array(
+      'name' => 'Installer acceptance test',
+      'description' => 'Acceptance test for the non-interactive Installer.',
+      'group' => 'Installer',
+    );
+  }
+
+  function setUp() {
+    // Require the autoload bootstrap file manually, since it won't be included
+    // when using "@preserveGlobalState disabled".
+    require $this->drupalRoot() . '/core/tests/autoload.php';
+  }
+
+  function testInstall() {
+    // Setup a fake site to install.
+    $site_path = $this->siteDirectory();
+    mkdir($site_path);
+    file_put_contents($site_path . '/settings.php', '<?php' . PHP_EOL);
+    $install_hostname = $this->installHostName();
+
+    $installer = new Installer();
+    $options = $this->installSettings();
+    $installer
+      ->setProfile($options['profile'])
+      ->setLocale($options['locale'])
+      ->setAccountPassword($options['account_password'])
+      ->setAccountUsername($options['account_username'])
+      ->setAccountMail($options['account_mail'])
+      ->setCleanUrls($options['clean_urls'])
+      ->setSiteMail($options['site_mail'])
+      ->setSiteName($options['site_name'])
+      ->setDefaultDbSettings($options['db_driver'], $options['db_settings'])
+      ->setSite($install_hostname);
+    $installer->install();
+
+    // Simulate a request to make sure it comes back ok.
+    drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION);
+    $kernel = new \Drupal\Core\DrupalKernel('prod', drupal_classloader());
+    $kernel->boot();
+    drupal_bootstrap(DRUPAL_BOOTSTRAP_CODE);
+    $request = new Request(array(), array(), array(), array(), array(),array(
+      'SCRIPT_URL' => '/',
+      'SCRIPT_URI' => 'http://' . $install_hostname,
+      'SCRIPT_NAME' => '/index.php',
+      'HTTP_HOST' => $install_hostname,
+      'SERVER_NAME' => $install_hostname,
+      'REQUEST_METHOD' => 'GET',
+      'REQUEST_URI' => '/',
+    ));
+    $response = $kernel->handle($request)->prepare($request);
+
+    $this->assertEquals(200, $response->getStatusCode());
+    $this->assertNotEquals(FALSE, strpos($response->getContent(), 'test-sitename'));
+  }
+
+  function teardown() {
+    $this->recursiveRemoveDirectory($this->siteDirectory());
+
+    $db_info = $this->installDbInfo();
+    // Awful, but necessary since you can't unregister Drupal's shutdown
+    // functions, and it will blow up if you close it's connection beforehand.
+    register_shutdown_function(function() use ($db_info) {
+      $test_db = Database::getConnection();
+      $connection_options = $test_db->getConnectionOptions();
+      $db_class = get_class($test_db);
+      Database::closeConnection();
+      $connection = $db_class::open($connection_options);
+      $connection->exec('DROP DATABASE `' . $db_info['database']. '`;');
+    });
+  }
+
+  /**
+   * Settings to be passed the installer object.
+   */
+  protected function installSettings() {
+    $db_info = $this->installDbInfo();
+    return array(
+      'profile' => 'standard',
+      'locale' => 'en',
+      'account_password' => 'testpassword',
+      'account_username' => 'testusername',
+      'account_mail' => 'account@example.com',
+      'clean_urls' => TRUE,
+      'site_mail' => 'sitemail@example.com',
+      'site_name' => 'test-sitename',
+      'db_driver' => 'mysql',
+      'db_settings' => array(
+        'driver' => $db_info['driver'],
+        'database' => $db_info['database'],
+        'host' => $db_info['host'],
+        'namespace' => $db_info['namespace'],
+        'username' => $db_info['username'],
+        'password' => $db_info['password'],
+        'port' => $db_info['port'],
+      )
+    );
+  }
+
+  /**
+   * Helper method to find what would be DRUPAL_ROOT.
+   */
+  protected function drupalRoot() {
+    return substr(__FILE__, 0, strpos(__FILE__, "core/tests/Drupal/Tests"));
+  }
+
+  /**
+   * Returns the database information for the default site, so we can use those
+   * creds to create a new database.
+   *
+   * TODO: Come up with a better way to give db creds to PHPUnit.
+   */
+  protected function defaultDbInfo() {
+    if ($this->defaultDbInfo) {
+      return $this->defaultDbInfo;
+    }
+
+    include_once $this->drupalRoot() . '/sites/default/settings.php';
+    return $this->defaultDbInfo = $databases['default']['default'];
+  }
+
+  /**
+   * Returns the database connection info to use for the test site.
+   */
+  protected function installDbInfo() {
+    $db_info = $this->defaultDbInfo();
+    $db_info['database'] = $this->installPrefix() . $db_info['database'];
+    return $db_info;
+  }
+
+  /**
+   * Generates a prefix to be used for the sitename and db name.
+   */
+  protected function installPrefix() {
+    if ($this->installPrefix) {
+      return $this->installPrefix;
+    }
+
+    return $this->installPrefix = 'installer_test_' . uniqid();
+  }
+
+  /**
+   * Returns the hostname to be used for the test site, using
+   * Drupal's multisite feture.
+   */
+  protected function installHostName() {
+    return $this->installPrefix() . '.example.com';
+  }
+
+  /**
+   * Returns the path to the site directory of the test site.
+   */
+  protected function siteDirectory() {
+    return $this->drupalRoot() . '/sites/' . $this->installHostName();
+  }
+
+  protected function recursiveRemoveDirectory($dir) {
+    if (!file_exists($dir)) {
+      return TRUE;
+    }
+    @chmod($dir, 0777); // Make file/dir writeable
+    if (!is_dir($dir)) {
+      return unlink($dir);
+    }
+    foreach (scandir($dir) as $item) {
+      if ($item == '.' || $item == '..') {
+        continue;
+      }
+      if (!$this->recursiveRemoveDirectory($dir.'/'.$item)) {
+        return FALSE;
+      }
+    }
+    return rmdir($dir);
+  }
+}
diff --git a/core/tests/Drupal/Tests/Core/Installer/InstallerUnitTest.php b/core/tests/Drupal/Tests/Core/Installer/InstallerUnitTest.php
new file mode 100644
index 0000000..be8a835
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Installer/InstallerUnitTest.php
@@ -0,0 +1,89 @@
+<?php
+
+namespace Drupal\Tests\Core\Installer;
+
+use Drupal\Core\Installer\Installer;
+
+/**
+ * This test needs to be isolated because the Installer class will define the
+ * MAINTENANCE_MODE constant, which should not leak into other tests.
+ *
+ * @preserveGlobalState disabled
+ * @runTestsInSeparateProcesses
+ */
+class InstallerUnitTest extends \PHPUnit_Framework_TestCase {
+
+  static function getInfo() {
+    return array(
+      'name' => 'Installer unit test',
+      'description' => 'Unit tests for the non-interactive Installer class',
+      'group' => 'Installer',
+    );
+  }
+
+  function setUp() {
+    $root = substr(__FILE__, 0, strpos(__FILE__, "core/tests/Drupal/Tests"));
+    // Require the autoload bootstrap file manually, since it won't be included
+    // when using "@preserveGlobalState disabled".
+    require $root . '/core/tests/autoload.php';
+  }
+
+  /**
+   * @expectedException Drupal\Core\Installer\InstallerException
+   */
+  function testMissingParametersValidation() {
+    $installer = new Installer();
+    $installer->setInstallCallback(function($settings) {});
+    $installer->setProfile('standard');
+    $installer->install();
+  }
+
+  function testInstall() {
+    $callback = $this->getMock('stdClass', array('install'));
+    $callback->expects($this->once())
+             ->method('install');
+
+    $installer = new Installer();
+    $installer->setInstallCallback(array($callback, 'install'));
+
+    $options = $this->installSettings();
+    $installer
+      ->setProfile($options['profile'])
+      ->setLocale($options['locale'])
+      ->setAccountPassword($options['account_password'])
+      ->setAccountUsername($options['account_username'])
+      ->setAccountMail($options['account_mail'])
+      ->setCleanUrls($options['clean_urls'])
+      ->setSiteMail($options['site_mail'])
+      ->setSiteName($options['site_name'])
+      ->setDefaultDbSettings($options['db_driver'], $options['db_settings']);
+
+    $installer->install();
+  }
+
+  /**
+   * Settings to be used when preparing the Installer class.
+   */
+  protected function installSettings() {
+    return array(
+      'profile' => 'standard',
+      'locale' => 'en',
+      'account_password' => 'testpassword',
+      'account_username' => 'testusername',
+      'account_mail' => 'account@example.com',
+      'clean_urls' => TRUE,
+      'site_mail' => 'sitemail@example.com',
+      'site_name' => 'test sitename',
+      'db_driver' => 'mysql',
+      'db_settings' => array(
+         'driver' => 'mysql',
+         'name' => 'd8',
+         'host' => 'localhost',
+         'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
+         'username' => 'root',
+         'password' => '',
+         'port' => 3306,
+      )
+    );
+  }
+}
diff --git a/core/tests/bootstrap.php b/core/tests/autoload.php
similarity index 86%
copy from core/tests/bootstrap.php
copy to core/tests/autoload.php
index c69a52f..fe0a848 100644
--- a/core/tests/bootstrap.php
+++ b/core/tests/autoload.php
@@ -80,15 +80,3 @@ function drupal_phpunit_register_extension_dirs(Composer\Autoload\ClassLoader $l
 $dirs = array_map('drupal_phpunit_find_extension_directories', $extension_roots);
 $dirs = array_reduce($dirs, 'array_merge', array());
 drupal_phpunit_register_extension_dirs($loader, $dirs);
-
-// Look into removing this later.
-define('REQUEST_TIME', (int) $_SERVER['REQUEST_TIME']);
-
-// Set sane locale settings, to ensure consistent string, dates, times and
-// numbers handling.
-// @see drupal_environment_initialize()
-setlocale(LC_ALL, 'C');
-
-// Set the default timezone. While this doesn't cause any tests to fail, PHP
-// complains if 'date.timezone' is not set in php.ini.
-date_default_timezone_set('UTC');
diff --git a/core/tests/bootstrap.php b/core/tests/bootstrap.php
index c69a52f..937a8d5 100644
--- a/core/tests/bootstrap.php
+++ b/core/tests/bootstrap.php
@@ -7,79 +7,7 @@
  * @see phpunit.xml.dist
  */
 
-/**
- * Finds all valid extension directories recursively within a given directory.
- *
- * @param string $scan_directory
- *   The directory that should be recursively scanned.
- * @return array
- *   An associative array of extension directories found within the scanned
- *   directory, keyed by extension name.
- */
-function drupal_phpunit_find_extension_directories($scan_directory) {
-  $extensions = array();
-  $dirs = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($scan_directory, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS));
-  foreach ($dirs as $dir) {
-    if (strpos($dir->getPathname(), 'info.yml') !== FALSE) {
-      // Cut off ".info.yml" from the filename for use as the extension name.
-      $extensions[substr($dir->getFilename(), 0, -9)] = $dir->getPathInfo()->getRealPath();
-    }
-  }
-  return $extensions;
-}
-
-/**
- * Returns directories under which contributed extensions may exist.
- *
- * @return array
- *   An array of directories under which contributed extensions may exist.
- */
-function drupal_phpunit_contrib_extension_directory_roots() {
-  $sites_path = __DIR__ . '/../../sites';
-  $paths = array();
-  // Note this also checks sites/../modules and sites/../profiles.
-  foreach (scandir($sites_path) as $site) {
-    $path = "$sites_path/$site";
-    $paths[] = is_dir("$path/modules") ? realpath("$path/modules") : NULL;
-    $paths[] = is_dir("$path/profiles") ? realpath("$path/profiles") : NULL;
-  }
-  return array_filter($paths);
-}
-
-/**
- * Registers the namespace for each extension directory with the autoloader.
- *
- * @param Composer\Autoload\ClassLoader $loader
- *   The supplied autoloader.
- * @param array $dirs
- *   An associative array of extension directories, keyed by extension name.
- */
-function drupal_phpunit_register_extension_dirs(Composer\Autoload\ClassLoader $loader, $dirs) {
-  foreach ($dirs as $extension => $dir) {
-    $lib_path = $dir . '/lib';
-    if (is_dir($lib_path)) {
-      $loader->add('Drupal\\' . $extension, $lib_path);
-    }
-    $tests_path = $dir . '/tests';
-    if (is_dir($tests_path)) {
-      $loader->add('Drupal\\' . $extension, $tests_path);
-    }
-  }
-}
-
-// Start with classes in known locations.
-$loader = require __DIR__ . '/../vendor/autoload.php';
-$loader->add('Drupal\\Tests', __DIR__);
-
-// Scan for arbitrary extension namespaces from core and contrib.
-$extension_roots = array_merge(array(
-  __DIR__ . '/../modules',
-  __DIR__ . '/../profiles',
-), drupal_phpunit_contrib_extension_directory_roots());
-
-$dirs = array_map('drupal_phpunit_find_extension_directories', $extension_roots);
-$dirs = array_reduce($dirs, 'array_merge', array());
-drupal_phpunit_register_extension_dirs($loader, $dirs);
+require "autoload.php";
 
 // Look into removing this later.
 define('REQUEST_TIME', (int) $_SERVER['REQUEST_TIME']);
