Skip to content

Commit

Permalink
MDL-48568 cache: make tests aware of default application store
Browse files Browse the repository at this point in the history
When an alternative cache configuration is used, aka:

define('TEST_CACHE_USING_ALT_CACHE_CONFIG_PATH', true);
$CFG->altcacheconfigpath = '/tmp/xxxxx.php';

the get_expected_application_cache_store() method was not able of
retroffiting the default application store being used.

This commit just implements that functionality so, when
executing unit tests using alternative configuration, assertions
looking for that will pass without a problem.
  • Loading branch information
stronk7 committed Dec 23, 2014
1 parent 88abb34 commit 57bd925
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions cache/tests/cache_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,34 @@ public static function tearDownAfterClass() {
* @return string
*/
protected function get_expected_application_cache_store() {
global $CFG;
$expected = 'cachestore_file';

// Verify if we are using any of the available ways to use a different application store within tests.
if (defined('TEST_CACHE_USING_APPLICATION_STORE') && preg_match('#[a-zA-Z][a-zA-Z0-9_]*#', TEST_CACHE_USING_APPLICATION_STORE)) {
// 1st way. Using some of the testing servers.
$expected = 'cachestore_'.(string)TEST_CACHE_USING_APPLICATION_STORE;

} else if (defined('TEST_CACHE_USING_ALT_CACHE_CONFIG_PATH') && TEST_CACHE_USING_ALT_CACHE_CONFIG_PATH && !empty($CFG->altcacheconfigpath)) {
// 2nd way. Using an alternative configuration.
$defaultstores = cache_helper::get_stores_suitable_for_mode_default();
$instance = cache_config::instance();
// Iterate over defined mode mappings until we get an application one not being the default.
foreach ($instance->get_mode_mappings() as $mapping) {
// If the store is not for application mode, ignore.
if ($mapping['mode'] !== cache_store::MODE_APPLICATION) {
continue;
}
// If the store matches some default mapping store name, ignore.
if (array_key_exists($mapping['store'], $defaultstores) && !empty($defaultstores[$mapping['store']]['default'])) {
continue;
}
// Arrived here, have found an application mode store not being the default mapped one (file),
// that's the one we are using in the configuration for sure.
$expected = 'cachestore_'.$mapping['store'];
}
}

return $expected;
}

Expand Down

0 comments on commit 57bd925

Please sign in to comment.