Skip to content

roslibpy (ros extra) never installed in CI, so TestRosTopicValidation is entirely skipped #80

Description

@petercorke

Found 2026-08-14 while wiring open3d test coverage into CI for #46.

`pyproject.toml`'s `ros` extra (`rosbags`, `roslibpy`, `websockets`) is never installed
anywhere in `.github/workflows/ci.yml` — only `pip install .[dev,tool]` runs. As a result,
the entire `TestRosTopicValidation` class in `tests/test_ros.py` (class-level
`@pytest.mark.skipif(not _roslibpy_importable, reason="roslibpy not installed")`) is silently
skipped on every CI run, including the three open3d-gated pointcloud-publish tests inside it
(`test_publish_pointcloud_uncoloured`, `test_publish_pointcloud_coloured`,
`test_publish_pointcloud_uses_explicit_timestamp`) — installing open3d alone does not unlock
these, since the class-level roslibpy gate short-circuits first.

Verified locally: with `roslibpy` not installed, `pytest tests/test_ros.py -k pointcloud -rs`
reports `SKIPPED ... roslibpy not installed` for all three, regardless of open3d's install
state.

Other `_rosbags_importable`-gated tests in the same file (`TestRosBagsIO` etc.) are presumably
similarly always-skipped, since `rosbags` isn't installed either — not independently verified
here, worth checking as part of the fix.

Fix

Add a CI leg (or a conditional install step, similar to the open3d pattern from #46/#78) that
installs `.[ros]` on at least one matrix leg, so the `ros`-extra-gated tests actually run
somewhere rather than being permanently invisible to CI.

Activity

  1. added
    tech-debtKnown technical debt / deferred cleanup, not a live bug
    on Aug 13, 2026
  2. petercorke commented on Oct 3, 2026

    @petercorke
    OwnerAuthor

    Update 2026-10-03, while checking open3d coverage for #110 (Python 3.14 + dropping the open3d <3.13 cap):

    • Confirmed in a clean venv with open3d 0.20.0 installed: the rosbags-gated tests are also skipped (tests/test_ros.py:94,98 "rosbags not installed"), and so is all of TestRosTopicLive (roslibpy or websockets not installed). So the "presumably similarly always-skipped" suspicion above is verified.
    • The three test_publish_pointcloud_* tests still skip on roslibpy not installed even with open3d present, as described.
    • After ci: add Python 3.14 to classifiers and test matrix #110, open3d is installed on the Ubuntu/OpenCV 5 legs for every Python version (3.10–3.14), so the only open3d tests CI really exercises are the two in tests/test_pointcloud.py plus the mvtbtool --test smoke test.
  3. petercorke commented on Oct 3, 2026

    @petercorke
    OwnerAuthor

    Fixed by #111: CI now installs .[ros] (rosbags, roslibpy, websockets) on the Ubuntu / OpenCV 5 legs, which also install open3d. The previously always-skipped tests now run — full suite went from 942 passed / 94 skipped to 999 passed / 37 skipped in a clean venv, including the three open3d-gated test_publish_pointcloud_* tests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtKnown technical debt / deferred cleanup, not a live bug

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions