[Pkg-electronics-devel] Bug#1058359: luma.core: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 returned exit code 13

Lucas Nussbaum lucas at debian.org
Tue Dec 12 08:19:09 GMT 2023


Source: luma.core
Version: 2.4.0-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20231212 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
>  debian/rules build
> dh build --with python3 --with sphinxdoc --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:310: python3.11 setup.py config 
> running config
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:310: /usr/bin/python3 setup.py build 
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/sprite_system.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/mixin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/image_composition.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/error.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/cmdline.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/const.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/lib.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/threadpool.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/render.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/bitmap_font.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/virtual.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/device.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/framebuffer.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/ansi_color.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> copying luma/core/util.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/legacy
> copying luma/core/legacy/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/legacy
> copying luma/core/legacy/font.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/legacy
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/interface
> copying luma/core/interface/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/interface
> copying luma/core/interface/parallel.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/interface
> copying luma/core/interface/serial.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/interface
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:310: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build; python3.11 -m pytest tests
> ============================= test session starts ==============================
> platform linux -- Python 3.11.7, pytest-7.4.3, pluggy-1.3.0 -- /usr/bin/python3.11
> cachedir: .pytest_cache
> rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build
> configfile: pytest.ini
> collecting ... collected 210 items
> 
> tests/test_ansi_color.py::test_parse_str_no_escape PASSED
> tests/test_ansi_color.py::test_parse_str_valid_ansi_colors PASSED
> tests/test_ansi_color.py::test_parse_str_valid_ansi_colors_extended_codeset PASSED
> tests/test_ansi_color.py::test_parse_str_multiple_ansi_colors PASSED
> tests/test_ansi_color.py::test_parse_str_unknown_ansi_colors_ignored PASSED
> tests/test_ansi_color.py::test_strip_ansi_codes PASSED
> tests/test_bitbang.py::test_data PASSED
> tests/test_bitbang.py::test_cleanup PASSED
> tests/test_bitbang.py::test_cleanup_custom_pins PASSED
> tests/test_bitbang.py::test_unsupported_gpio_platform SKIPPED (RPi.G...)
> tests/test_bitmap_font.py::test_load_from_pillow_font SKIPPED
> tests/test_bitmap_font.py::test_load_from_pillow_exceptions SKIPPED
> tests/test_bitmap_font.py::test_mapping SKIPPED
> tests/test_bitmap_font.py::test_load_sprite_table SKIPPED
> tests/test_bitmap_font.py::test_load_sprite_table_exceptions_1 PASSED
> tests/test_bitmap_font.py::test_load_sprite_table_exceptions_2 SKIPPED
> tests/test_bitmap_font.py::test_dumps_loads_saves_load SKIPPED
> tests/test_bitmap_font.py::test_loads_exception PASSED
> tests/test_bitmap_font.py::test_combine PASSED
> tests/test_bitmap_font.py::test_embedded_font PASSED
> tests/test_bitmap_font.py::test_embedded_font_exceptions PASSED
> tests/test_bitmap_font.py::test_metrics PASSED
> tests/test_bitmap_font.py::test_glyph_index PASSED
> tests/test_canvas.py::test_canvas_background FAILED
> tests/test_canvas.py::test_canvas_wrong_size PASSED
> tests/test_character.py::test_init SKIPPED
> tests/test_character.py::test_setter_getter SKIPPED
> tests/test_cmdline.py::test_get_interface_types PASSED
> tests/test_cmdline.py::test_ensure_cmdline_opt_contains_all_interfaces PASSED
> tests/test_cmdline.py::test_get_display_types PASSED
> tests/test_cmdline.py::test_get_choices_unknown_module PASSED
> tests/test_cmdline.py::test_get_library_version PASSED
> tests/test_cmdline.py::test_get_library_for_display_type PASSED
> tests/test_cmdline.py::test_load_config_file_parse PASSED
> tests/test_cmdline.py::test_create_parser PASSED
> tests/test_cmdline.py::test_make_interface_noop PASSED
> tests/test_cmdline.py::test_make_interface_i2c PASSED
> tests/test_cmdline.py::test_make_interface_spi SKIPPED (RPi.GPIO is ...)
> tests/test_cmdline.py::test_make_interface_gpio_cs_spi SKIPPED (RPi....)
> tests/test_cmdline.py::test_make_interface_spi_alt_gpio SKIPPED (spi...)
> tests/test_cmdline.py::test_make_interface_bitbang SKIPPED (RPi.GPIO...)
> tests/test_cmdline.py::test_make_interface_pcf8574 PASSED
> tests/test_cmdline.py::test_make_interface_bitbang_6800 SKIPPED (RPi...)
> tests/test_cmdline.py::test_make_interface_bitbang_6800_alt_gpio PASSED
> tests/test_cmdline.py::test_create_device PASSED
> tests/test_cmdline.py::test_create_device_oled SKIPPED (RPi.GPIO is ...)
> tests/test_cmdline.py::test_create_device_lcd PASSED
> tests/test_cmdline.py::test_create_device_led_matrix PASSED
> tests/test_cmdline.py::test_create_device_emulator PASSED
> tests/test_cmdline.py::test_create_device_core PASSED
> tests/test_cmdline.py::test_make_interface_ftdi_spi PASSED
> tests/test_cmdline.py::test_make_interface_ftdi_i2c PASSED
> tests/test_dummy_device.py::test_capture_noops PASSED
> tests/test_dummy_device.py::test_portrait PASSED
> tests/test_dummy_device.py::test_dither PASSED
> tests/test_framebuffer.py::test_full_frame PASSED
> tests/test_framebuffer.py::test_diff_to_previous PASSED
> tests/test_framebuffer.py::test_diff_to_previous_debug PASSED
> tests/test_framerate_regulator.py::test_init_default PASSED
> tests/test_framerate_regulator.py::test_init_unlimited PASSED
> tests/test_framerate_regulator.py::test_init_30fps PASSED
> tests/test_framerate_regulator.py::test_sleep PASSED
> tests/test_framerate_regulator.py::test_effective_FPS PASSED
> tests/test_framerate_regulator.py::test_average_transit_time PASSED
> tests/test_ftdi_i2c.py::test_init PASSED
> tests/test_ftdi_i2c.py::test_command PASSED
> tests/test_ftdi_i2c.py::test_data PASSED
> tests/test_ftdi_i2c.py::test_cleanup PASSED
> tests/test_ftdi_i2c.py::test_init_device_address_error PASSED
> tests/test_ftdi_spi.py::test_init PASSED
> tests/test_ftdi_spi.py::test_command PASSED
> tests/test_ftdi_spi.py::test_data PASSED
> tests/test_ftdi_spi.py::test_cleanup PASSED
> tests/test_gpio_cs_spi.py::test_init PASSED
> tests/test_gpio_cs_spi.py::test_init_invalid_bus_speed PASSED
> tests/test_gpio_cs_spi.py::test_command PASSED
> tests/test_gpio_cs_spi.py::test_data PASSED
> tests/test_gpio_cs_spi.py::test_cleanup PASSED
> tests/test_gpio_cs_spi.py::test_init_device_not_found SKIPPED (spide...)
> tests/test_gpio_cs_spi.py::test_unsupported_gpio_platform SKIPPED (R...)
> tests/test_history.py::test_restore_throws_error_when_empty PASSED
> tests/test_history.py::test_save_and_restore_reverts_image PASSED
> tests/test_history.py::test_drop_and_restore PASSED
> tests/test_i2c.py::test_init_device_not_found PASSED
> tests/test_i2c.py::test_init_device_permission_error PASSED
> tests/test_i2c.py::test_init_device_address_error PASSED
> tests/test_i2c.py::test_init_no_bus PASSED
> tests/test_i2c.py::test_init_bus_provided PASSED
> tests/test_i2c.py::test_command PASSED
> tests/test_i2c.py::test_i2c_command_device_not_found_error PASSED
> tests/test_i2c.py::test_i2c_data PASSED
> tests/test_i2c.py::test_i2c_data_chunked PASSED
> tests/test_i2c.py::test_cleanup PASSED
> tests/test_image_composition.py::test_composable_image_none PASSED
> tests/test_image_composition.py::test_composable_image_image PASSED
> tests/test_image_composition.py::test_composable_image_ctor PASSED
> tests/test_image_composition.py::test_composable_image_crop_same PASSED
> tests/test_image_composition.py::test_composable_image_crop_size_smaller_than_image_size PASSED
> tests/test_image_composition.py::test_composable_image_crop_size_greater_than_image_size PASSED
> tests/test_image_composition.py::test_composable_image_crop_offset PASSED
> tests/test_image_composition.py::test_image_composition_ctor PASSED
> tests/test_image_composition.py::test_image_add_image_none PASSED
> tests/test_image_composition.py::test_image_remove_image_none PASSED
> tests/test_image_composition.py::test_image_count PASSED
> tests/test_image_composition.py::test_refresh_no_images PASSED
> tests/test_image_composition.py::test_refresh PASSED
> tests/test_legacy.py::test_textsize PASSED
> tests/test_legacy.py::test_text_space PASSED
> tests/test_legacy.py::test_text_char PASSED
> tests/test_legacy.py::test_show_message PASSED
> tests/test_legacy_fonts.py::test_font[ATARI_FONT] PASSED
> tests/test_legacy_fonts.py::test_font[CP437_FONT] PASSED
> tests/test_legacy_fonts.py::test_font[SINCLAIR_FONT] PASSED
> tests/test_legacy_fonts.py::test_font[SPECCY_FONT] PASSED
> tests/test_legacy_fonts.py::test_font[LCD_FONT] PASSED
> tests/test_legacy_fonts.py::test_font[UKR_FONT] PASSED
> tests/test_legacy_fonts.py::test_font[TINY_FONT] PASSED
> tests/test_legacy_fonts.py::test_font[SEG7_FONT] PASSED
> tests/test_lib.py::test_rpio_gpio PASSED
> tests/test_lib.py::test_spidev PASSED
> tests/test_lib.py::test_multi PASSED
> tests/test_linux_framebuffer_device.py::test_display_id_as_dev_fb_number SKIPPED
> tests/test_linux_framebuffer_device.py::test_display_id_from_environ PASSED
> tests/test_linux_framebuffer_device.py::test_unknown_display_id PASSED
> tests/test_linux_framebuffer_device.py::test_read_screen_resolution PASSED
> tests/test_linux_framebuffer_device.py::test_read_bits_per_pixel PASSED
> tests/test_linux_framebuffer_device.py::test_display[16-False] SKIPPED
> tests/test_linux_framebuffer_device.py::test_display[24-False] SKIPPED
> tests/test_linux_framebuffer_device.py::test_display[24-True] SKIPPED
> tests/test_linux_framebuffer_device.py::test_display[32-False] SKIPPED
> tests/test_linux_framebuffer_device.py::test_display[32-True] SKIPPED
> tests/test_linux_framebuffer_device.py::test_unsupported_bit_depth PASSED
> tests/test_linux_framebuffer_device.py::test_cleanup PASSED
> tests/test_mixin.py::test_display_not_implemented PASSED
> tests/test_observable.py::test_length PASSED
> tests/test_observable.py::test_iteration PASSED
> tests/test_observable.py::test_getattribute PASSED
> tests/test_observable.py::test_getitem PASSED
> tests/test_observable.py::test_setitem PASSED
> tests/test_observable.py::test_setslice PASSED
> tests/test_observable.py::test_delitem PASSED
> tests/test_observable.py::test_getslice PASSED
> tests/test_observable.py::test_repr PASSED
> tests/test_parallel.py::test_data PASSED
> tests/test_parallel.py::test_wrong_number_of_pins PASSED
> tests/test_parallel.py::test_cleanup PASSED
> tests/test_parallel.py::test_unsupported_gpio_platform SKIPPED (RPi....)
> tests/test_parallel_device.py::test_4bit PASSED
> tests/test_parallel_device.py::test_8bit PASSED
> tests/test_pcf8574.py::test_command PASSED
> tests/test_pcf8574.py::test_i2c_command_device_not_found_error PASSED
> tests/test_pcf8574.py::test_i2c_data PASSED
> tests/test_pcf8574.py::test_cleanup PASSED
> tests/test_persist.py::test_persist PASSED
> tests/test_proportional.py::test_narrow_char PASSED
> tests/test_proportional.py::test_wide_char PASSED
> tests/test_proportional.py::test_space_char PASSED
> tests/test_proportional.py::test_doublequote_char PASSED
> tests/test_proportional.py::test_trim_not_nonzero PASSED
> tests/test_proportional.py::test_unicode_not_supported PASSED
> tests/test_sevensegment.py::test_init PASSED
> tests/test_sevensegment.py::test_overflow PASSED
> tests/test_sevensegment.py::test_setter_getter PASSED
> tests/test_spi.py::test_init PASSED
> tests/test_spi.py::test_init_invalid_bus_speed PASSED
> tests/test_spi.py::test_command PASSED
> tests/test_spi.py::test_data PASSED
> tests/test_spi.py::test_cleanup PASSED
> tests/test_spi.py::test_init_device_not_found SKIPPED (spidev is not...)
> tests/test_spi.py::test_unsupported_gpio_platform SKIPPED (RPi.GPIO ...)
> tests/test_spi.py::test_cs_high_ignored PASSED
> tests/test_spritesheet.py::test_init PASSED
> tests/test_spritesheet.py::test_len PASSED
> tests/test_spritesheet.py::test_caching PASSED
> tests/test_spritesheet.py::test_get PASSED
> tests/test_spritesheet.py::test_get_string PASSED
> tests/test_spritesheet.py::test_get_outofrange PASSED
> tests/test_spritesheet.py::test_animate_unknown_seq PASSED
> tests/test_spritesheet.py::test_animate_finite_seq PASSED
> tests/test_spritesheet.py::test_animate_slow_seq PASSED
> tests/test_spritesheet.py::test_animate_infinite_seq PASSED
> tests/test_spritesheet.py::test_animate_subroutine PASSED
> tests/test_terminal.py::test_default_text FAILED
> tests/test_terminal.py::test_wrapped_text FAILED
> tests/test_terminal.py::test_tab_alignment FAILED
> tests/test_terminal.py::test_control_chars FAILED
> tests/test_terminal.py::test_scrolling FAILED
> tests/test_terminal.py::test_alt_colors FAILED
> tests/test_terminal.py::test_ansi_colors FAILED
> tests/test_terminal.py::test_ansi_colors_wrapped FAILED
> tests/test_terminal.py::test_ansi_colors_scroll FAILED
> tests/test_terminal.py::test_accented_charset SKIPPED
> tests/test_tolerant.py::test_default PASSED
> tests/test_tolerant.py::test_custom_missing PASSED
> tests/test_tolerant.py::test_with_proportional PASSED
> tests/test_util.py::test_mutablestring PASSED
> tests/test_util.py::test_mutablestring_unicode PASSED
> tests/test_util.py::test_from_16_to_8_to_16 PASSED
> tests/test_util.py::test_bytes_to_nibbles PASSED
> tests/test_viewport.py::test_range_overlap_over12 PASSED
> tests/test_viewport.py::test_range_overlap_over123 PASSED
> tests/test_viewport.py::test_range_overlap_over23 PASSED
> tests/test_viewport.py::test_range_overlap_over234 PASSED
> tests/test_viewport.py::test_range_overlap_over34 PASSED
> tests/test_viewport.py::test_range_overlap_over4 PASSED
> tests/test_viewport.py::test_range_overlap_over_none PASSED
> tests/test_viewport.py::test_snapshot_last_updated PASSED
> tests/test_viewport.py::test_viewport_set_position FAILED
> tests/test_viewport.py::test_viewport_hotspot PASSED
> tests/test_viewport.py::test_viewport_dithering PASSED
> 
> =================================== FAILURES ===================================
> ____________________________ test_canvas_background ____________________________
> 
>     def test_canvas_background():
>         img_path = get_reference_image('background.png')
>         with open(get_reference_image('dither.png'), 'rb') as p1:
>             with open(img_path, 'rb') as p2:
>                 bgnd = Image.open(p1)
>                 reference = Image.open(p2)
>                 device = dummy()
>     
>                 with canvas(device, background=bgnd) as draw:
>                     draw.rectangle((20, 15, device.width - 20, device.height - 15),
>                                    fill='black', outline='white')
>                     draw.text((36, 22), 'Background', fill='white')
>                     draw.text((52, 32), 'Test', fill='white')
>     
> >               assert_identical_image(reference, device.image, img_path)
> 
> tests/test_canvas.py:34: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=1 size=128x64 at 0x7F87B9276310>
> target = <PIL.Image.Image image mode=1 size=128x64 at 0x7F87B7B7C310>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/background.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/background.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> ______________________________ test_default_text _______________________________
> 
>     def test_default_text():
>         reference = 'quick_brown_fox.png'
>         device = dummy()
>         term = terminal(device)
>     
> >       assert_text(device, term, reference, [
>             "The quick brown fox jumps over the lazy dog"
>         ])
> 
> tests/test_terminal.py:40: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B58FB510>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B58FAE50>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/quick_brown_fox.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/quick_brown_fox.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> ______________________________ test_wrapped_text _______________________________
> 
>     def test_wrapped_text():
>         reference = 'quick_brown_fox_word_wrap.png'
>         device = dummy()
>         term = terminal(device, word_wrap=True, animate=False)
>     
> >       assert_text(device, term, reference, [
>             "The quick brown fox jumps over the lazy dog"
>         ])
> 
> tests/test_terminal.py:50: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B599A6D0>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B5998E50>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/quick_brown_fox_word_wrap.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/quick_brown_fox_word_wrap.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> ______________________________ test_tab_alignment ______________________________
> 
>     def test_tab_alignment():
>         reference = 'tab_align.png'
>         device = dummy()
>         term = terminal(device, animate=False)
>     
> >       assert_text(device, term, reference, [
>             "1\t32\t999",
>             "999\t1\t32"
>         ])
> 
> tests/test_terminal.py:60: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B58FDF90>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B57ADB10>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/tab_align.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/tab_align.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> ______________________________ test_control_chars ______________________________
> 
>     def test_control_chars():
>         reference = 'control_chars.png'
>         device = dummy()
>         term = terminal(device, animate=False)
>     
> >       assert_text(device, term, reference, [
>             'foo\rbar\bspam\teggs\n\nham and cheese on rye'
>         ])
> 
> tests/test_terminal.py:71: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B5787390>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B5786C50>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/control_chars.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/control_chars.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> ________________________________ test_scrolling ________________________________
> 
>     def test_scrolling():
>         reference = 'scroll_text.png'
>         device = dummy()
>         term = terminal(device, animate=False)
>     
> >       assert_text(device, term, reference, [
>             "it oozed over the blackness, and heard Harris's sleepy voice asking "
>             "where we drew near it, so they spread their handkerchiefs on the back "
>             "of Harris and Harris's friend as to avoid running down which, we managed "
>             "to get out of here while this billing and cooing is on. We'll go down "
>             "to eat vegetables. He said they were demons."
>         ])
> 
> tests/test_terminal.py:81: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B590E250>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B590D750>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/scroll_text.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/scroll_text.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> _______________________________ test_alt_colors ________________________________
> 
>     def test_alt_colors():
>         reference = 'alt_colors.png'
>         device = dummy()
>         term = terminal(device, color="blue", bgcolor="grey", animate=False)
>     
> >       assert_text(device, term, reference, [
>             "blue on grey"
>         ])
> 
> tests/test_terminal.py:95: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B57ADB90>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B57AC650>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/alt_colors.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/alt_colors.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> _______________________________ test_ansi_colors _______________________________
> 
>     def test_ansi_colors():
>         reference = 'ansi_colors.png'
>         device = dummy()
>         term = terminal(device, animate=False)
>     
> >       assert_text(device, term, reference, [
>             "hello \033[31mworld\033[0m ansi colors here!",
>             "this is \033[7mreversed\033[7m!",
>             "\033[44;37mBlue\033[0m \033[46;30mCyan"
>         ])
> 
> tests/test_terminal.py:105: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B57A2310>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B58D7F50>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> ___________________________ test_ansi_colors_wrapped ___________________________
> 
>     def test_ansi_colors_wrapped():
>         reference = 'ansi_colors_wrapped.png'
>         device = dummy()
>         term = terminal(device, word_wrap=True, animate=False)
>     
> >       assert_text(device, term, reference, [
>             "hello \033[31mworld\033[0m ansi colors\t\033[32mwrap\033[0m\t?",
>             "this is \033[7mreversed\033[7m!",
>             "\033[43;30mYellow\033[0m \033[45;37mMagenta"
>         ])
> 
> tests/test_terminal.py:117: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B584AA10>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B584A550>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors_wrapped.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors_wrapped.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> ___________________________ test_ansi_colors_scroll ____________________________
> 
>     def test_ansi_colors_scroll():
>         reference = 'ansi_colors_scroll.png'
>         device = dummy()
>         term = terminal(device, word_wrap=True, animate=False)
>     
> >       assert_text(device, term, reference, [
>             "hello \033[31mworld\033[0m ansi colors\t\033[32mwrap\033[0m\t?",
>             "this is \033[7mreversed\033[7m!",
>             "\033[43;30mYellow\033[0m \033[44;37mBlue abcdefg hijklmn",
>             "\033[41;30mRed\033[0m \033[42;37mGreen"
>         ])
> 
> tests/test_terminal.py:129: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> tests/test_terminal.py:32: in assert_text
>     assert_identical_image(reference, device.image, img_path)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B58FD450>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B58FD8D0>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors_scroll.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors_scroll.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> __________________________ test_viewport_set_position __________________________
> 
>     def test_viewport_set_position():
>         img_path = get_reference_image('set_position.png')
>     
>         with open(img_path, 'rb') as p:
>             reference = Image.open(p)
>             device = dummy()
>             virtual = viewport(device, 200, 200)
>     
>             # Use the same drawing primitives as the demo
>             with canvas(virtual) as draw:
>                 baseline_data.primitives(virtual, draw)
>     
>             virtual.set_position((20, 30))
>     
> >           assert_identical_image(reference, device.image, img_path)
> 
> tests/test_viewport.py:124: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at 0x7F87B58D85D0>
> target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B58D99D0>
> img_path = '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/set_position.png'
> 
>     def assert_identical_image(reference, target, img_path):
>         """
>         :param img_path: Location of image.
>         :type img_path: str
>         """
>         bbox = ImageChops.difference(reference, target).getbbox()
> >       assert bbox is None, f'{img_path} is not identical to generated image'
> E       AssertionError: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/set_position.png is not identical to generated image
> 
> tests/helpers.py:75: AssertionError
> =========================== short test summary info ============================
> SKIPPED [1] tests/test_bitbang.py:75: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [1] tests/test_bitmap_font.py:152: Skipped
> SKIPPED [1] tests/test_bitmap_font.py:169: Skipped
> SKIPPED [1] tests/test_bitmap_font.py:198: Skipped
> SKIPPED [1] tests/test_bitmap_font.py:219: Skipped
> SKIPPED [1] tests/test_bitmap_font.py:246: Skipped
> SKIPPED [1] tests/test_bitmap_font.py:262: Skipped
> SKIPPED [1] tests/test_character.py:16: Skipped
> SKIPPED [1] tests/test_character.py:25: Skipped
> SKIPPED [1] tests/test_cmdline.py:192: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [1] tests/test_cmdline.py:212: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [1] tests/test_cmdline.py:233: spidev is not supported on this platform: Linux
> SKIPPED [1] tests/test_cmdline.py:248: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [1] tests/test_cmdline.py:283: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [1] tests/test_cmdline.py:342: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [2] tests/helpers.py:66: spidev is not supported on this platform: Linux
> SKIPPED [1] tests/test_gpio_cs_spi.py:104: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [1] tests/test_linux_framebuffer_device.py:35: Skipped
> SKIPPED [5] tests/test_linux_framebuffer_device.py:83: Skipped
> SKIPPED [1] tests/test_parallel.py:83: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [1] tests/test_spi.py:103: RPi.GPIO is not supported on this platform: Linux
> SKIPPED [1] tests/test_terminal.py:138: Skipped
> ================== 11 failed, 172 passed, 27 skipped in 6.18s ==================
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build; python3.11 -m pytest tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2023/12/12/luma.core_2.4.0-1_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20231212;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20231212&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.



More information about the Pkg-electronics-devel mailing list