Skip to content

Commit

Permalink
Merge pull request #17354 from seamuslee001/mysql8_master
Browse files Browse the repository at this point in the history
[TEST] Update test to support for 8.0.19 change
  • Loading branch information
eileenmcnaughton authored May 19, 2020
2 parents 8e268ef + 1cc1844 commit 0feda4a
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions tests/phpunit/CRM/Logging/SchemaTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
*/
class CRM_Logging_SchemaTest extends CiviUnitTestCase {

protected $databaseVersion;

public function setUp() {
$this->databaseVersion = CRM_Utils_SQL::getDatabaseVersion();
parent::setUp();
}

Expand All @@ -18,6 +21,7 @@ public function setUp() {
public function tearDown() {
$schema = new CRM_Logging_Schema();
$schema->disableLogging();
$this->databaseVersion = NULL;
parent::tearDown();
$this->quickCleanup(['civicrm_contact'], TRUE);
$schema->dropAllLogTables();
Expand Down Expand Up @@ -235,13 +239,17 @@ public function testColumnInfo() {
$this->assertEquals('int', $ci['test_id']['DATA_TYPE']);
$this->assertEquals('NO', $ci['test_id']['IS_NULLABLE']);
$this->assertEquals('auto_increment', $ci['test_id']['EXTRA']);
$this->assertEquals('10', $ci['test_id']['LENGTH']);
if (!$this->isMySQL8()) {
$this->assertEquals('10', $ci['test_id']['LENGTH']);
}

$this->assertEquals('varchar', $ci['test_varchar']['DATA_TYPE']);
$this->assertEquals('42', $ci['test_varchar']['LENGTH']);

$this->assertEquals('int', $ci['test_integer']['DATA_TYPE']);
$this->assertEquals('8', $ci['test_integer']['LENGTH']);
if (!$this->isMySQL8()) {
$this->assertEquals('8', $ci['test_integer']['LENGTH']);
}
$this->assertEquals('YES', $ci['test_integer']['IS_NULLABLE']);

$this->assertEquals('decimal', $ci['test_decimal']['DATA_TYPE']);
Expand Down Expand Up @@ -282,7 +290,9 @@ public function testLengthChange() {
$schema->fixSchemaDifferences();
$ci = \Civi::$statics['CRM_Logging_Schema']['columnSpecs'];
// length should increase
$this->assertEquals(6, $ci['log_civicrm_test_length_change']['test_integer']['LENGTH']);
if (!$this->isMySQL8()) {
$this->assertEquals(6, $ci['log_civicrm_test_length_change']['test_integer']['LENGTH']);
}
$this->assertEquals('22,2', $ci['log_civicrm_test_length_change']['test_decimal']['LENGTH']);
CRM_Core_DAO::executeQuery(
"ALTER TABLE civicrm_test_length_change
Expand All @@ -292,7 +302,9 @@ public function testLengthChange() {
$schema->fixSchemaDifferences();
$ci = \Civi::$statics['CRM_Logging_Schema']['columnSpecs'];
// length should not decrease
$this->assertEquals(6, $ci['log_civicrm_test_length_change']['test_integer']['LENGTH']);
if (!$this->isMySQL8()) {
$this->assertEquals(6, $ci['log_civicrm_test_length_change']['test_integer']['LENGTH']);
}
$this->assertEquals('22,2', $ci['log_civicrm_test_length_change']['test_decimal']['LENGTH']);
}

Expand All @@ -312,4 +324,13 @@ public function testEnumChange() {
$this->assertEquals("'A','B','C','D'", $ci['civicrm_test_enum_change']['test_enum']['ENUM_VALUES']);
}

/**
* Determine if we are running on MySQL 8 version 8.0.19 or later.
*
* @return bool
*/
protected function isMySQL8() {
return (bool) (version_compare($this->databaseVersion, '8.0.19', '>=') && stripos($this->databaseVersion, 'mariadb') === FALSE);
}

}

0 comments on commit 0feda4a

Please sign in to comment.