class DrupalInstalledTest
Tests DrupalInstalled.php hash changes when scaffolding is run.
Attributes
#[Group('Scaffold')]
#[Group('#slow')]
Hierarchy
- class \Drupal\BuildTests\Framework\BuildTestBase uses \Drupal\TestTools\Extension\RequiresComposerTrait, \Drupal\Tests\PhpUnitCompatibilityTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\Tests\Composer\Plugin\Scaffold\Functional\DrupalInstalledTest uses \Drupal\Tests\Composer\Plugin\ExecTrait extends \Drupal\BuildTests\Framework\BuildTestBase
Expanded class hierarchy of DrupalInstalledTest
File
-
core/
tests/ Drupal/ Tests/ Composer/ Plugin/ Scaffold/ Functional/ DrupalInstalledTest.php, line 15
Namespace
Drupal\Tests\Composer\Plugin\Scaffold\FunctionalView source
class DrupalInstalledTest extends BuildTestBase {
use ExecTrait;
/**
* Directory to perform the tests in.
*
* @var string
*/
protected $fixturesDir;
/**
* The Fixtures object.
*
* @var \Drupal\Tests\Composer\Plugin\Scaffold\Fixtures
*/
protected $fixtures;
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->fixtures = new Fixtures();
$this->fixtures
->createIsolatedComposerCacheDir();
$this->fixturesDir = $this->fixtures
->tmpDir($this->name());
$replacements = [
'SYMLINK' => 'false',
'PROJECT_ROOT' => $this->fixtures
->projectRoot(),
];
$this->fixtures
->cloneFixtureProjects($this->fixturesDir, $replacements);
}
/**
* {@inheritdoc}
*/
protected function tearDown() : void {
// Remove any temporary directories et. al. that were created.
$this->fixtures
->tearDown();
parent::tearDown();
}
/**
* Tests DrupalInstalled.php hash changes when scaffolding is run.
*/
public function testDrupalInstalledHash() : void {
$topLevelProjectDir = 'drupal-installed-fixture';
$sut = $this->fixturesDir . '/' . $topLevelProjectDir;
$this->mustExec("composer install --no-ansi", $sut);
$original_version_hash = sha1_file($sut . '/vendor/drupal/DrupalInstalled.php');
// Require two fixtures and ensure that the DrupalInstalled.php file is
// updated.
$this->mustExec("composer require --no-ansi --no-interaction fixtures/empty-file:dev-main fixtures/scaffold-override-fixture:dev-main", $sut);
$two_fixtures_hash = sha1_file($sut . '/vendor/drupal/DrupalInstalled.php');
$this->assertNotEquals($original_version_hash, $two_fixtures_hash);
// Remove one fixture and ensure the hash is not equal to the original or
// the hash with two fixtures.
$this->mustExec("composer remove --no-ansi --no-interaction fixtures/empty-file", $sut);
$one_fixture_hash = sha1_file($sut . '/vendor/drupal/DrupalInstalled.php');
$this->assertNotEquals($original_version_hash, $one_fixture_hash);
$this->assertNotEquals($two_fixtures_hash, $one_fixture_hash);
// Add the fixture back and ensure the hash is changed and equal to the
// previous hash for two fixtures.
$this->mustExec("composer require --no-ansi --no-interaction fixtures/empty-file:dev-main", $sut);
$this->assertEquals($two_fixtures_hash, sha1_file($sut . '/vendor/drupal/DrupalInstalled.php'));
}
}
Members
| Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
|---|---|---|---|---|---|
| BuildTestBase::$commandProcess | private | property | The most recent command process. | ||
| BuildTestBase::$destroyBuild | protected | property | Default to destroying build artifacts after a test finishes. | ||
| BuildTestBase::$hostName | private static | property | Our native host name, used by PHP when it starts up the server. | ||
| BuildTestBase::$hostPort | private | property | Port that will be tested. | ||
| BuildTestBase::$mink | private | property | The Mink session manager. | ||
| BuildTestBase::$phpFinder | private | property | The PHP executable finder. | ||
| BuildTestBase::$portLocks | private | property | A list of ports used by the test. | ||
| BuildTestBase::$serverDocroot | private | property | The docroot for the server process. | ||
| BuildTestBase::$serverProcess | private | property | The process that's running the HTTP server. | ||
| BuildTestBase::$workspaceDir | private | property | The working directory where this test will manipulate files. | ||
| BuildTestBase::assertCommandExitCode | public | function | Asserts that the last command returned the specified exit code. | ||
| BuildTestBase::assertCommandOutputContains | public | function | Assert that text is present in the output of the most recent command. | ||
| BuildTestBase::assertCommandSuccessful | public | function | Asserts that the last command ran without error. | ||
| BuildTestBase::assertDrupalVisit | public | function | Helper function to assert that the last visit was a Drupal site. | ||
| BuildTestBase::assertErrorOutputContains | public | function | Assert that text is present in the error output of the most recent command. | ||
| BuildTestBase::assertErrorOutputNotContains | public | function | Assert text is not present in the error output of the most recent command. | ||
| BuildTestBase::checkPortIsAvailable | protected | function | Checks whether a port is available. | ||
| BuildTestBase::copyCodebase | public | function | Copy the current working codebase into a workspace. | 1 | |
| BuildTestBase::executeCommand | public | function | Run a command. | ||
| BuildTestBase::findAvailablePort | protected | function | Discover an available port number. | ||
| BuildTestBase::getCodebaseFinder | public | function | Get a default Finder object for a Drupal codebase. | ||
| BuildTestBase::getComposerRoot | public | function | Gets the path to the Composer root directory. | ||
| BuildTestBase::getDrupalRoot | public | function | Get the root path of this Drupal codebase. | ||
| BuildTestBase::getDrupalRootStatic | public static | function | Get the root path of this Drupal codebase. | ||
| BuildTestBase::getMink | public | function | Get the Mink instance. | ||
| BuildTestBase::getPortNumber | protected | function | Get the port number for requests. | ||
| BuildTestBase::getWorkingPath | protected | function | Get the working directory within the workspace, creating if necessary. | ||
| BuildTestBase::getWorkingPathDrupalRoot | public | function | Gets the working path for Drupal core. | ||
| BuildTestBase::getWorkspaceDirectory | public | function | Full path to the workspace where this test can build. | ||
| BuildTestBase::getWorkspaceDrupalRoot | public | function | Gets the path to Drupal root in the workspace directory. | ||
| BuildTestBase::initMink | protected | function | Set up the Mink session manager. | ||
| BuildTestBase::instantiateServer | protected | function | Do the work of making a server process. | 1 | |
| BuildTestBase::standUpServer | protected | function | Makes a local test server using PHP's internal HTTP server. | ||
| BuildTestBase::stopServer | protected | function | Stop the HTTP server, zero out all necessary variables. | ||
| BuildTestBase::visit | public | function | Visit a URI on the HTTP server. | 1 | |
| DrupalInstalledTest::$fixtures | protected | property | The Fixtures object. | ||
| DrupalInstalledTest::$fixturesDir | protected | property | Directory to perform the tests in. | ||
| DrupalInstalledTest::setUp | protected | function | Overrides BuildTestBase::setUp | ||
| DrupalInstalledTest::tearDown | protected | function | Overrides BuildTestBase::tearDown | ||
| DrupalInstalledTest::testDrupalInstalledHash | public | function | Tests DrupalInstalled.php hash changes when scaffolding is run. | ||
| ExecTrait::mustExec | protected | function | Runs an arbitrary command. | ||
| RequiresComposerTrait::requiresComposer | public static | function | #[BeforeClass] |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.