"/tmp/pytest-of-root/" in your logs means you are running this as root, that's an extremely bad idea. I strongly recommend PORTS_PRIVSEP=Yes in mk.conf and fixing up permissions so that it works.
Not sure whether that is responsible for the test failures (which look a bit strange to me) but it's not impossible. On 2023/12/06 03:25, wen heping wrote: > 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/ >