commit 012b05e197f250a7ba09d95bdaba91ff0a27a175 Author: Erik Stielstra Date: Mon Sep 16 15:28:51 2013 +0200 #30 diff --git a/core/modules/system/lib/Drupal/system/Tests/Installer/InstallerTranslationVersionUnitTest.php b/core/modules/system/lib/Drupal/system/Tests/Installer/InstallerTranslationVersionUnitTest.php new file mode 100644 index 0000000..371cdf1 --- /dev/null +++ b/core/modules/system/lib/Drupal/system/Tests/Installer/InstallerTranslationVersionUnitTest.php @@ -0,0 +1,114 @@ + 'Installer translation version fallback', + 'description' => 'Tests the translation version fallback used during site installation to determine available translation files.', + 'group' => 'Installer', + ); + } + + protected function setUp() { + parent::setUp(); + require_once DRUPAL_ROOT . '/core/includes/install.core.inc'; + } + + /** + * Asserts version fallback results of install_get_localization_release(). + * + * @param $version + * Version string for which to determine version fallbacks. + * @param $required_results + * Version fallback results ordered for most to least significant. + * @param string $message + * (optional) A message to display with the assertion. + * @param string $group + * (optional) The group this message is in. + * + * @return bool + * TRUE if the assertion succeeded, FALSE otherwise. + */ + protected function assertVersionFallback($version, $required_results, $message = '', $group = 'Other') { + $equal = TRUE; + $results = install_get_localization_release($version); + if (count($required_results) == count($results)) { + foreach($results as $key => $result) { + $equal &= $result['version'] == $required_results[$key]; + list($major_release) = explode('.', $required_results[$key]); + $equal &= $result['core'] == $major_release . '.x'; + } + } + else { + $equal = FALSE; + } + $message = $message ? $message : t('Version fallback for @version.', array('@version' => $version)); + return $this->assert((bool) $equal, $message, $group); + } + + /** + * Tests version fallback of install_get_localization_release(). + */ + public function testVersionFallback() { + $version = '8.0'; + $result = array('8.0', '8.0-rc1', '7.0'); + $this->assertVersionFallback($version, $result); + + $version = '8.1'; + $result = array('8.1', '8.0', '7.0'); // @todo Add 'rc1'?; Remove '7.0' ? + $this->assertVersionFallback($version, $result); + + $version = '8.12'; + $result = array('8.12', '8.11', '7.0'); // @todo Add '8.0'; Remove '7.0' ? + $this->assertVersionFallback($version, $result); + + $version = '8.0-dev'; + $result = array('7.0'); // @todo Add 'alpha1', 'beta1', 'rc1' + $this->assertVersionFallback($version, $result); + + $version = '8.0-alpha3'; + $result = array('7.0'); // @todo Add 'alpha2', 'alpha1' + $this->assertVersionFallback($version, $result); + + $version = '8.0-alpha1'; + $result = array('7.0'); + $this->assertVersionFallback($version, $result); + + $version = '8.0-beta2'; + $result = array('7.0'); // @todo Add 'alpha1', 'beta1' + $this->assertVersionFallback($version, $result); + + $version = '8.0-beta1'; + $result = array('7.0'); // @todo Add 'alpha1' + $this->assertVersionFallback($version, $result); + + $version = '8.0-rc8'; + $result = array('8.0-rc8', '8.0-rc7', '7.0'); // @todo Add 'alpha1' ?, 'beta1', 'rc1' + $this->assertVersionFallback($version, $result); + + $version = '8.0-rc1'; + $result = array('8.0-rc1', '7.0'); // @todo Add 'alpha1', 'beta1' + $this->assertVersionFallback($version, $result); + + $version = '8.0-foo2'; + $result = array('7.0'); // @todo Add 'alpha1', 'beta1', 'rc1' + $this->assertVersionFallback($version, $result); + + $version = '99.2'; + $result = array('99.2', '99.1', '98.0'); + $this->assertVersionFallback($version, $result); + } +} \ No newline at end of file