Skip to content

x2sys_cross tests fail on macOS-14 #3194

@seisman

Description

@seisman

https://github.blog/changelog/2024-04-01-macos-14-sonoma-is-generally-available-and-the-latest-macos-runner-image/

macos-latest has migrated from macOS-12 to macOS-14 in a few hours ago. All tests are good except x2sys_cross tests.

The failures are:

=================================== FAILURES ===================================
_________________ test_x2sys_cross_input_file_output_dataframe _________________

    @pytest.mark.usefixtures("mock_x2sys_home")
    @pytest.mark.xfail(
        condition=Version(__gmt_version__) < Version("6.5.0"),
        reason="Upstream bug fixed in https://github.com/GenericMappingTools/gmt/pull/8188",
    )
    def test_x2sys_cross_input_file_output_dataframe():
        """
        Run x2sys_cross by passing in a filename, and output internal crossovers to a
        pandas.DataFrame.
        """
        with TemporaryDirectory(prefix="X2SYS", dir=Path.cwd()) as tmpdir:
            tag = Path(tmpdir).name
            x2sys_init(tag=tag, fmtfile="xyz", force=True)
            output = x2sys_cross(tracks=["@tut_ship.xyz"], tag=tag, coe="i")
    
            assert isinstance(output, pd.DataFrame)
>           assert output.shape == (14338, 12)
E           assert (14374, 12) == (14338, 12)
E             
E             At index 0 diff: 14374 != 14338
E             
E             Full diff:
E               (
E             -     14338,
E             ?        ^^
E             +     14374,
E             ?        ^^
E                   12,
E               )

../pygmt/tests/test_x2sys_cross.py:76: AssertionError
----------------------------- Captured stderr call -----------------------------
Warning: ss [WARNING]: No time column, use dummy times
_______________ test_x2sys_cross_region_interpolation_numpoints ________________

    @pytest.mark.usefixtures("mock_x2sys_home")
    @pytest.mark.xfail(
        condition=Version(__gmt_version__) < Version("6.5.0"),
        reason="Upstream bug fixed in https://github.com/GenericMappingTools/gmt/pull/8188",
    )
    def test_x2sys_cross_region_interpolation_numpoints():
        """
        Test that x2sys_cross's region (R), interpolation (l) and numpoints (W) arguments
        work.
        """
        with TemporaryDirectory(prefix="X2SYS", dir=Path.cwd()) as tmpdir:
            tag = Path(tmpdir).name
            x2sys_init(tag=tag, fmtfile="xyz", force=True)
            output = x2sys_cross(
                tracks=["@tut_ship.xyz"],
                tag=tag,
                coe="i",
                region=[245, 250, 20, 25],
                interpolation="a",  # Akima spline interpolation
                numpoints=5,  # Use up to 5 data points in interpolation
            )
    
            assert isinstance(output, pd.DataFrame)
>           assert output.shape == (3882, 12)
E           assert (3894, 12) == (3882, 12)
E             
E             At index 0 diff: 3894 != 3882
E             
E             Full diff:
E               (
E             -     3882,
E             ?       ^^
E             +     3894,
E             ?       ^^
E                   12,
E               )

../pygmt/tests/test_x2sys_cross.py:224: AssertionError
----------------------------- Captured stderr call -----------------------------
Warning: ss [WARNING]: No time column, use dummy times
_________________________ test_x2sys_cross_trackvalues _________________________

    @pytest.mark.usefixtures("mock_x2sys_home")
    @pytest.mark.xfail(
        condition=Version(__gmt_version__) < Version("6.5.0"),
        reason="Upstream bug fixed in https://github.com/GenericMappingTools/gmt/pull/8188",
    )
    def test_x2sys_cross_trackvalues():
        """
        Test that x2sys_cross's trackvalues (Z) argument work.
        """
        with TemporaryDirectory(prefix="X2SYS", dir=Path.cwd()) as tmpdir:
            tag = Path(tmpdir).name
            x2sys_init(tag=tag, fmtfile="xyz", force=True)
            output = x2sys_cross(tracks=["@tut_ship.xyz"], tag=tag, trackvalues=True)
    
            assert isinstance(output, pd.DataFrame)
>           assert output.shape == (14338, 12)
E           assert (14374, 12) == (14338, 12)
E             
E             At index 0 diff: 14374 != 14338
E             
E             Full diff:
E               (
E             -     14338,
E             ?        ^^
E             +     14374,
E             ?        ^^
E                   12,
E               )

For reference, the data shapes were updated in PR #2986 after the upstream fix GenericMappingTools/gmt#8188.

In GenericMappingTools/gmt#8188, if (tx_a < ta_stop && tx_b < tb_stop) was changed to if (tx_a < ta_stop && tx_b <= tb_stop). I guess the floating-point comparison may be tricky and depend on the C compiler.

Metadata

Metadata

Assignees

No one assigned

    Labels

    maintenanceBoring but important stuff for the core devsupstreamBug or missing feature of upstream core GMT

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions