diff --git a/test/bootstrap-dist.php b/test/bootstrap-dist.php index 95410d4495..98d2924253 100644 --- a/test/bootstrap-dist.php +++ b/test/bootstrap-dist.php @@ -41,11 +41,11 @@ $GLOBALS['runkit_internal_override'] = ini_get('runkit.internal_override'); /** * Function to emulate headers() function by storing headers in GLOBAL array - * + * * @param string $string header string * @param boolean $replace . * @param integer $http_response_code . - * + * * @return void */ function test_header($string, $replace = true, $http_response_code = 200) @@ -59,7 +59,7 @@ function test_header($string, $replace = true, $http_response_code = 200) /** * Function to emulate headers_hest. - * + * * @return boolean false */ function test_headers_sent() @@ -67,6 +67,18 @@ function test_headers_sent() return false; } +/** + * Function to emulate date() function + * + * @param string $date_format arg + * + * @return string dummy date + */ +function test_date($date_format) +{ + return '0000-00-00 00:00:00'; +} + if (PMA_HAS_RUNKIT && $GLOBALS['runkit_internal_override']) { echo "Enabling headers testing...\n"; runkit_function_rename('header', 'test_header_override'); @@ -106,4 +118,33 @@ function PMA_getTagArray($elementHTML, $arr = array()) return $arr; } + +/** + * Overrides date function + * + * @return boolean whether function was overridden or not + */ +function setupForTestsUsingDate() +{ + if (PMA_HAS_RUNKIT && $GLOBALS['runkit_internal_override']) { + runkit_function_rename('date', 'test_date_override'); + runkit_function_rename('test_date', 'date'); + return true; + } else { + return false; + } +} + +/** + * Restores date function + * + * @return void + */ +function tearDownForTestsUsingDate() +{ + if (PMA_HAS_RUNKIT && $GLOBALS['runkit_internal_override']) { + runkit_function_rename('date', 'test_date'); + runkit_function_rename('test_date_override', 'date'); + } +} ?> diff --git a/test/libraries/PMA_Tracker_test.php b/test/libraries/PMA_Tracker_test.php index 1afc371cf2..54d9d0c3d8 100644 --- a/test/libraries/PMA_Tracker_test.php +++ b/test/libraries/PMA_Tracker_test.php @@ -269,6 +269,10 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase */ public function testGetLogComment() { + if (!setupForTestsUsingDate()) { + $this->markTestSkipped("Cannot override internal function date()"); + } + $date = date('Y-m-d H:i:s'); $GLOBALS['cfg']['Server']['user'] = "pma_test_user"; @@ -276,6 +280,8 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase "# log $date pma_test_user\n", PMA_Tracker::getLogComment() ); + + tearDownForTestsUsingDate(); } /** @@ -286,6 +292,10 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase */ public function testCreateVersion() { + if (!setupForTestsUsingDate()) { + $this->markTestSkipped("Cannot override internal function date()"); + } + $GLOBALS['cfg']['Server']['tracking_add_drop_table'] = true; $GLOBALS['cfg']['Server']['tracking_add_drop_view'] = true; $GLOBALS['cfg']['Server']['user'] = "pma_test_user"; @@ -406,6 +416,8 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase 'executed', PMA_Tracker::createVersion('pma_test', 'pma_tbl', '1', '11', true) ); + + tearDownForTestsUsingDate(); } /** @@ -449,6 +461,10 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase */ public function testCreateDatabaseVersion() { + if (!setupForTestsUsingDate()) { + $this->markTestSkipped("Cannot override internal function date()"); + } + $GLOBALS['cfg']['Server']['tracking_add_drop_table'] = true; $GLOBALS['cfg']['Server']['tracking_add_drop_view'] = true; $GLOBALS['cfg']['Server']['user'] = "pma_test_user"; @@ -491,6 +507,8 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase 'executed', PMA_Tracker::createDatabaseVersion('pma_test', '1', 'SHOW DATABASES') ); + + tearDownForTestsUsingDate(); } /** @@ -564,6 +582,10 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase */ public function testChangeTrackingData() { + if (!setupForTestsUsingDate()) { + $this->markTestSkipped("Cannot override internal function date()"); + } + $reflection = new \ReflectionProperty('PMA_Tracker', 'pma_table'); $reflection->setAccessible(true); $reflection->setValue(null, 'pma_table_tracking'); @@ -597,10 +619,6 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase ) ); - /* FIXME: This breaks sometimes - * (when the query is executed in different second than - * date is read). - */ $sql_query_2 = " UPDATE pma_table_tracking" . " SET `data_sql` = '# log $date user1test_statement1\n" . "# log $date user2test_statement2\n' " . @@ -641,6 +659,8 @@ class PMA_Tracker_Test extends PHPUnit_Framework_TestCase $new_data ) ); + + tearDownForTestsUsingDate(); } /**