My test log: platform openbsd7 -- Python 3.10.13, pytest-7.1.3, pluggy-1.3.0 rootdir: /home/wen/ports/obj/khal-0.11.2/khal-0.11.2 plugins: cov-4.0.0, hypothesis-6.47.1 collected 315 items
tests/backend_test.py .............................. [ 9%] tests/cal_display_test.py .....FFFF [ 12%] tests/cli_test.py ..........xX.X..................FF....... [ 25%] tests/configwizard_test.py .. [ 26%] tests/controller_test.py ............ [ 29%] tests/event_test.py ..F...............F..F.........F.................F.. [ 46%] ..F. [ 47%] tests/icalendar_test.py .FFF... [ 49%] tests/khalendar_test.py ..........F............F...... [ 59%] tests/khalendar_utils_test.py ......................................... [ 72%] tests/parse_datetime_test.py .......................................FFFF [ 86%] FFFFF [ 87%] tests/settings_test.py ............ [ 91%] tests/terminal_test.py ... [ 92%] tests/utils_test.py ........ [ 94%] tests/vdir_test.py ... [ 95%] tests/vtimezone_test.py FFF [ 96%] tests/ui/test_calendarwidget.py ..... [ 98%] tests/ui/test_editor.py .... [ 99%] tests/ui/test_widgets.py . [100%] =================================== FAILURES =================================== _________________________ test_vertical_month_unicode __________________________ def test_vertical_month_unicode(): try: locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8') vert_str = vertical_month(month=12, year=2011, today=dt.date(2011, 12, 12)) # de_DE locale on at least Net and FreeBSD is different from the one # commonly used on linux systems if platform.system() == 'FreeBSD': assert vert_str == example_de_freebsd elif platform.system() == 'NetBSD': assert vert_str == example_de_netbsd else: > assert vert_str == example_de E AssertionError: assert ['\x1b[1m ... 31 1 ', ...] == ['\x1b[1m ... 31 1 ', ...] E At index 0 diff: '\x1b[1m Mo Tu We Th Fr Sa Su \x1b[0m' != '\x1b[1m Mo Di Mi Do Fr Sa So \x1b[0m' E Use -v to get more diff tests/cal_display_test.py:357: AssertionError ____________________ test_vertical_month_unicode_weekdeays _____________________ def test_vertical_month_unicode_weekdeays(): try: locale.setlocale(locale.LC_ALL, 'cs_CZ.UTF-8') vert_str = vertical_month(month=12, year=2011, today=dt.date(2011, 12, 12)) > assert [line.lower() for line in vert_str] == [line.lower() for > line in example_cz] E AssertionError: assert ['\x1b[1m ... 31 1 ', ...] == ['\x1b[1m ... 31 1 ', ...] E At index 0 diff: '\x1b[1m mo tu we th fr sa su \x1b[0m' != '\x1b[1m po út st čt pá so ne \x1b[0m' E Use -v to get more diff tests/cal_display_test.py:379: AssertionError ___________________ test_vertical_month_unicode_weekdeays_gr ___________________ def test_vertical_month_unicode_weekdeays_gr(): try: locale.setlocale(locale.LC_ALL, 'el_GR.UTF-8') vert_str = vertical_month(month=12, year=2011, today=dt.date(2011, 12, 12)) # on some OSes, Greek locale's abbreviated day of the week and # month names have accents, on some they haven't if platform.system() == 'Darwin': assert strip_accents('\n'.join([line.lower() for line in vert_str])) == \ '\n'.join(example_gr_darwin) else: > assert strip_accents('\n'.join([line.lower() for line in > vert_str])) == \ '\n'.join(example_gr) E AssertionError: assert '\x1b[1m m... 1 2 3 4 ' == '\x1b[1m ... 1 2 3 4 ' E - δε τρ τε πε πα σα κυ E + mo tu we th fr sa su E - δεκ 28 29 30 1 2 3 4 E ? ^^^^ E + dec 28 29 30 1 2 3 4 E ? ^^^ E - 5 6 7 8 9 10 11 ... E E ...Full output truncated (42 lines hidden), use '-vv' to show tests/cal_display_test.py:412: AssertionError _________________________ test_vertical_month_abbr_fr __________________________ def test_vertical_month_abbr_fr(): # see issue #653 try: locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8') vert_str = vertical_month(month=12, year=2011, today=dt.date(2011, 12, 12)) if platform.system() == 'Darwin': assert '\n'.join(vert_str) == '\n'.join(example_fr_darwin) else: > assert '\n'.join(vert_str) == '\n'.join(example_fr) E AssertionError: assert '\x1b[1m M... 1 2 3 4 ' == '\x1b[1m ... 1 2 3 4 ' E - lu ma me je ve sa di E + Mo Tu We Th Fr Sa Su E - déc. 28 29 30 1 2 3 4 E ? ^^ -- E + Dec 28 29 30 1 2 3 4 E ? ^^ E - 5 6 7 8 9 10 11 ... E E ...Full output truncated (42 lines hidden), use '-vv' to show tests/cal_display_test.py:438: AssertionError _______________ test_configure_command_cannot_write_config_file ________________ runner = <tests.cli_test.CustomCliRunner object at 0xa287cf442e0> def test_configure_command_cannot_write_config_file(runner): runner = runner() runner.config_file.remove() os.chmod(str(runner.xdg_config_home), 555) result = runner.invoke(main_khal, ['configure'], input=choices()) > assert result.exit_code == 1 E assert 0 == 1 E + where 0 = <Result okay>.exit_code tests/cli_test.py:786: AssertionError __________________ test_configure_command_cannot_create_vdir ___________________ runner = <tests.cli_test.CustomCliRunner object at 0xa287cf45120> def test_configure_command_cannot_create_vdir(runner): runner = runner() runner.config_file.remove() os.mkdir(str(runner.xdg_data_home), mode=555) result = runner.invoke( main_khal, ['configure'], input=choices(), ) > assert 'Exiting' in result.output E AssertionError: assert 'Exiting' in 'What ordering of year, month, date do you want to use?\n[0] year-month-day (today: 2023-12-06)\n[1] day/month/year (t...Successfully wrote configuration to /tmp/pytest-of-root/pytest-0/test_configure_command_cannot_1/.config/khal/config\n' E + where 'What ordering of year, month, date do you want to use?\n[0] year-month-day (today: 2023-12-06)\n[1] day/month/year (t...Successfully wrote configuration to /tmp/pytest-of-root/pytest-0/test_configure_command_cannot_1/.config/khal/config\n' = <Result okay>.output tests/cli_test.py:799: AssertionError _________________________________ test_raw_dt __________________________________ def test_raw_dt(): event_dt = _get_text('event_dt_simple') start = BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30)) end = BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30)) event = Event.fromString(event_dt, start=start, end=end, **EVENT_KWARGS) with freeze_time('2016-1-1'): > assert normalize_component(event.raw) == \ normalize_component(_get_text('event_dt_simple_inkl_vtimezone')) E AssertionError: assert ('VCALENDAR',...enset())}))})) == ('VCALENDAR',...enset())}))})) E At index 2 diff: frozenset({('VTIMEZONE', b'BEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nEND:VTIMEZONE\r\n', frozenset({('DAYLIGHT', b'BEGIN:DAYLIGHT\r\nDTSTART;VALUE=DATE-TIME:20140330T030000\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nEND:DAYLIGHT\r\n', frozenset()), ('STANDARD', b'BEGIN:STANDARD\r\nDTSTART;VALUE=DATE-TIME:20141026T020000\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nEND:STANDARD\r\n', frozenset())})), ('VEVENT', b'BEGIN:VEVENT\r\nSUMMARY:An Event\r\nDTSTART;TZID=Europe/Berlin:20140409T093000\r\nDTEND;TZID=Europe/Berlin:201404... E E ...Full output truncated (2 lines hidden), use '-vv' to show tests/event_test.py:50: AssertionError _____________________________ test_transform_event _____________________________ def test_transform_event(): """test if transformation between different event types works""" event_d = _get_text('event_d') event = Event.fromString(event_d, **EVENT_KWARGS) assert isinstance(event, AllDayEvent) start = BERLIN.localize(dt.datetime(2014, 4, 9, 9, 30)) end = BERLIN.localize(dt.datetime(2014, 4, 9, 10, 30)) event.update_start_end(start, end) assert isinstance(event, LocalizedEvent) assert event.format(LIST_FORMAT, dt.date(2014, 4, 9)) == '09:30-10:30 An Event\x1b[0m' assert event.format(SEARCH_FORMAT, dt.date(2014, 4, 9)) == \ '09.04.2014 09:30-10:30 An Event\x1b[0m' analog_event = Event.fromString(_get_text('event_dt_simple'), **EVENT_KWARGS) > assert normalize_component(event.raw) == > normalize_component(analog_event.raw) E AssertionError: assert ('VCALENDAR',...enset())}))})) == ('VCALENDAR',...enset())}))})) E At index 2 diff: frozenset({('VTIMEZONE', b'BEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nEND:VTIMEZONE\r\n', frozenset({('DAYLIGHT', b'BEGIN:DAYLIGHT\r\nDTSTART;VALUE=DATE-TIME:20140330T030000\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nEND:DAYLIGHT\r\n', frozenset()), ('STANDARD', b'BEGIN:STANDARD\r\nDTSTART;VALUE=DATE-TIME:20141026T020000\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nEND:STANDARD\r\n', frozenset())})), ('VEVENT', b'BEGIN:VEVENT\r\nSUMMARY:An Event\r\nDTSTART;TZID=Europe/Berlin;VALUE=DATE-TIME:20140409T093000\r\nDTEND;TZID=Euro... E E ...Full output truncated (2 lines hidden), use '-vv' to show tests/event_test.py:184: AssertionError ________________________________ test_dt_two_tz ________________________________ def test_dt_two_tz(): event_dt_two_tz = _get_text('event_dt_two_tz') cal_dt_two_tz = _get_text('cal_dt_two_tz') event = Event.fromString(event_dt_two_tz, **EVENT_KWARGS) with freeze_time('2016-02-16 12:00:00'): > assert normalize_component(cal_dt_two_tz) == > normalize_component(event.raw) E AssertionError: assert ('VCALENDAR',...enset())}))})) == ('VCALENDAR',...enset())}))})) E At index 2 diff: frozenset({('VTIMEZONE', b'BEGIN:VTIMEZONE\r\nTZID:America/New_York\r\nEND:VTIMEZONE\r\n', frozenset({('DAYLIGHT', b'BEGIN:DAYLIGHT\r\nDTSTART:20140309T030000\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nEND:DAYLIGHT\r\n', frozenset()), ('STANDARD', b'BEGIN:STANDARD\r\nDTSTART:20141102T010000\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nEND:STANDARD\r\n', frozenset())})), ('VTIMEZONE', b'BEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nEND:VTIMEZONE\r\n', frozenset({('STANDARD', b'BEGIN:STANDARD\r\nDTSTART:20141026T020000\r\nTZNAME:C... E E ...Full output truncated (2 lines hidden), use '-vv' to show tests/event_test.py:222: AssertionError ______________________________ test_event_no_dst _______________________________ def test_event_no_dst(): """test the creation of a corect VTIMEZONE for timezones with no dst""" event_no_dst = _get_text('event_no_dst') cal_no_dst = _get_text('cal_no_dst') event = Event.fromString(event_no_dst, calendar='foobar', locale=LOCALE_BOGOTA) if version.parse(pytz.__version__) > version.Version('2017.1'): if version.parse(pytz.__version__) < version.Version('2022.7'): cal_no_dst = cal_no_dst.replace( 'TZNAME:COT', 'RDATE:20380118T221407\r\nTZNAME:-05' ) else: cal_no_dst = cal_no_dst.replace( 'TZNAME:COT', 'TZNAME:-05' ) > assert normalize_component(event.raw) == normalize_component(cal_no_dst) E AssertionError: assert ('VCALENDAR',...enset())}))})) == ('VCALENDAR',...enset())}))})) E At index 2 diff: frozenset({('VTIMEZONE', b'BEGIN:VTIMEZONE\r\nTZID:America/Bogota\r\nEND:VTIMEZONE\r\n', frozenset({('STANDARD', b'BEGIN:STANDARD\r\nDTSTART;VALUE=DATE-TIME:19930206T230000\r\nTZNAME:-05\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nEND:STANDARD\r\n', frozenset())})), ('VEVENT', b'BEGIN:VEVENT\r\nSUMMARY:An Event\r\nDTSTART;TZID=America/Bogota:20140409T093000\r\nDTEND;TZID=America/Bogota:20140409T103000\r\nDTSTAMP:20140401T234817Z\r\nUID:event_no_dst\r\nEND:VEVENT\r\n', frozenset())}) != frozenset({('VTIMEZONE', b'BEGIN:VTIMEZONE\r\nTZID:America/Bogota\r... E E ...Full output truncated (2 lines hidden), use '-vv' to show tests/event_test.py:370: AssertionError _________________________ test_create_timezone_static __________________________ def test_create_timezone_static(): gmt = pytz.timezone('Etc/GMT-8') > assert create_timezone(gmt).to_ical().split() == [ b'BEGIN:VTIMEZONE', b'TZID:Etc/GMT-8', b'BEGIN:STANDARD', b'DTSTART:16010101T000000', b'RDATE:16010101T000000', b'TZNAME:Etc/GMT-8', b'TZOFFSETFROM:+0800', b'TZOFFSETTO:+0800', b'END:STANDARD', b'END:VTIMEZONE', ] E AssertionError: assert [b'BEGIN:VTIM...c/GMT-8', ...] == [b'BEGIN:VTIM...c/GMT-8', ...] E At index 3 diff: b'DTSTART;VALUE=DATE-TIME:16010101T000000' != b'DTSTART:16010101T000000' E Use -v to get more diff tests/event_test.py:552: AssertionError ________________________ test_create_timezone_in_future ________________________ def test_create_timezone_in_future(): """Events too far into the future (after the next DST transition) used to be created with invalid timezones""" with freeze_time('2019-03-31'): > assert create_timezone( pytz.timezone('Europe/Amsterdam'), dt.datetime(2022, 1, 1, 18, 0)).to_ical().split() == [ b'BEGIN:VTIMEZONE', b'TZID:Europe/Amsterdam', b'BEGIN:STANDARD', b'DTSTART:20211031T020000', b'TZNAME:CET', b'TZOFFSETFROM:+0200', b'TZOFFSETTO:+0100', b'END:STANDARD', b'BEGIN:DAYLIGHT', b'DTSTART:20220327T030000', b'TZNAME:CEST', b'TZOFFSETFROM:+0100', b'TZOFFSETTO:+0200', b'END:DAYLIGHT', b'END:VTIMEZONE'] E AssertionError: assert [b'BEGIN:VTIM...M:+0200', ...] == [b'BEGIN:VTIM...M:+0200', ...] E At index 3 diff: b'DTSTART;VALUE=DATE-TIME:20211031T020000' != b'DTSTART:20211031T020000' E Use -v to get more diff tests/event_test.py:631: AssertionError _______________________________ test_new_vevent ________________________________ def test_new_vevent(): with freeze_time('20220702T1400'): vevent = _replace_uid(new_vevent( LOCALE_BERLIN, dt.date(2022, 7, 2), dt.date(2022, 7, 3), 'An Event', allday=True, repeat='weekly', )) > assert vevent.to_ical().decode('utf-8') == '\r\n'.join([ 'BEGIN:VEVENT', 'SUMMARY:An Event', 'DTSTART;VALUE=DATE:20220702', 'DTEND;VALUE=DATE:20220703', 'DTSTAMP:20220702T140000Z', 'UID:E41JRQX2DB4P1AQZI86BAT7NHPBHPRIIHQKA', 'RRULE:FREQ=WEEKLY', 'END:VEVENT', '' ]) E AssertionError: assert 'BEGIN:VEVENT...ND:VEVENT\r\n' == 'BEGIN:VEVENT...ND:VEVENT\r\n' E Skipping 85 identical leading characters in diff, use -v to show E 3 E - DTSTAMP:20220702T140000Z E + DTSTAMP;VALUE=DATE-TIME:20220702T140000Z E ? ++++++++++++++++ E UID:E41JRQX2DB4P1AQZI86BAT7NHPBHPRIIHQKA ... RRULE:FREQ=WEEKLY E E ...Full output truncated (2 lines hidden), use '-vv' to show tests/icalendar_test.py:40: AssertionError ________________________________ test_split_ics ________________________________ def test_split_ics(): cal = _get_text('cal_lots_of_timezones') vevents = split_ics(cal) vevents0 = vevents[0].split('\r\n') vevents1 = vevents[1].split('\r\n') part0 = _get_text('part0').split('\n') part1 = _get_text('part1').split('\n') assert _get_TZIDs(vevents0) == _get_TZIDs(part0) assert _get_TZIDs(vevents1) == _get_TZIDs(part1) > assert sorted(vevents0) == sorted(part0) E AssertionError: assert ['', 'BEGIN:D...IMEZONE', ...] == ['', 'BEGIN:D...IMEZONE', ...] E At index 6 diff: 'DTEND;TZID=Europe_London;VALUE=DATE-TIME:20140509T203000' != 'DTEND;TZID=Europe_London:20140509T203000' E Use -v to get more diff tests/icalendar_test.py:66: AssertionError __________________________ test_split_ics_random_uid ___________________________ def test_split_ics_random_uid(): random.seed(123) cal = _get_text('cal_lots_of_timezones') vevents = split_ics(cal, random_uid=True) part0 = _get_text('part0').split('\n') part1 = _get_text('part1').split('\n') for item in icalendar.Calendar.from_ical(vevents[0]).walk(): if item.name == 'VEVENT': assert item['UID'] == 'DRF0RGCY89VVDKIV9VPKA1FYEAU2GCFJIBS1' for item in icalendar.Calendar.from_ical(vevents[1]).walk(): if item.name == 'VEVENT': assert item['UID'] == '4Q4CTV74N7UAZ618570X6CLF5QKVV9ZE3YVB' # after replacing the UIDs, everything should be as above vevents0 = vevents[0].replace('DRF0RGCY89VVDKIV9VPKA1FYEAU2GCFJIBS1', '123').split('\r\n') vevents1 = vevents[1].replace('4Q4CTV74N7UAZ618570X6CLF5QKVV9ZE3YVB', 'abcde').split('\r\n') assert _get_TZIDs(vevents0) == _get_TZIDs(part0) assert _get_TZIDs(vevents1) == _get_TZIDs(part1) > assert sorted(vevents0) == sorted(part0) E AssertionError: assert ['', 'BEGIN:D...IMEZONE', ...] == ['', 'BEGIN:D...IMEZONE', ...] E At index 6 diff: 'DTEND;TZID=Europe_London;VALUE=DATE-TIME:20140509T203000' != 'DTEND;TZID=Europe_London:20140509T203000' E Use -v to get more diff tests/icalendar_test.py:92: AssertionError ___________________________ TestCollection.test_get ____________________________ self = <tests.khalendar_test.TestCollection object at 0xa295e854f40> coll_vdirs = (<khal.khalendar.khalendar.CalendarCollection object at 0xa287d039270>, {"Dad's calendar": <khal.khalendar.vdir.Vdir o...r': <khal.khalendar.vdir.Vdir object at 0xa287d03b640>, 'private': <khal.khalendar.vdir.Vdir object at 0xa287d03b940>}) def test_get(self, coll_vdirs): """test getting an event by its href""" coll, vdirs = coll_vdirs event = Event.fromString( _get_text('event_dt_simple'), href='xyz.ics', calendar=cal1, locale=LOCALE_BERLIN, ) coll.insert(event, cal1) event_from_db = coll.get_event(SIMPLE_EVENT_UID + '.ics', cal1) with freeze_time('2016-1-1'): > assert normalize_component(event_from_db.raw) == \ normalize_component(_get_text('event_dt_simple_inkl_vtimezone')) E AssertionError: assert ('VCALENDAR',...enset())}))})) == ('VCALENDAR',...enset())}))})) E At index 2 diff: frozenset({('VTIMEZONE', b'BEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nEND:VTIMEZONE\r\n', frozenset({('DAYLIGHT', b'BEGIN:DAYLIGHT\r\nDTSTART;VALUE=DATE-TIME:20140330T030000\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nEND:DAYLIGHT\r\n', frozenset()), ('STANDARD', b'BEGIN:STANDARD\r\nDTSTART;VALUE=DATE-TIME:20141026T020000\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nEND:STANDARD\r\n', frozenset())})), ('VEVENT', b'BEGIN:VEVENT\r\nSUMMARY:An Event\r\nDTSTART;TZID=Europe/Berlin:20140409T093000\r\nDTEND;TZID=Europe/Berlin:201404... E E ...Full output truncated (2 lines hidden), use '-vv' to show tests/khalendar_test.py:227: AssertionError _____________________ TestDbCreation.test_failed_create_db _____________________ self = <tests.khalendar_test.TestDbCreation object at 0xa294fe3ded0> tmpdir = local('/tmp/pytest-of-root/pytest-0/test_failed_create_db0') def test_failed_create_db(self, tmpdir): dbdir = str(tmpdir) + '/subdir/' dbpath = dbdir + 'khal.db' os.chmod(str(tmpdir), 400) calendars = {cal1: {'name': cal1, 'path': str(tmpdir)}} > with pytest.raises(CouldNotCreateDbDir): E Failed: DID NOT RAISE <class 'khal.khalendar.exceptions.CouldNotCreateDbDir'> tests/khalendar_test.py:415: Failed ________________________ test_construct_event_format_de ________________________ @freeze_time('20140216T120000') def test_construct_event_format_de(): for data_list, vevent_expected in test_set_format_de: vevent = _construct_event(data_list.split(), locale=LOCALE_BERLIN) > assert _replace_uid(vevent).to_ical() == vevent_expected E AssertionError: assert b'BEGIN:VEVEN...ND:VEVENT\r\n' == b'BEGIN:VEVEN...ND:VEVENT\r\n' E At index 102 diff: b';' != b':' E Use -v to get more diff tests/parse_datetime_test.py:400: AssertionError _______________________ test__construct_event_format_us ________________________ @freeze_time('2014-02-16 12:00:00') def test__construct_event_format_us(): for data_list, vevent in test_set_format_us: event = _construct_event(data_list.split(), locale=LOCALE_NEW_YORK) > assert _replace_uid(event).to_ical() == vevent E AssertionError: assert b'BEGIN:VEVEN...ND:VEVENT\r\n' == b'BEGIN:VEVEN...ND:VEVENT\r\n' E At index 68 diff: b';' != b':' E Use -v to get more diff tests/parse_datetime_test.py:419: AssertionError __________________ test__construct_event_format_de_complexer ___________________ @freeze_time('2014-02-16 12:00:00') def test__construct_event_format_de_complexer(): for data_list, vevent in test_set_format_de_complexer: event = _construct_event(data_list.split(), locale=LOCALE_BERLIN) > assert _replace_uid(event).to_ical() == vevent E AssertionError: assert b'BEGIN:VEVEN...ND:VEVENT\r\n' == b'BEGIN:VEVEN...ND:VEVENT\r\n' E At index 65 diff: b';' != b':' E Use -v to get more diff tests/parse_datetime_test.py:452: AssertionError ________________________________ test_leap_year ________________________________ def test_leap_year(): for data_list, vevent in test_set_leap_year: with freeze_time('1999-1-1'): with pytest.raises(DateTimeParseError): event = _construct_event(data_list.split(), locale=LOCALE_BERLIN) with freeze_time('2016-1-1 20:21:22'): event = _construct_event(data_list.split(), locale=LOCALE_BERLIN) > assert _replace_uid(event).to_ical() == vevent E AssertionError: assert b'BEGIN:VEVEN...ND:VEVENT\r\n' == b'BEGIN:VEVEN...ND:VEVENT\r\n' E At index 102 diff: b';' != b':' E Use -v to get more diff tests/parse_datetime_test.py:471: AssertionError _______________________________ test_description _______________________________ def test_description(): for data_list, vevent in test_set_description: with freeze_time('2014-02-16 12:00:00'): event = _construct_event(data_list.split(), locale=LOCALE_BERLIN) > assert _replace_uid(event).to_ical() == vevent E AssertionError: assert b'BEGIN:VEVEN...ND:VEVENT\r\n' == b'BEGIN:VEVEN...ND:VEVENT\r\n' E At index 65 diff: b';' != b':' E Use -v to get more diff tests/parse_datetime_test.py:501: AssertionError _____________________________ test_repeat_floating _____________________________ def test_repeat_floating(): for data_list, vevent in test_set_repeat_floating: with freeze_time('2014-02-16 12:00:00'): event = _construct_event(data_list.split(), description='please describe the event', repeat='daily', until='04.06.2015', locale=LOCALE_FLOATING) > assert normalize_component(_replace_uid(event).to_ical()) == \ normalize_component(vevent) E AssertionError: assert ('VEVENT', b'..., frozenset()) == ('VEVENT', b'..., frozenset()) E At index 1 diff: b'BEGIN:VEVENT\r\nSUMMARY:\xc3\x84wes\xc3\xb6me Event\r\nDTSTART;VALUE=DATE-TIME:20140216T080000\r\nDTEND;VALUE=DATE-TIME:20140216T090000\r\nDTSTAMP;VALUE=DATE-TIME:20140216T120000Z\r\nUID:E41JRQX2DB4P1AQZI86BAT7NHPBHPRIIHQKA\r\nRRULE:FREQ=DAILY;UNTIL=20150604T000000\r\nDESCRIPTION:please describe the event\r\nEND:VEVENT\r\n' != b'BEGIN:VEVENT\r\nSUMMARY:\xc3\x84wes\xc3\xb6me Event\r\nDTSTART:20140216T080000\r\nDTEND:20140216T090000\r\nDTSTAMP:20140216T120000Z\r\nUID:E41JRQX2DB4P1AQZI86BAT7NHPBHPRIIHQKA\r\nRRULE:FREQ=DAILY;UNTIL=20150604T000000\r\nDESCR... E E ...Full output truncated (2 lines hidden), use '-vv' to show tests/parse_datetime_test.py:523: AssertionError ____________________________ test_repeat_localized _____________________________ def test_repeat_localized(): for data_list, vevent in test_set_repeat_localized: with freeze_time('2014-02-16 12:00:00'): event = _construct_event(data_list.split(), description='please describe the event', repeat='daily', until='05.06.2015', locale=LOCALE_BERLIN) > assert normalize_component(_replace_uid(event).to_ical()) == \ normalize_component(vevent) E AssertionError: assert ('VEVENT', b'..., frozenset()) == ('VEVENT', b'..., frozenset()) E At index 1 diff: b'BEGIN:VEVENT\r\nSUMMARY:\xc3\x84wes\xc3\xb6me Event\r\nDTSTART;TZID=Europe/Berlin;VALUE=DATE-TIME:20140216T080000\r\nDTEND;TZID=Europe/Berlin;VALUE=DATE-TIME:20140216T090000\r\nDTSTAMP;VALUE=DATE-TIME:20140216T120000Z\r\nUID:E41JRQX2DB4P1AQZI86BAT7NHPBHPRIIHQKA\r\nRRULE:FREQ=DAILY;UNTIL=20150604T230000Z\r\nDESCRIPTION:please describe the event\r\nEND:VEVENT\r\n' != b'BEGIN:VEVENT\r\nSUMMARY:\xc3\x84wes\xc3\xb6me Event\r\nDTSTART;TZID=Europe/Berlin:20140216T080000\r\nDTEND;TZID=Europe/Berlin:20140216T090000\r\nDTSTAMP:20140216T120000Z\r\nUID:E41JRQX2DB... E E ...Full output truncated (2 lines hidden), use '-vv' to show tests/parse_datetime_test.py:546: AssertionError __________________________________ test_alarm __________________________________ @freeze_time('2014-02-16 12:00:00') def test_alarm(): for data_list, vevent in test_set_alarm: event = _construct_event(data_list.split(), description='please describe the event', alarm='23m', locale=LOCALE_BERLIN) > assert _replace_uid(event).to_ical() == vevent E AssertionError: assert b'BEGIN:VEVEN...ND:VEVENT\r\n' == b'BEGIN:VEVEN...ND:VEVENT\r\n' E At index 65 diff: b';' != b':' E Use -v to get more diff tests/parse_datetime_test.py:574: AssertionError _________________ test_description_and_location_and_categories _________________ @freeze_time('2014-02-16 12:00:00') def test_description_and_location_and_categories(): for data_list, vevent in test_set_description_and_location_and_categories: event = _construct_event(data_list.split(), description='please describe the event', location='in the office', categories=['boring meeting'], locale=LOCALE_BERLIN) > assert _replace_uid(event).to_ical() == vevent E AssertionError: assert b'BEGIN:VEVEN...ND:VEVENT\r\n' == b'BEGIN:VEVEN...ND:VEVENT\r\n' E At index 65 diff: b';' != b':' E Use -v to get more diff tests/parse_datetime_test.py:597: AssertionError _________________________________ test_berlin __________________________________ def test_berlin(): vberlin_std = b'\r\n'.join( [b'BEGIN:STANDARD', b'DTSTART:20141026T020000', b'TZNAME:CET', b'TZOFFSETFROM:+0200', b'TZOFFSETTO:+0100', b'END:STANDARD', ]) vberlin_dst = b'\r\n'.join( [b'BEGIN:DAYLIGHT', b'DTSTART:20150329T030000', b'TZNAME:CEST', b'TZOFFSETFROM:+0100', b'TZOFFSETTO:+0200', b'END:DAYLIGHT', ]) vberlin = create_timezone(berlin, atime, atime).to_ical() assert b'TZID:Europe/Berlin' in vberlin > assert vberlin_std in vberlin E AssertionError: assert b'BEGIN:STANDARD\r\nDTSTART:20141026T020000\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nEND:STANDARD' in b'BEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nBEGIN:STANDARD\r\nDTSTART;VALUE=DATE-TIME:20141026T020000\r\nTZNAME:CET\r\n...ATE-TIME:20150329T030000\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE\r\n' tests/vtimezone_test.py:36: AssertionError ______________________________ test_berlin_rdate _______________________________ def test_berlin_rdate(): vberlin_std = b'\r\n'.join( [b'BEGIN:STANDARD', b'DTSTART:20141026T020000', b'RDATE:20151025T020000,20161030T020000', b'TZNAME:CET', b'TZOFFSETFROM:+0200', b'TZOFFSETTO:+0100', b'END:STANDARD', ]) vberlin_dst = b'\r\n'.join( [b'BEGIN:DAYLIGHT', b'DTSTART:20150329T030000', b'RDATE:20160327T030000', b'TZNAME:CEST', b'TZOFFSETFROM:+0100', b'TZOFFSETTO:+0200', b'END:DAYLIGHT', ]) vberlin = create_timezone(berlin, atime, btime).to_ical() assert b'TZID:Europe/Berlin' in vberlin > assert vberlin_std in vberlin E AssertionError: assert b'BEGIN:STANDARD\r\nDTSTART:20141026T020000\r\nRDATE:20151025T020000,20161030T020000\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nEND:STANDARD' in b'BEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nBEGIN:STANDARD\r\nDTSTART;VALUE=DATE-TIME:20141026T020000\r\nRDATE:20151025...r\nRDATE:20160327T030000\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE\r\n' tests/vtimezone_test.py:63: AssertionError _________________________________ test_bogota __________________________________ def test_bogota(): vbogota = [b'BEGIN:VTIMEZONE', b'TZID:America/Bogota', b'BEGIN:STANDARD', b'DTSTART:19930206T230000', b'TZNAME:COT', b'TZOFFSETFROM:-0400', b'TZOFFSETTO:-0500', b'END:STANDARD', b'END:VTIMEZONE', b''] if version.parse(pytz.__version__) > version.Version('2017.1'): vbogota[4] = b'TZNAME:-05' if version.parse(pytz.__version__) < version.Version('2022.7'): vbogota.insert(4, b'RDATE:20380118T221407') > assert create_timezone(bogota, atime, atime).to_ical().split(b'\r\n') > == vbogota E AssertionError: assert [b'BEGIN:VTIM...M:-0400', ...] == [b'BEGIN:VTIM...M:-0400', ...] E At index 3 diff: b'DTSTART;VALUE=DATE-TIME:19930206T230000' != b'DTSTART:19930206T230000' E Use -v to get more diff tests/vtimezone_test.py:83: AssertionError =============================== warnings summary =============================== tests/backend_test.py:5 /home/wen/ports/obj/khal-0.11.2/khal-0.11.2/tests/backend_test.py:5: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html import pkg_resources ../../../../../../usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py:2871 /usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('mpl_toolkits')`. Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages declare_namespace(pkg) ../../../../../../usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py:2871 ../../../../../../usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py:2871 ../../../../../../usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py:2871 ../../../../../../usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py:2871 ../../../../../../usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py:2871 /usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('sphinxcontrib')`. Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages declare_namespace(pkg) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/cal_display_test.py::test_vertical_month_unicode - AssertionErro... FAILED tests/cal_display_test.py::test_vertical_month_unicode_weekdeays - Ass... FAILED tests/cal_display_test.py::test_vertical_month_unicode_weekdeays_gr - ... FAILED tests/cal_display_test.py::test_vertical_month_abbr_fr - AssertionErro... FAILED tests/cli_test.py::test_configure_command_cannot_write_config_file - a... FAILED tests/cli_test.py::test_configure_command_cannot_create_vdir - Asserti... FAILED tests/event_test.py::test_raw_dt - AssertionError: assert ('VCALENDAR'... FAILED tests/event_test.py::test_transform_event - AssertionError: assert ('V... FAILED tests/event_test.py::test_dt_two_tz - AssertionError: assert ('VCALEND... FAILED tests/event_test.py::test_event_no_dst - AssertionError: assert ('VCAL... FAILED tests/event_test.py::test_create_timezone_static - AssertionError: ass... FAILED tests/event_test.py::test_create_timezone_in_future - AssertionError: ... FAILED tests/icalendar_test.py::test_new_vevent - AssertionError: assert 'BEG... FAILED tests/icalendar_test.py::test_split_ics - AssertionError: assert ['', ... FAILED tests/icalendar_test.py::test_split_ics_random_uid - AssertionError: a... FAILED tests/khalendar_test.py::TestCollection::test_get - AssertionError: as... FAILED tests/khalendar_test.py::TestDbCreation::test_failed_create_db - Faile... FAILED tests/parse_datetime_test.py::test_construct_event_format_de - Asserti... FAILED tests/parse_datetime_test.py::test__construct_event_format_us - Assert... FAILED tests/parse_datetime_test.py::test__construct_event_format_de_complexer FAILED tests/parse_datetime_test.py::test_leap_year - AssertionError: assert ... FAILED tests/parse_datetime_test.py::test_description - AssertionError: asser... FAILED tests/parse_datetime_test.py::test_repeat_floating - AssertionError: a... FAILED tests/parse_datetime_test.py::test_repeat_localized - AssertionError: ... FAILED tests/parse_datetime_test.py::test_alarm - AssertionError: assert b'BE... FAILED tests/parse_datetime_test.py::test_description_and_location_and_categories FAILED tests/vtimezone_test.py::test_berlin - AssertionError: assert b'BEGIN:... FAILED tests/vtimezone_test.py::test_berlin_rdate - AssertionError: assert b'... FAILED tests/vtimezone_test.py::test_bogota - AssertionError: assert [b'BEGIN... ====== 29 failed, 283 passed, 1 xfailed, 2 xpassed, 7 warnings in 18.76s ======= ________________________________________ 发件人: Stuart Henderson <s...@spacehopper.org> 发送时间: 2023年12月5日 20:14 收件人: wen heping 抄送: j...@openbsd.org; ports@openbsd.org 主题: Re: productivity/khal: Update to 0.11.2 On 2023/12/05 03:08, wen heping wrote: > Hi, all: > > Here is a patch for productivity/khal: > i) Update to 0.11.2 > ii) Add some missing TEST_DEPENDS > > It build and run well on amd64-current system. > In all 300+ tests there are 29 tests failed. > No other ports depend on it. vdirsyncer is a RUN_DEPENDS so it doesn't need listing again in TEST_DEPENDS can you show your test log? I only get 4 failed so maybe there are some other deps we can add. > Index: productivity/khal/Makefile > =================================================================== > RCS file: /cvs/ports/productivity/khal/Makefile,v > retrieving revision 1.20 > diff -u -p -r1.20 Makefile > --- productivity/khal/Makefile 13 Nov 2022 20:31:00 -0000 1.20 > +++ productivity/khal/Makefile 5 Dec 2023 03:03:27 -0000 > @@ -1,8 +1,7 @@ > COMMENT = standards based terminal calendar > > -MODPY_EGG_VERSION = 0.10.4 > +MODPY_EGG_VERSION = 0.11.2 > DISTNAME = khal-${MODPY_EGG_VERSION} > -REVISION = 2 > > CATEGORIES = productivity > > @@ -31,7 +30,9 @@ RUN_DEPENDS = devel/py-atomicwrites${MO > devel/py-urwid${MODPY_FLAVOR} \ > devel/py-xdg${MODPY_FLAVOR} \ > productivity/vdirsyncer > -TEST_DEPENDS = devel/py-freezegun${MODPY_FLAVOR} \ > - devel/py-test-cov${MODPY_FLAVOR} > +TEST_DEPENDS = devel/py-hypothesis${MODPY_FLAVOR} \ > + devel/py-freezegun${MODPY_FLAVOR} \ > + productivity/vdirsyncer \ > + sysutils/py-packaging${MODPY_FLAVOR} > > .include <bsd.port.mk> > Index: productivity/khal/distinfo > =================================================================== > RCS file: /cvs/ports/productivity/khal/distinfo,v > retrieving revision 1.8 > diff -u -p -r1.8 distinfo > --- productivity/khal/distinfo 15 Sep 2021 20:06:12 -0000 1.8 > +++ productivity/khal/distinfo 5 Dec 2023 03:03:27 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (khal-0.10.4.tar.gz) = P9uYCpphwCBteoKxb3e0CKTzQaK4ZrnJ/PamQYUNEp8= > -SIZE (khal-0.10.4.tar.gz) = 185736 > +SHA256 (khal-0.11.2.tar.gz) = j7jYk3HlPiI1lToHZeQbl+F0hIpojWN2hHdXbQP4mbo= > +SIZE (khal-0.11.2.tar.gz) = 196986 > Index: productivity/khal/pkg/PLIST > =================================================================== > RCS file: /cvs/ports/productivity/khal/pkg/PLIST,v > retrieving revision 1.6 > diff -u -p -r1.6 PLIST > --- productivity/khal/pkg/PLIST 13 Nov 2022 20:31:00 -0000 1.6 > +++ productivity/khal/pkg/PLIST 5 Dec 2023 03:03:27 -0000 > @@ -24,6 +24,8 @@ lib/python${MODPY_VERSION}/site-packages > > lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}configwizard.${MODPY_PYC_MAGIC_TAG}pyc > > lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}controllers.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} > > lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}controllers.${MODPY_PYC_MAGIC_TAG}pyc > +lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}custom_types.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} > +lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}custom_types.${MODPY_PYC_MAGIC_TAG}pyc > > lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}exceptions.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} > > lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}exceptions.${MODPY_PYC_MAGIC_TAG}pyc > > lib/python${MODPY_VERSION}/site-packages/khal/${MODPY_PYCACHE}icalendar.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION} > @@ -40,6 +42,7 @@ lib/python${MODPY_VERSION}/site-packages > lib/python${MODPY_VERSION}/site-packages/khal/cli.py > lib/python${MODPY_VERSION}/site-packages/khal/configwizard.py > lib/python${MODPY_VERSION}/site-packages/khal/controllers.py > +lib/python${MODPY_VERSION}/site-packages/khal/custom_types.py > lib/python${MODPY_VERSION}/site-packages/khal/exceptions.py > lib/python${MODPY_VERSION}/site-packages/khal/icalendar.py > lib/python${MODPY_VERSION}/site-packages/khal/khalendar/