Skip to content

Commit e0a5284

Browse files
Skip more refcount tests if Python >= 3.14
Python 3.14 introduced optimisation of refcounts so they aren't incremented if Python knows the object is not going to be deleted. Disabling these tests is temporary until I have a Python 3.14 installation on which to develop better tests.
1 parent fe98ad0 commit e0a5284

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

tests/test_image.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,17 +121,21 @@ def test_Image(self):
121121
self.check_result(image.iccProfileDefined(), bool, False)
122122
# test data access
123123
image.readMetadata()
124-
self.assertEqual(sys.getrefcount(image), 2)
124+
if sys.version_info < (3, 14):
125+
self.assertEqual(sys.getrefcount(image), 2)
125126
view = image.data()
126-
self.assertEqual(sys.getrefcount(image), 3)
127+
if sys.version_info < (3, 14):
128+
self.assertEqual(sys.getrefcount(image), 3)
127129
self.check_result(view, memoryview, self.image_data)
128130
self.assertEqual(view.readonly, True)
129131
image.writeMetadata()
130-
self.assertEqual(sys.getrefcount(image), 2)
132+
if sys.version_info < (3, 14):
133+
self.assertEqual(sys.getrefcount(image), 2)
131134
with self.assertRaises(ValueError):
132135
view[0]
133136
del view
134-
self.assertEqual(sys.getrefcount(image), 2)
137+
if sys.version_info < (3, 14):
138+
self.assertEqual(sys.getrefcount(image), 2)
135139
# test other methods
136140
image.readMetadata()
137141
self.check_result(image.byteOrder(),

tests/test_preview.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ def test_PreviewImage(self):
5454
with preview.data() as data:
5555
self.check_result(data, memoryview, copy.data())
5656
self.assertEqual(data[:10], b'\xff\xd8\xff\xe0\x00\x10JFIF')
57-
self.assertEqual(sys.getrefcount(preview), 3)
57+
if sys.version_info < (3, 14):
58+
self.assertEqual(sys.getrefcount(preview), 3)
5859
del data
59-
self.assertEqual(sys.getrefcount(preview), 2)
60+
if sys.version_info < (3, 14):
61+
self.assertEqual(sys.getrefcount(preview), 2)
6062
with self.assertWarns(DeprecationWarning):
6163
self.assertEqual(memoryview(preview), copy.data())
6264
self.check_result(preview.extension(), str, '.jpg')

tests/test_types.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,11 @@ def test_DataBuf(self):
8484
with self.assertRaises(ValueError):
8585
view[0]
8686
view = buf.data()
87-
self.assertEqual(sys.getrefcount(buf), 3)
87+
if sys.version_info < (3, 14):
88+
self.assertEqual(sys.getrefcount(buf), 3)
8889
del view
89-
self.assertEqual(sys.getrefcount(buf), 2)
90+
if sys.version_info < (3, 14):
91+
self.assertEqual(sys.getrefcount(buf), 2)
9092

9193
def test_Rational(self):
9294
for type_ in (exiv2.Rational, exiv2.URational):

tests/test_value.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,11 @@ def do_common_string_tests(self, value, data):
131131
view = copy.data()
132132
self.assertIsInstance(view, memoryview)
133133
self.assertEqual(view[0], data[0])
134-
self.assertEqual(sys.getrefcount(copy), 3)
134+
if sys.version_info < (3, 14):
135+
self.assertEqual(sys.getrefcount(copy), 3)
135136
del view
136-
self.assertEqual(sys.getrefcount(copy), 2)
137+
if sys.version_info < (3, 14):
138+
self.assertEqual(sys.getrefcount(copy), 2)
137139

138140
def do_common_xmp_tests(self, value):
139141
with self.assertWarns(DeprecationWarning):
@@ -355,9 +357,11 @@ def check_data(value, data):
355357
self.assertEqual(view, data)
356358
with self.assertRaises(ValueError):
357359
self.assertEqual(view[0], data[0])
358-
self.assertEqual(sys.getrefcount(value), 3)
360+
if sys.version_info < (3, 14):
361+
self.assertEqual(sys.getrefcount(value), 3)
359362
del view
360-
self.assertEqual(sys.getrefcount(value), 2)
363+
if sys.version_info < (3, 14):
364+
self.assertEqual(sys.getrefcount(value), 2)
361365
else:
362366
copy = value.data()
363367
self.assertIsInstance(copy, bytearray)

0 commit comments

Comments
 (0)