Skip to content

Commit bb54e2b

Browse files
committed
Test the mismatch warning messages again
1 parent 523e8ed commit bb54e2b

File tree

2 files changed

+40
-38
lines changed

2 files changed

+40
-38
lines changed

Diff for: pynetdicom/association.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -1892,10 +1892,13 @@ def send_c_store(
18921892
tsyntax.is_little_endian,
18931893
)
18941894
# `dataset` might also be created from scratch
1895-
ds_encoding = getattr(
1896-
dataset,
1897-
"original_encoding",
1898-
(dataset.is_implicit_VR, dataset.is_little_endian),
1895+
ds_encoding: tuple[bool | None, bool | None] = (
1896+
dataset.is_implicit_VR
1897+
if dataset.original_encoding[0] is None
1898+
else dataset.original_encoding[0],
1899+
dataset.is_little_endian
1900+
if dataset.original_encoding[1] is None
1901+
else dataset.original_encoding[1],
18991902
)
19001903
if None not in ds_encoding and ts_encoding != ds_encoding:
19011904
s = ("explicit VR", "implicit VR")[cast(bool, ds_encoding[0])]

Diff for: pynetdicom/tests/test_assoc.py

+33-34
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from pydicom import dcmread
2222
from pydicom.dataset import Dataset, FileMetaDataset
2323
from pydicom.uid import (
24+
generate_uid,
2425
ImplicitVRLittleEndian,
2526
ExplicitVRLittleEndian,
2627
JPEGBaseline8Bit,
@@ -1876,51 +1877,49 @@ def handle_store(event):
18761877
ae.add_requested_context(CTImageStorage, ImplicitVRLittleEndian)
18771878
ae.add_requested_context(CTImageStorage, ExplicitVRBigEndian)
18781879
assoc = ae.associate("localhost", 11112)
1879-
18801880
assert assoc.is_established
1881-
ds = dcmread(DATASET_PATH)
1882-
assert ds.is_little_endian
1883-
assert not ds.is_implicit_VR
1884-
assert ds.file_meta.TransferSyntaxUID == ExplicitVRLittleEndian
1885-
1886-
is_implicit_vr_warning = (
1887-
"'FileDataset.is_implicit_VR' will be removed in v4.0, set the "
1888-
"Transfer Syntax UID or use the 'implicit_vr' argument with "
1889-
r"FileDataset.save_as\(\) or dcmwrite\(\) instead"
1890-
)
1891-
1892-
is_little_endian_warning = (
1893-
"'FileDataset.is_little_endian' will be removed in v4.0, set the "
1894-
"Transfer Syntax UID or use the 'little_endian' argument with "
1895-
r"FileDataset.save_as\(\) or dcmwrite\(\) instead"
1896-
)
1897-
1898-
with pytest.warns(DeprecationWarning, match=is_implicit_vr_warning):
1899-
ds.is_implicit_VR = True
19001881

1901-
status = assoc.send_c_store(ds)
1902-
assert status.Status == 0x0000
1903-
1904-
with pytest.warns(DeprecationWarning, match=is_implicit_vr_warning):
1905-
ds.is_implicit_VR = False
1906-
with pytest.warns(DeprecationWarning, match=is_little_endian_warning):
1907-
ds.is_little_endian = False
1882+
ds = Dataset()
1883+
ds.SOPClassUID = CTImageStorage
1884+
ds.SOPInstanceUID = generate_uid()
1885+
file_meta = FileMetaDataset()
1886+
file_meta.TransferSyntaxUID = ExplicitVRLittleEndian
1887+
ds.file_meta = file_meta
1888+
1889+
with caplog.at_level(logging.WARNING, logger="pynetdicom"):
1890+
with pytest.warns(DeprecationWarning):
1891+
ds.is_implicit_VR = True
1892+
ds.is_little_endian = True
1893+
status = assoc.send_c_store(ds)
1894+
assert status.Status == 0x0000
19081895

1909-
status = assoc.send_c_store(ds)
1910-
assert status.Status == 0x0000
1896+
with pytest.warns(DeprecationWarning):
1897+
ds.is_implicit_VR = False
1898+
ds.is_little_endian = False
1899+
status = assoc.send_c_store(ds)
1900+
assert status.Status == 0x0000
19111901

1912-
with pytest.warns(DeprecationWarning, match=is_implicit_vr_warning):
1902+
assert (
1903+
"'dataset' is encoded as implicit VR little endian but the file "
1904+
"meta has a (0002,0010) Transfer Syntax UID of 'Explicit VR "
1905+
"Little Endian' - using 'Implicit VR Little Endian' instead"
1906+
) in caplog.text
1907+
assert (
1908+
"'dataset' is encoded as explicit VR big endian but the file "
1909+
"meta has a (0002,0010) Transfer Syntax UID of 'Explicit VR "
1910+
"Little Endian' - using 'Explicit VR Big Endian' instead"
1911+
) in caplog.text
1912+
1913+
with pytest.warns(DeprecationWarning):
19131914
ds.is_implicit_VR = False
1914-
with pytest.warns(DeprecationWarning, match=is_little_endian_warning):
19151915
ds.is_little_endian = True
19161916
ds.file_meta.TransferSyntaxUID = ImplicitVRLittleEndian
1917-
1918-
encoding_mismatch_msg = (
1917+
msg = (
19191918
"'dataset' is encoded as explicit VR little endian but the file "
19201919
r"meta has a \(0002,0010\) Transfer Syntax UID of 'Implicit VR "
19211920
"Little Endian' - please set an appropriate Transfer Syntax"
19221921
)
1923-
with pytest.raises(AttributeError, match=encoding_mismatch_msg):
1922+
with pytest.raises(AttributeError, match=msg):
19241923
status = assoc.send_c_store(ds)
19251924

19261925
assoc.release()

0 commit comments

Comments
 (0)