diff --git a/.github/workflows/ci_tests.yaml b/.github/workflows/ci_tests.yaml index 44b6276ac58..6130568c006 100644 --- a/.github/workflows/ci_tests.yaml +++ b/.github/workflows/ci_tests.yaml @@ -57,12 +57,14 @@ jobs: fail-fast: false matrix: python-version: ['3.11', '3.13'] - os: [ubuntu-latest, macos-latest, windows-latest] + os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] # Is it a draft Pull Request (true or false)? isDraft: - ${{ github.event.pull_request.draft }} - # Only run three jobs on Ubuntu for draft PRs + # Only run jobs on Ubuntu for draft PRs exclude: + - os: ubuntu-24.04-arm + isDraft: true - os: macos-latest isDraft: true - os: windows-latest diff --git a/.github/workflows/ci_tests_dev.yaml b/.github/workflows/ci_tests_dev.yaml index 6932a0d520b..d5f859f4c5d 100644 --- a/.github/workflows/ci_tests_dev.yaml +++ b/.github/workflows/ci_tests_dev.yaml @@ -36,7 +36,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-24.04, macos-15, windows-2025] + os: [ubuntu-24.04, ubuntu-24.04-arm, macos-15, windows-2025] gmt_git_ref: [master] timeout-minutes: 30 defaults: diff --git a/.github/workflows/ci_tests_legacy.yaml b/.github/workflows/ci_tests_legacy.yaml index dd371d715b5..3df38326bef 100644 --- a/.github/workflows/ci_tests_legacy.yaml +++ b/.github/workflows/ci_tests_legacy.yaml @@ -34,7 +34,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-22.04, macos-13, windows-2019] + os: [ubuntu-22.04, ubuntu-22.04-arm, macos-13, windows-2019] gmt_version: ['6.4'] timeout-minutes: 30 defaults: diff --git a/pygmt/tests/test_contour.py b/pygmt/tests/test_contour.py index c359c1d124c..2cd2cc2c5ee 100644 --- a/pygmt/tests/test_contour.py +++ b/pygmt/tests/test_contour.py @@ -2,6 +2,7 @@ Test Figure.contour. """ +import platform from pathlib import Path import numpy as np @@ -30,6 +31,7 @@ def fixture_region(): @pytest.mark.mpl_image_compare +@pytest.mark.xfail(platform.machine() == "aarch64", reason="Fails on Linux ARM64") def test_contour_vec(region): """ Plot an x-centered gaussian kernel with different y scale. @@ -130,6 +132,7 @@ def test_contour_multiple_levels(region): @pytest.mark.mpl_image_compare(filename="test_contour_vec.png") +@pytest.mark.xfail(platform.machine() == "aarch64", reason="Fails on Linux ARM64") def test_contour_incols_transposed_data(region): """ Make sure that transposing the data matrix still produces a correct result with diff --git a/pygmt/tests/test_x2sys_cross.py b/pygmt/tests/test_x2sys_cross.py index 70f0c3cf003..50b9d5f3f86 100644 --- a/pygmt/tests/test_x2sys_cross.py +++ b/pygmt/tests/test_x2sys_cross.py @@ -3,6 +3,7 @@ """ import copy +import platform import sys from pathlib import Path from tempfile import TemporaryDirectory @@ -270,7 +271,7 @@ def test_x2sys_cross_region_interpolation_numpoints(): ) assert isinstance(output, pd.DataFrame) - if sys.platform == "darwin": + if platform.machine() in {"aarch64", "arm64"}: assert output.shape == (3894, 12) # Check crossover errors (z_X) and mean value of observables (z_M) npt.assert_allclose(output.z_X.mean(), -138.23215, rtol=1e-4) @@ -298,7 +299,7 @@ def test_x2sys_cross_trackvalues(): output = x2sys_cross(tracks=["@tut_ship.xyz"], tag=tag, trackvalues=True) assert isinstance(output, pd.DataFrame) - if sys.platform == "darwin": + if platform.machine() in {"aarch64", "arm64"}: assert output.shape == (14374, 12) # Check mean of track 1 values (z_1) and track 2 values (z_2) npt.assert_allclose(output.z_1.mean(), -2422.973372, rtol=1e-4)