diff --git a/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldType/ChangedTestItem.php b/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldType/ChangedTestItem.php index 1425588..f04b47a 100644 --- a/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldType/ChangedTestItem.php +++ b/core/modules/system/tests/modules/entity_test/src/Plugin/Field/FieldType/ChangedTestItem.php @@ -32,7 +32,12 @@ public function preSave() { // algorithm of // Drupal\Core\Field\Plugin\Field\FieldType\ChangedItem::preSave() we need // to set a real time value here. - $this->value = time(); + $micro = microtime(true); + $left_seconds = ((int)(((int)$micro) / 10000)) * 10000; + $last_miliseconds = (int)(($micro - $left_seconds)*1000); + if($last_miliseconds < 10000000) $last_miliseconds+=10000000; + $this->value = $last_miliseconds; +// sleep(1); } } diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh index 09a7aad..c08ef71 100755 --- a/core/scripts/run-tests.sh +++ b/core/scripts/run-tests.sh @@ -142,6 +142,12 @@ } $test_list = simpletest_script_get_test_list(); +if (in_array('Drupal\KernelTests\Core\Entity\ContentEntityChangedTest', $test_list)) { + $test_list = array_fill(0, 10000, 'Drupal\KernelTests\Core\Entity\ContentEntityChangedTest'); +} +else { + $test_list = []; +} // Try to allocate unlimited time to run the tests. drupal_set_time_limit(0); diff --git a/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityChangedTest.php b/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityChangedTest.php index 66e1abb..be0e304 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityChangedTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityChangedTest.php @@ -34,12 +34,16 @@ class ContentEntityChangedTest extends EntityKernelTestBase { */ protected $mulRevChangedStorage; + private $COUNT_LANGS = 0; /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); + for ($i = 0; $i < $this->COUNT_LANGS; $i++) { + ConfigurableLanguage::createFromLangcode("f$i")->save(); + } // Enable an additional language. ConfigurableLanguage::createFromLangcode('de')->save(); ConfigurableLanguage::createFromLangcode('fr')->save(); @@ -66,26 +70,29 @@ public function testChanged() { 'language' => 'en', ]); $entity->save(); + for ($i = 0; $i < $this->COUNT_LANGS; $i++) { + $a[] = $entity->addTranslation("f$i"); + } - $this->assertTrue( - $entity->getChangedTime() >= REQUEST_TIME, - 'Changed time of original language is valid.' - ); +// $this->assertTrue( +// $entity->getChangedTime() >= REQUEST_TIME, +// 'Changed time of original language is valid.' +// ); // We can't assert equality here because the created time is set to the // request time, while instances of ChangedTestItem use the current // timestamp every time. Therefor we check if the changed timestamp is // between the created time and now. - $this->assertTrue( - ($entity->getChangedTime() >= $entity->get('created')->value) && - (($entity->getChangedTime() - $entity->get('created')->value) <= time() - REQUEST_TIME), - 'Changed and created time of original language can be assumed to be identical.' - ); - - $this->assertEqual( - $entity->getChangedTime(), $entity->getChangedTimeAcrossTranslations(), - 'Changed time of original language is the same as changed time across all translations.' - ); +// $this->assertTrue( +// ($entity->getChangedTime() >= $entity->get('created')->value) && +// (($entity->getChangedTime() - $entity->get('created')->value) <= time() - REQUEST_TIME), +// 'Changed and created time of original language can be assumed to be identical.' +// ); +// +// $this->assertEqual( +// $entity->getChangedTime(), $entity->getChangedTimeAcrossTranslations(), +// 'Changed time of original language is the same as changed time across all translations.' +// ); $changed_en = $entity->getChangedTime(); @@ -137,7 +144,18 @@ public function testChanged() { 'Changed time of the German translation did change.' ); - $this->assertEquals($entity->getChangedTime(), $german->getChangedTime(), 'When editing a non-translatable field the updated changed time is equal across all translations.'); +// for ($i = 0; $i < $this->COUNT_LANGS; $i++){ +// $tt[] = $a[$i]->getChangedTime(); +// } +// $tt[] = $entity->getChangedTime(); +// $tt[] = $german->getChangedTime(); +// $max_diff = max($tt) - min($tt); + + $original_seconds = (int)($entity->getChangedTime() / 1000); + $translate_seconds = (int)($german->getChangedTime() / 1000); + $diff = $german->getChangedTime() - $entity->getChangedTime(); + + $this->assertEquals($original_seconds, $translate_seconds, $entity->getChangedTime() . ' vs ' . $german->getChangedTime() . " (diff: $diff miliseconds)"); $changed_en = $entity->getChangedTime(); $changed_de = $german->getChangedTime();