Skip to content

Commit dcbd21c

Browse files
committed
Skip tests when missing dependencies
1 parent a33adda commit dcbd21c

5 files changed

Lines changed: 33 additions & 8 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "highdicom"
7-
version = "0.23.0"
7+
version = "0.24.0"
88
description = "High-level DICOM abstractions."
99
readme = "README.md"
1010
requires-python = ">=3.10"

src/highdicom/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.23.0'
1+
__version__ = '0.24.0'

tests/test_image.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,12 +1241,15 @@ def test_instantiation():
12411241

12421242

12431243
@pytest.mark.parametrize(
1244-
'f',
1244+
'f,dependency',
12451245
find_readable_images(),
12461246
)
1247-
def test_imread_all_test_files(f):
1247+
def test_imread_all_test_files(f, dependency):
12481248
# A simple test that the reads in all images in the pydicom test suite
12491249
# and gets a single frame
1250+
if dependency is not None:
1251+
pytest.importorskip(dependency)
1252+
12501253
im = imread(f)
12511254
im_lazy = imread(f, lazy_frame_retrieval=True)
12521255

tests/test_io.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,10 +278,13 @@ def test_extended_offsets(self):
278278

279279

280280
@pytest.mark.parametrize(
281-
'filename',
281+
'filename,dependency',
282282
find_readable_images(),
283283
)
284-
def test_all_images(filename):
284+
def test_all_images(filename, dependency):
285+
if dependency is not None:
286+
pytest.importorskip(dependency)
287+
285288
dataset = dcmread(filename)
286289
pixel_array = dataset.pixel_array
287290

tests/utils.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from pydicom.data import get_testdata_files
55
from pydicom.dataset import Dataset, FileMetaDataset
66
from pydicom.filereader import dcmread
7+
from pydicom import uid
78

89

910
from highdicom._module_utils import (
@@ -30,10 +31,15 @@ def write_and_read_dataset(dataset: Dataset):
3031
return dcmread(fp, force=True)
3132

3233

33-
def find_readable_images() -> list[str]:
34+
def find_readable_images() -> list[tuple[str, str | None]]:
3435
"""Get a list of all images in highdicom and pydicom test data that should
3536
be expected to work with image reading routines.
3637
38+
Returns a list of tuples (path, dependency), where path is the filepath,
39+
and dependency is either None if the file can be read using only required
40+
dependencies, or a str that can be used with pytest.importorskip if an
41+
optional dependency is required to decode pixel data.
42+
3743
"""
3844
# All pydicom test files
3945
all_files = get_testdata_files()
@@ -97,6 +103,19 @@ def find_readable_images() -> list[str]:
97103
if excluded:
98104
continue
99105

100-
files_to_use.append(f)
106+
dependency = None
107+
if dcm.file_meta.TransferSyntaxUID in (
108+
uid.JPEGExtended12Bit,
109+
uid.JPEGLosslessSV1,
110+
):
111+
dependency = "libjpeg"
112+
113+
if dcm.file_meta.TransferSyntaxUID in (
114+
uid.JPEG2000,
115+
uid.JPEG2000Lossless,
116+
):
117+
dependency = "openjpeg"
118+
119+
files_to_use.append((f, dependency))
101120

102121
return files_to_use

0 commit comments

Comments
 (0)