Skip to content

Adopt Ubuntu 24.04 image in GitHub Actions test workflow #161

@Stormheg

Description

@Stormheg

GitHub Actions is transitioning to a new runner image based on Ubuntu 24.04. When this image is used, the testsuite fails because there are issues with the Wand / ImageMagick integration. Expand the details below to see a full copy of the test log from GitHub Actions.

All our previous runs were using the Ubuntu 22.04 runner which had no issues.

 Image: ubuntu-24.04
 Version: 20250105.1.0
 Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20250105.1/images/ubuntu/Ubuntu2404-Readme.md
 Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20250105.1
Run coverage run --parallel-mode -m runtests

/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/coverage/core.py:70: CoverageWarning: sys.monitoring isn't available, using default core (no-sysmon)
  warn("sys.monitoring isn't available, using default core", slug="no-sysmon")
...............................................................................................................x............x..................................xx........x........................................E...x....x...EE..F.......
======================================================================
ERROR: test_save_as_avif (tests.test_wand.TestWandOperations)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/Willow/Willow/tests/test_wand.py", line 310, in test_save_as_avif
    return_value = self.image.save_as_avif(output)
  File "/home/runner/work/Willow/Willow/willow/plugins/wand.py", line 274, in save_as_avif
    converted.save(file=f)
  File "/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/wand/image.py", line 10202, in save
    file.write(self.make_blob())
TypeError: a bytes-like object is required, not 'NoneType'

======================================================================
ERROR: test_save_avif_lossless (tests.test_wand.TestWandOperations)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/Willow/Willow/tests/test_wand.py", line 327, in test_save_avif_lossless
    lossless_file = self.image.save_as_avif(io.BytesIO(), lossless=True)
  File "/home/runner/work/Willow/Willow/willow/plugins/wand.py", line 274, in save_as_avif
    converted.save(file=f)
  File "/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/wand/image.py", line 10202, in save
    file.write(self.make_blob())
TypeError: a bytes-like object is required, not 'NoneType'

======================================================================
ERROR: test_save_avif_quality (tests.test_wand.TestWandOperations)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/Willow/Willow/tests/test_wand.py", line 319, in test_save_avif_quality
    high_quality = self.image.save_as_avif(io.BytesIO(), quality=90)
  File "/home/runner/work/Willow/Willow/willow/plugins/wand.py", line 274, in save_as_avif
    converted.save(file=f)
  File "/opt/hostedtoolcache/Python/3.10.16/x64/lib/python3.10/site-packages/wand/image.py", line 10202, in save
    file.write(self.make_blob())
TypeError: a bytes-like object is required, not 'NoneType'

======================================================================
FAIL: test_save_webp_quality (tests.test_wand.TestWandOperations)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/Willow/Willow/tests/test_wand.py", line 380, in test_save_webp_quality
    self.assertTrue(low_quality.f.tell() < high_quality.f.tell())
AssertionError: False is not true

We must figure out what difference is causing the issue so we can adopt the Ubuntu 24.04 image. I already know the 24.04 image does not have ImageMagick installed by default, but apt install imagemagick results in the testsuite failure above.

Fortunately, the folks at GitHub have quite good documentation about what's installed in their images. Might be helpful.

See also #160

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions