Jellyfin(8096), OrbStack(8097) 포트 충돌으로 변경. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
87 lines
2.4 KiB
Python
87 lines
2.4 KiB
Python
"""This tests the compatibility with RFC 7529.
|
|
|
|
See
|
|
- https://github.com/collective/icalendar/issues/655
|
|
- https://www.rfc-editor.org/rfc/rfc7529.html
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from icalendar.prop import vMonth, vRecur, vSkip
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("uid", "scale"),
|
|
[
|
|
("4.3.1", "CHINESE"),
|
|
("4.3.2", "ETHIOPIC"),
|
|
("4.3.3", "HEBREW"),
|
|
("4.3.4", "GREGORIAN"),
|
|
],
|
|
)
|
|
def test_rscale(calendars, uid, scale):
|
|
"""Check that the RSCALE is parsed correctly."""
|
|
event = calendars.rfc_7529.walk(select=lambda c: c.get("UID") == uid)[0]
|
|
print(event.errors)
|
|
rrule = event["RRULE"]
|
|
print(rrule)
|
|
assert rrule["RSCALE"] == [scale]
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("uid", "skip"),
|
|
[
|
|
("4.3.2", None),
|
|
("4.3.3", ["FORWARD"]),
|
|
],
|
|
)
|
|
def test_rscale_with_skip(calendars, uid, skip):
|
|
"""Check that the RSCALE is parsed correctly."""
|
|
event = calendars.rfc_7529.walk(select=lambda c: c.get("UID") == uid)[0]
|
|
recur = event["RRULE"]
|
|
assert recur.get("SKIP") == skip
|
|
|
|
|
|
def test_leap_month(calendars):
|
|
"""Check that we can parse the leap month."""
|
|
event = calendars.rfc_7529.walk(select=lambda c: c.get("UID") == "4.3.3")[0]
|
|
recur = event["RRULE"]
|
|
assert recur["BYMONTH"][0].leap is True
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("ty", "recur", "ics"),
|
|
[
|
|
(
|
|
vRecur,
|
|
vRecur(rscale="CHINESE", freq="YEARLY"),
|
|
b"RSCALE=CHINESE;FREQ=YEARLY",
|
|
),
|
|
(vRecur, vRecur(bymonth=vMonth(10)), b"BYMONTH=10"),
|
|
(vRecur, vRecur(bymonth=vMonth("5L")), b"BYMONTH=5L"),
|
|
(vMonth, vMonth(10), b"10"),
|
|
(vMonth, vMonth("5L"), b"5L"),
|
|
(vSkip, vSkip.OMIT, b"OMIT"),
|
|
(vSkip, vSkip.BACKWARD, b"BACKWARD"),
|
|
(vSkip, vSkip.FORWARD, b"FORWARD"),
|
|
(vSkip, vSkip("OMIT"), b"OMIT"),
|
|
(vSkip, vSkip("BACKWARD"), b"BACKWARD"),
|
|
(vSkip, vSkip("FORWARD"), b"FORWARD"),
|
|
(
|
|
vRecur,
|
|
vRecur(rscale="GREGORIAN", freq="YEARLY", skip="FORWARD"),
|
|
b"RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD",
|
|
),
|
|
(
|
|
vRecur,
|
|
vRecur(rscale="GREGORIAN", freq="YEARLY", skip=vSkip.FORWARD),
|
|
b"RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD",
|
|
),
|
|
],
|
|
)
|
|
def test_conversion(ty, recur, ics):
|
|
"""Test string conversion."""
|
|
assert recur.to_ical() == ics
|
|
assert ty.from_ical(ics.decode()) == recur
|
|
assert ty.from_ical(ics.decode()).to_ical() == ics
|