Files
TheRock/rocm-systems/projects/hipfile/python/tests
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00
..

hipFile Python binding tests

Unit tests for the high-level hipfile Python API.

They are fully hermetic: the compiled Cython extension hipfile._hipfile is replaced with a pure-Python fake injected into sys.modules before hipfile is imported, so the suite runs on any machine — no ROCm install, GPU, AIS-capable storage, or build step required. Filesystem access in the FileHandle tests is mocked (os.open / os.close).

Running

From the repository root within a virtual environment:

pip install pytest
cd projects/hipfile/python/tests
python3 -m pytest

Layout

File Covers
conftest.py Installs the fake hipfile._hipfile in sys.modules and exposes shared fixtures. Explains why the extension substrate is a fake (real ints + lambdas) rather than Mock/MagicMock.
test_enums.py OpError / FileHandleType — values track the extension, members stay distinct, membership checks.
test_error.py HipFileException — stored codes and __str__, including the HIP_DRIVER_ERROR branch.
test_driver.py Driver — open/close success and error, use_count delegation, context-manager open-then-close ordering.
test_buffer.py Buffer — null rejection, register/deregister success and error, no-op deregister, context manager.
test_file.py FileHandle — handle_type setter guards, fd cleanup on registration failure, idempotent close, and the parametrized read/write return-code contract.
test_properties.py get_version / driver_get_properties — success and error paths.

Notes

  • This is a unit suite only — it verifies the Python wrapper's contract, not real GPU/driver/filesystem I/O.
  • Per-test overrides use unittest.mock.patch.object on the consuming module (e.g. hipfile.driver.hipFileDriverOpen), since each module does from hipfile._hipfile import ... and holds its own reference.