push
github
datetime: fixed parse of time with h.hh or m.mm - `datetime.c`, `parse_tz_suffix` and its clients refactored for better error detection & to simplify code: - offset value post-condition check is moved to `parse_tz_suffix`. - this check uses tzoffset valid range instead of int16_t min/max. - offset arg type of `parse_tz_suffix` fixed to valid for TZoffset (int16_t). - Fixed range checking for tzoffset parsed by `dt_parse_iso_zone_lenient`. - The better error detection lead to assertion fails of datetime tests with decimal fraction of hours and minutes. The fix is the first way to solve the problem. (The other way is to comment out the tests.) Fixes #12082 @TarantoolBot document Title: Parse of time with hour and minute decimal fraction implemented Datetime module now supports formats, which are defined in ISO 8601-1:2019 (5.3.1.4, b-c). Implementation details: - As for decimal fraction of the second (5.3.1.4, a), the tail after 9 fraciton digits is truncated. `0.123456789999` is the same as `0.123456789`. - The hour (format c) or minute (format b) fractions are truncated to seconds precision. If somebody want a second fraction, they must use explicit representation (format a). ``` datetime.parse('2024-07-31T17,5', {format = 'iso8601'}) --- - 2024-07-31T17:30:00Z datetime.parse('2024-07-31T17:30.333333333', {format = 'iso8601'}) --- - 2024-07-31T17:30:19Z ``` (cherry picked from commit 5b51d7c76)
63689 of 115154 branches covered (55.31%)
16 of 0 new or added lines in 0 files covered. (NaN%)
10 existing lines in 7 files now uncovered.94679 of 109944 relevant lines covered (86.12%)
1890687.45 hits per line
The commit SHA "85a10e850f659fce6f1aa185029faf112bac5017 " was not found in your repository, so the file cannot be loaded. This may be because you posted from a local development environment, or your CI created an ephemeral commit.