Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test failures with icalendar v6 #570

Closed
dotlambda opened this issue Oct 2, 2024 · 2 comments · Fixed by #576
Closed

Test failures with icalendar v6 #570

dotlambda opened this issue Oct 2, 2024 · 2 comments · Fixed by #576
Labels

Comments

@dotlambda
Copy link

icalendar v6 has been released: https://github.com/collective/icalendar/blob/v6.0.0/CHANGES.rst
Now the tests fail with

============================= test session starts ==============================
platform linux -- Python 3.12.5, pytest-8.3.2, pluggy-1.5.0
rootdir: /build/source
configfile: setup.cfg
plugins: cov-nixpkgs-stub-1.0.0, datadir-1.5.0, pytest_httpserver-1.0.10, mock-3.14.0
collected 351 items / 19 deselected / 332 selected                             

tests/test_autosuspend.py .......................................        [ 11%]
tests/test_checks.py ...                                                 [ 12%]
tests/test_checks_activity.py .................                          [ 17%]
tests/test_checks_command.py ..............                              [ 21%]
tests/test_checks_ical.py .FF....FFFF..................                  [ 30%]
tests/test_checks_json.py .........                                      [ 33%]
tests/test_checks_kodi.py ........................                       [ 40%]
tests/test_checks_linux.py ............................................. [ 54%]
.............                                                            [ 58%]
tests/test_checks_logs.py .................                              [ 63%]
tests/test_checks_mpd.py .........                                       [ 65%]
tests/test_checks_smb.py ......                                          [ 67%]
tests/test_checks_stub.py .......                                        [ 69%]
tests/test_checks_systemd.py s........ssss....s                          [ 75%]
tests/test_checks_util.py .............                                  [ 79%]
tests/test_checks_wakeup.py .......                                      [ 81%]
tests/test_checks_xorg.py ........................                       [ 88%]
tests/test_checks_xpath.py ......................                        [ 95%]
tests/test_integration.py ............                                   [ 98%]
tests/test_util.py ..                                                    [ 99%]
tests/test_util_systemd.py ss                                            [100%]

=================================== FAILURES ===================================
_________________ TestListCalendarEvents.test_simple_recurring _________________

self = <tests.test_checks_ical.TestListCalendarEvents object at 0x7ffff54972f0>
datadir = PosixPath('/build/pytest-of-nixbld/pytest-0/test_simple_recurring0/test_checks_ical')

    def test_simple_recurring(self, datadir: Path) -> None:
        """Tests for basic recurrence.
    
        Events are collected with the same DST setting as their original
        creation.
        """
        with (datadir / "simple-recurring.ics").open("rb") as f:
            start = parser.parse("2018-06-18 04:00:00 UTC")
            end = start + timedelta(weeks=2)
            events = list_calendar_events(f, start, end)
    
            expected_start_times = [
                parser.parse("2018-06-18 07:00:00 UTC"),
                parser.parse("2018-06-19 07:00:00 UTC"),
                parser.parse("2018-06-20 07:00:00 UTC"),
                parser.parse("2018-06-21 07:00:00 UTC"),
                parser.parse("2018-06-22 07:00:00 UTC"),
                parser.parse("2018-06-25 07:00:00 UTC"),
                parser.parse("2018-06-26 07:00:00 UTC"),
                parser.parse("2018-06-27 07:00:00 UTC"),
                parser.parse("2018-06-28 07:00:00 UTC"),
                parser.parse("2018-06-29 07:00:00 UTC"),
            ]
    
            expected_end_times = [
                parser.parse("2018-06-18 16:00:00 UTC"),
                parser.parse("2018-06-19 16:00:00 UTC"),
                parser.parse("2018-06-20 16:00:00 UTC"),
                parser.parse("2018-06-21 16:00:00 UTC"),
                parser.parse("2018-06-22 16:00:00 UTC"),
                parser.parse("2018-06-25 16:00:00 UTC"),
                parser.parse("2018-06-26 16:00:00 UTC"),
                parser.parse("2018-06-27 16:00:00 UTC"),
                parser.parse("2018-06-28 16:00:00 UTC"),
                parser.parse("2018-06-29 16:00:00 UTC"),
            ]
    
>           assert expected_start_times == [e.start for e in events]
E           AssertionError: assert [datetime.dat...local()), ...] == [datetime.dat...erlin')), ...]
E             
E             At index 0 diff: datetime.datetime(2018, 6, 18, 7, 0, tzinfo=tzlocal()) != datetime.datetime(2018, 6, 18, 11, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
E             Use -v to get more diff

tests/test_checks_ical.py:68: AssertionError
_____________ TestListCalendarEvents.test_recurrence_different_dst _____________

self = <tests.test_checks_ical.TestListCalendarEvents object at 0x7ffff5497560>
datadir = PosixPath('/build/pytest-of-nixbld/pytest-0/test_recurrence_different_dst0/test_checks_ical')

    def test_recurrence_different_dst(self, datadir: Path) -> None:
        with (datadir / "simple-recurring.ics").open("rb") as f:
            start = parser.parse("2018-11-19 04:00:00 UTC")
            end = start + timedelta(weeks=2)
            events = list_calendar_events(f, start, end)
    
            expected_start_times = [
                parser.parse("2018-11-19 08:00:00 UTC"),
                parser.parse("2018-11-20 08:00:00 UTC"),
                parser.parse("2018-11-21 08:00:00 UTC"),
                parser.parse("2018-11-22 08:00:00 UTC"),
                parser.parse("2018-11-23 08:00:00 UTC"),
                parser.parse("2018-11-26 08:00:00 UTC"),
                parser.parse("2018-11-27 08:00:00 UTC"),
                parser.parse("2018-11-28 08:00:00 UTC"),
                parser.parse("2018-11-29 08:00:00 UTC"),
                parser.parse("2018-11-30 08:00:00 UTC"),
            ]
    
>           assert expected_start_times == [e.start for e in events]
E           AssertionError: assert [datetime.dat...local()), ...] == [datetime.dat...erlin')), ...]
E             
E             At index 0 diff: datetime.datetime(2018, 11, 19, 8, 0, tzinfo=tzlocal()) != datetime.datetime(2018, 11, 19, 10, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
E             Use -v to get more diff

tests/test_checks_ical.py:90: AssertionError
____________________ TestListCalendarEvents.test_exclusions ____________________

self = <tests.test_checks_ical.TestListCalendarEvents object at 0x7ffff555c2c0>
datadir = PosixPath('/build/pytest-of-nixbld/pytest-0/test_exclusions0/test_checks_ical')

    def test_exclusions(self, datadir: Path) -> None:
        with (datadir / "exclusions.ics").open("rb") as f:
            start = parser.parse("2018-06-09 04:00:00 UTC")
            end = start + timedelta(weeks=2)
            events = list_calendar_events(f, start, end)
    
            expected_start_times = [
                parser.parse("2018-06-11 12:00:00 UTC"),
                parser.parse("2018-06-12 12:00:00 UTC"),
                parser.parse("2018-06-13 12:00:00 UTC"),
                parser.parse("2018-06-15 12:00:00 UTC"),
                parser.parse("2018-06-16 12:00:00 UTC"),
                parser.parse("2018-06-17 12:00:00 UTC"),
            ]
    
>           assert expected_start_times == [e.start for e in events]
E           AssertionError: assert [datetime.dat...fo=tzlocal())] == [datetime.dat...ope/Berlin'))]
E             
E             At index 0 diff: datetime.datetime(2018, 6, 11, 12, 0, tzinfo=tzlocal()) != datetime.datetime(2018, 6, 11, 16, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
E             Use -v to get more diff

tests/test_checks_ical.py:244: AssertionError
_____________ TestListCalendarEvents.test_reucrring_single_changes _____________

self = <tests.test_checks_ical.TestListCalendarEvents object at 0x7ffff555c530>
datadir = PosixPath('/build/pytest-of-nixbld/pytest-0/test_reucrring_single_changes0/test_checks_ical')

    def test_reucrring_single_changes(self, datadir: Path) -> None:
        with (datadir / "single-change.ics").open("rb") as f:
            start = parser.parse("2018-06-11 00:00:00 UTC")
            end = start + timedelta(weeks=1)
            events = list_calendar_events(f, start, end)
    
            expected_start_times = [
                parser.parse("2018-06-11 11:00:00 UTC"),
                parser.parse("2018-06-12 11:00:00 UTC"),
                parser.parse("2018-06-13 14:00:00 UTC"),
                parser.parse("2018-06-14 11:00:00 UTC"),
                parser.parse("2018-06-15 09:00:00 UTC"),
                parser.parse("2018-06-16 11:00:00 UTC"),
                parser.parse("2018-06-17 11:00:00 UTC"),
            ]
    
>           assert expected_start_times == [e.start for e in events]
E           AssertionError: assert [datetime.dat...local()), ...] == [datetime.dat...erlin')), ...]
E             
E             At index 0 diff: datetime.datetime(2018, 6, 11, 11, 0, tzinfo=tzlocal()) != datetime.datetime(2018, 6, 11, 15, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
E             Use -v to get more diff

tests/test_checks_ical.py:262: AssertionError
_______________ TestListCalendarEvents.test_reucrring_change_dst _______________

self = <tests.test_checks_ical.TestListCalendarEvents object at 0x7ffff555c7a0>
datadir = PosixPath('/build/pytest-of-nixbld/pytest-0/test_reucrring_change_dst0/test_checks_ical')

    def test_reucrring_change_dst(self, datadir: Path) -> None:
        with (datadir / "recurring-change-dst.ics").open("rb") as f:
            start = parser.parse("2018-12-10 00:00:00 UTC")
            end = start + timedelta(weeks=1)
            events = list_calendar_events(f, start, end)
    
            expected_start_times = [
                parser.parse("2018-12-10 13:00:00 UTC"),
                parser.parse("2018-12-11 13:00:00 UTC"),
                parser.parse("2018-12-12 10:00:00 UTC"),
                parser.parse("2018-12-13 13:00:00 UTC"),
                parser.parse("2018-12-15 13:00:00 UTC"),
                parser.parse("2018-12-16 13:00:00 UTC"),
            ]
    
>           assert expected_start_times == [e.start for e in events]
E           AssertionError: assert [datetime.dat...fo=tzlocal())] == [datetime.dat...ope/Berlin'))]
E             
E             At index 0 diff: datetime.datetime(2018, 12, 10, 13, 0, tzinfo=tzlocal()) != datetime.datetime(2018, 12, 10, 15, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
E             Use -v to get more diff

tests/test_checks_ical.py:279: AssertionError
________ TestListCalendarEvents.test_recurring_start_and_end_inclusive _________

self = <tests.test_checks_ical.TestListCalendarEvents object at 0x7ffff555ca10>
datadir = PosixPath('/build/pytest-of-nixbld/pytest-0/test_recurring_start_and_end_i0/test_checks_ical')

    def test_recurring_start_and_end_inclusive(self, datadir: Path) -> None:
        with (datadir / "issue-41.ics").open("rb") as f:
            start = parser.parse("2018-06-26 15:13:51 UTC")
            end = start + timedelta(weeks=1)
            events = list_calendar_events(f, start, end)
    
            expected_start_times = [
                parser.parse("2018-06-26 15:00:00 UTC"),
                parser.parse("2018-06-27 15:00:00 UTC"),
                parser.parse("2018-06-28 15:00:00 UTC"),
                parser.parse("2018-06-29 15:00:00 UTC"),
                parser.parse("2018-06-30 15:00:00 UTC"),
                parser.parse("2018-07-01 15:00:00 UTC"),
                parser.parse("2018-07-02 15:00:00 UTC"),
                parser.parse("2018-07-03 15:00:00 UTC"),
            ]
    
>           assert expected_start_times == [e.start for e in events]
E           AssertionError: assert [datetime.dat...local()), ...] == [datetime.dat...erlin')), ...]
E             
E             At index 0 diff: datetime.datetime(2018, 6, 26, 15, 0, tzinfo=tzlocal()) != datetime.datetime(2018, 6, 26, 19, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
E             Use -v to get more diff

tests/test_checks_ical.py:298: AssertionError
=========================== short test summary info ============================
FAILED tests/test_checks_ical.py::TestListCalendarEvents::test_simple_recurring - AssertionError: assert [datetime.dat...local()), ...] == [datetime.dat...er...
FAILED tests/test_checks_ical.py::TestListCalendarEvents::test_recurrence_different_dst - AssertionError: assert [datetime.dat...local()), ...] == [datetime.dat...er...
FAILED tests/test_checks_ical.py::TestListCalendarEvents::test_exclusions - AssertionError: assert [datetime.dat...fo=tzlocal())] == [datetime.dat...op...
FAILED tests/test_checks_ical.py::TestListCalendarEvents::test_reucrring_single_changes - AssertionError: assert [datetime.dat...local()), ...] == [datetime.dat...er...
FAILED tests/test_checks_ical.py::TestListCalendarEvents::test_reucrring_change_dst - AssertionError: assert [datetime.dat...fo=tzlocal())] == [datetime.dat...op...
FAILED tests/test_checks_ical.py::TestListCalendarEvents::test_recurring_start_and_end_inclusive - AssertionError: assert [datetime.dat...local()), ...] == [datetime.dat...er...
=========== 6 failed, 318 passed, 8 skipped, 19 deselected in 25.15s ===========
@languitar
Copy link
Owner

Yikes, scheduled builds also brought this up now. I have to check if I find an easy solution for this. The whole timezone handling with different versions of upstream libraries is a pretty mess due to upstream bugs being worked around for different version of the dependencies and due to some data type changes between upstream versions.

@renovate-releases
Copy link

🎉 This issue has been resolved in version 7.0.2 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants