Skip to content
Snippets Groups Projects
Commit dae3aeb0 authored by Stefan Bürk's avatar Stefan Bürk Committed by Christian Kuhn
Browse files

[BUGFIX] Tighten CleanerTaskTest setup for changed PHP 8.1 behaviour

CleanerTaskTest dynamically calculates the needed 'period' time to use
for testing, if one page records will survive the cleaning task, as
not being outside this periode grace time. This has worked quite some
time, but may crash now in a quite narrow timeframe, which failed core
ci tests, if they were run in this timeframe - and made it reproducible
only for a night owl, as the timeframe lays between UTC '00:00-01:00'.

PHP8.1.0RC6 included a regression bugfix which introduced another bug,
which leads to inconsinstent calculation behaviour for using 'diff()'
method of '\DateTime' or '\DateTimeImmutable', if timezone switches are
needed and there are the first hour leap (or two hour in summer time).
This is already fixed in PHP8.1.0 release.

As we do not really need that 1 hour leap calculation here, we are able
to tighten the test setup here and calculate the needed dynamic period
in way to work around this bug for PHP8.1.0RC6, be backw...
parent ebbde86c
Branches
Tags
No related merge requests found
......@@ -48,11 +48,12 @@ class CleanerTaskTest extends FunctionalTestCase
$this->importCSVDataSet(__DIR__ . '/DataSet/Fixtures/pages.csv');
$subject = new CleanerTask();
$subject->setTcaTables(['pages']);
$utcTimeZone = new \DateTimeZone('UTC');
// this is when the test was created. One of the fixtures (uid 4) has this date
$creationDate = date_create_immutable_from_format('d.m.Y', '28.09.2020')->setTime(0, 0, 0);
$creationDate = date_create_immutable_from_format('Y-m-d H:i:s', '2020-09-28 00:00:00', $utcTimeZone);
// we want to set the period in a way that older records get deleted, but not the one created today
$difference = $creationDate->diff(new \DateTime(), true);
$difference = $creationDate->diff(new \DateTime('today', $utcTimeZone), true);
// let's set the amount of days one higher than the reference date
$period = (int)$difference->format('%a') + 1;
$subject->setPeriod($period);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment