Mercurial > hg > isophonics-drupal-site
view core/modules/simpletest/src/Cache/Context/TestDiscoveryCacheContext.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 129ea1e6d783 |
children |
line wrap: on
line source
<?php namespace Drupal\simpletest\Cache\Context; use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Cache\Context\CacheContextInterface; use Drupal\Core\PrivateKey; use Drupal\Core\Site\Settings; use Drupal\simpletest\TestDiscovery; /** * Defines the TestDiscoveryCacheContext service. * * Cache context ID: 'test_discovery'. */ class TestDiscoveryCacheContext implements CacheContextInterface { /** * The test discovery service. * * @var \Drupal\simpletest\TestDiscovery */ protected $testDiscovery; /** * The private key service. * * @var \Drupal\Core\PrivateKey */ protected $privateKey; /** * The hash of discovered test information. * * Services should not be stateful, but we only keep this information per * request. That way we don't perform a file scan every time we need this * hash. The test scan results are unlikely to change during the request. * * @var string */ protected $hash; /** * Construct a test discovery cache context. * * @param \Drupal\simpletest\TestDiscovery $test_discovery * The test discovery service. * @param \Drupal\Core\PrivateKey $private_key * The private key service. */ public function __construct(TestDiscovery $test_discovery, PrivateKey $private_key) { $this->testDiscovery = $test_discovery; $this->privateKey = $private_key; } /** * {@inheritdoc} */ public static function getLabel() { return t('Test discovery'); } /** * {@inheritdoc} */ public function getContext() { if (empty($this->hash)) { $tests = $this->testDiscovery->getTestClasses(); $this->hash = $this->hash(serialize($tests)); } return $this->hash; } /** * {@inheritdoc} */ public function getCacheableMetadata() { return new CacheableMetadata(); } /** * Hashes the given string. * * @param string $identifier * The string to be hashed. * * @return string * The hash. */ protected function hash($identifier) { return hash('sha256', $this->privateKey->get() . Settings::getHashSalt() . $identifier); } }