Skip to content

Commit 1a46a79

Browse files
committed
pathfinder: share libnvcudla test skip helper
Move the libnvcudla.so skip logic into conftest so cudla and nvcudla tests use one shared rule. Keeping the helper in the pytest support layer avoids duplicate test code while still deferring the pathfinder import until the helper runs. Made-with: Cursor
1 parent 7c04302 commit 1a46a79

3 files changed

Lines changed: 17 additions & 20 deletions

File tree

cuda_pathfinder/tests/conftest.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,15 @@ def _append(message):
2929
request.config.custom_info.append(f"{request.node.name}: {message}")
3030

3131
return _append
32+
33+
34+
def skip_if_missing_libnvcudla_so(libname: str, *, timeout: float) -> None:
35+
if libname not in ("cudla", "nvcudla"):
36+
return
37+
# Keep the import inside the helper so unrelated import issues do not fail
38+
# pytest collection for the whole test suite.
39+
from cuda.pathfinder._dynamic_libs import load_nvidia_dynamic_lib as load_nvidia_dynamic_lib_module
40+
41+
if load_nvidia_dynamic_lib_module._loadable_via_canary_subprocess("nvcudla", timeout=timeout):
42+
return
43+
pytest.skip("libnvcudla.so is not loadable via canary subprocess on this host.")

cuda_pathfinder/tests/test_driver_lib_loading.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
run_load_nvidia_dynamic_lib_in_subprocess,
1717
)
1818

19-
from cuda.pathfinder._dynamic_libs import load_nvidia_dynamic_lib as load_nvidia_dynamic_lib_module
19+
from conftest import skip_if_missing_libnvcudla_so
2020
from cuda.pathfinder._dynamic_libs.lib_descriptor import LIB_DESCRIPTORS
2121
from cuda.pathfinder._dynamic_libs.load_dl_common import DynamicLibNotFoundError, LoadedDL
2222
from cuda.pathfinder._dynamic_libs.load_nvidia_dynamic_lib import (
@@ -41,14 +41,6 @@ def _make_loaded_dl(path, found_via):
4141
return LoadedDL(path, False, 0xDEAD, found_via)
4242

4343

44-
def _skip_if_missing_nvcudla_runtime(libname: str, *, timeout: float) -> None:
45-
if libname != "nvcudla":
46-
return
47-
if load_nvidia_dynamic_lib_module._loadable_via_canary_subprocess("nvcudla", timeout=timeout):
48-
return
49-
pytest.skip("libnvcudla.so is not loadable via canary subprocess on this host.")
50-
51-
5244
# ---------------------------------------------------------------------------
5345
# _load_driver_lib_no_cache
5446
# ---------------------------------------------------------------------------
@@ -156,7 +148,7 @@ def raise_child_process_failed():
156148
error_label="Load subprocess child process",
157149
)
158150
if payload.status == STATUS_NOT_FOUND:
159-
_skip_if_missing_nvcudla_runtime(libname, timeout=timeout)
151+
skip_if_missing_libnvcudla_so(libname, timeout=timeout)
160152
if STRICTNESS == "all_must_work":
161153
raise_child_process_failed()
162154
info_summary_append(f"Not found: {libname=!r}")

cuda_pathfinder/tests/test_load_nvidia_dynamic_lib.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
)
1212
from local_helpers import have_distribution
1313

14+
from conftest import skip_if_missing_libnvcudla_so
1415
from cuda.pathfinder import DynamicLibNotAvailableError, DynamicLibUnknownError, load_nvidia_dynamic_lib
1516
from cuda.pathfinder._dynamic_libs import load_nvidia_dynamic_lib as load_nvidia_dynamic_lib_module
1617
from cuda.pathfinder._dynamic_libs import supported_nvidia_libs
@@ -106,14 +107,6 @@ def _is_expected_load_nvidia_dynamic_lib_failure(libname):
106107
return False
107108

108109

109-
def _skip_if_missing_nvcudla_runtime(libname: str, *, timeout: float) -> None:
110-
if libname not in ("cudla", "nvcudla"):
111-
return
112-
if load_nvidia_dynamic_lib_module._loadable_via_canary_subprocess("nvcudla", timeout=timeout):
113-
return
114-
pytest.skip("libnvcudla.so is not loadable via canary subprocess on this host.")
115-
116-
117110
@pytest.mark.parametrize(
118111
"libname",
119112
supported_nvidia_libs.SUPPORTED_WINDOWS_DLLS if IS_WINDOWS else supported_nvidia_libs.SUPPORTED_LINUX_SONAMES,
@@ -128,7 +121,7 @@ def raise_child_process_failed():
128121
raise RuntimeError(build_child_process_failed_for_libname_message(libname, result))
129122

130123
if result.returncode != 0:
131-
_skip_if_missing_nvcudla_runtime(libname, timeout=timeout)
124+
skip_if_missing_libnvcudla_so(libname, timeout=timeout)
132125
raise_child_process_failed()
133126
assert not result.stderr
134127
payload = parse_dynamic_lib_subprocess_payload(
@@ -137,7 +130,7 @@ def raise_child_process_failed():
137130
error_label="Load subprocess child process",
138131
)
139132
if payload.status == STATUS_NOT_FOUND:
140-
_skip_if_missing_nvcudla_runtime(libname, timeout=timeout)
133+
skip_if_missing_libnvcudla_so(libname, timeout=timeout)
141134
if STRICTNESS == "all_must_work" and not _is_expected_load_nvidia_dynamic_lib_failure(libname):
142135
raise_child_process_failed()
143136
info_summary_append(f"Not found: {libname=!r}")

0 commit comments

Comments
 (0)