[Koha-bugs] [Bug 29403] dt_from_string should fail if passed more data than expected for the format

bugzilla-daemon at bugs.koha-community.org bugzilla-daemon at bugs.koha-community.org
Mon Jan 17 09:03:30 CET 2022


https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=29403

--- Comment #62 from Marcel de Rooy <m.de.rooy at rijksmuseum.nl> ---
(In reply to Jonathan Druart from comment #58)
> (In reply to Marcel de Rooy from comment #48)
> > -        t::lib::Dates::compare( $updated_on_got, $updated_on_expected,
> > 'updated_on values matched' );
> > +        t::lib::Dates::compare(
> > +            dt_from_string( $updated_on_got,      'rfc3339' ),
> > +            dt_from_string( $updated_on_expected, 'rfc3339' ),
> > +            'updated_on values matched'
> > +        );
> > 
> > But what does t::lib::Dates?
> > 
> > sub compare {
> >     my ( $got, $expected ) = @_;
> >     my $dt_got      = dt_from_string($got);
> >     my $dt_expected = dt_from_string($expected);
> >     my $diff = $dt_got->epoch - $dt_expected->epoch;
> >     if ( abs($diff) <= 5 ) { return 0 }
> >     return $diff > 0 ? 1 : -1;
> > }
> > 
> > So $got en $expected should be strings, right?
> > Does this actually show that we miss a parameter in sub compare, and we are
> > solving it by twisting the test instead?
> 
> Will fix on bug 29884.

That seems to be a good fix, but does not fully address my comment. This
compare sub runs dt_from_string on its input. So normally I would expect it to
have string parameters. The patrons.t test here is doing a dt conversion
already with rfc3339. (Compare calls it again.) It would be more consistent if
we would pass strings to compare and possibly a type like RFC3339, ISO8601,
etc.
I am seeing a hardcoded <=5, could be a parameter too or at least a constant?
So yes, we are leaving scope here. But compare needs attention, and this patch
set triggers it.

-- 
You are receiving this mail because:
You are watching all bug changes.


More information about the Koha-bugs mailing list