GenericMappingTools / GenericMappingTools/pygmt

x2sys_cross tests fail on macOS-14

Open
#3,194 2 comments 0 reactions 0 assignees View on GitHub
maintenance upstream
Dominant language
Python
Stars
874
Forks
255
Avg merge
1d 21h
Merged PRs (30d)
40

Description

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.

- Latest run with macOS-12: https://github.com/GenericMappingTools/pygmt/actions/runs/8792433777/job/24128565756
- Latest run with macOS-14: https://github.com/GenericMappingTools/pygmt/actions/runs/8792433777/job/24153784055

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 https://github.com/GenericMappingTools/pygmt/pull/2986 after the upstream fix https://github.com/GenericMappingTools/gmt/pull/8188.

In https://github.com/GenericMappingTools/gmt/pull/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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.