Skip to content

Commit aad33d0

Browse files
committed
FIX: segfault in test and make test work
All code is from @karlch. Thanks for the snippet
1 parent d41e384 commit aad33d0

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,8 @@ def add_metadata_information_impl(path: str, content):
203203
_metadata = metadata.pyexiv2.ImageMetadata(path)
204204
_metadata.read()
205205

206-
for key, value in content.items():
207-
_metadata.__setitem__(key, value)
206+
for tag in content.values():
207+
_metadata[tag.key] = tag.value
208208

209209
_metadata.write()
210210

tests/unit/imutils/test_metadata.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -113,26 +113,39 @@ def metadata_content():
113113

114114

115115
@pytest.fixture()
116-
def dummy_image():
116+
def dummy_image(qapp, tmp_path):
117117
filename = "./image.jpg"
118-
Image.new(mode="RGB", size=(300, 300), color="red").save(filename)
119-
# QPixmap(*(300, 300)).save(filename)
118+
filename = str(tmp_path / "image.jpg")
119+
QPixmap(300, 300).save(filename)
120120
return filename
121121

122122

123123
@pytest.fixture
124-
def get_MetadataHandler(add_metadata_information, dummy_image, metadata_content):
124+
def metadata_handler(add_metadata_information, dummy_image, metadata_content):
125125
assert pyexiv2 is not None, "pyexiv2 required to add metadata information"
126126
add_metadata_information(dummy_image, metadata_content)
127127
return MetadataHandler(dummy_image)
128128

129129

130-
def test_MetadataHandler_fetch_key(get_MetadataHandler, metadata_content):
131-
handler = get_MetadataHandler
130+
@pytest.fixture
131+
def metadata_handler_piexif(dummy_image, metadata_handler):
132+
metadata_handler._ext_handler = metadata._ExternalKeyHandlerPiexif(dummy_image)
133+
return metadata_handler
134+
135+
136+
def test_metadatahandler_fetch_key(metadata_handler, metadata_content):
132137
for key, value in metadata_content.items():
133-
data = handler.fetch_key(key)
134-
assert data[0] == key
138+
fetched_key, _, fetched_value = metadata_handler.fetch_key(key)
139+
assert fetched_key == key
135140
try:
136-
assert data[2] == value.human_value
141+
assert fetched_value == value.human_value
137142
except AttributeError:
138-
assert data[2] == value.raw_value
143+
assert fetched_value == value.raw_value
144+
145+
146+
def test_metadatahandler_fetch_key_piexif(metadata_handler_piexif, metadata_content):
147+
for key, value in metadata_content.items():
148+
fetched_key, _, fetched_value = metadata_handler_piexif.fetch_key(key)
149+
short_key = key.rpartition(".")[-1]
150+
assert fetched_key == short_key
151+
assert fetched_value == value.raw_value

0 commit comments

Comments
 (0)