From: Arjan Molenaar <gaphor@gmail.com>
Date: Sun, 13 Jul 2025 19:41:53 +0200
Subject: Update refcount tests: in 3.14 less refcounts are done

Origin: upstream, 3.54.0, commit:0972c8b49040c08416648eca5ec9aac7a340666f
---
 tests/test_gobject.py           | 16 ++++++++++----
 tests/test_object_marshaling.py |  4 +++-
 tests/test_signal.py            | 48 ++++++++++++++++++++++++++++-------------
 3 files changed, 48 insertions(+), 20 deletions(-)

diff --git a/tests/test_gobject.py b/tests/test_gobject.py
index 1d29a7c..eaaf320 100644
--- a/tests/test_gobject.py
+++ b/tests/test_gobject.py
@@ -314,22 +314,30 @@ class TestPythonReferenceCounting(unittest.TestCase):
     def test_new_instance_has_two_refs(self):
         obj = GObject.GObject()
         if hasattr(sys, "getrefcount"):
-            self.assertEqual(sys.getrefcount(obj), 2)
+            self.assertEqual(
+                sys.getrefcount(obj), 2 if sys.version_info < (3, 14) else 1
+            )
 
     def test_new_instance_has_two_refs_using_gobject_new(self):
         obj = GObject.new(GObject.GObject)
         if hasattr(sys, "getrefcount"):
-            self.assertEqual(sys.getrefcount(obj), 2)
+            self.assertEqual(
+                sys.getrefcount(obj), 2 if sys.version_info < (3, 14) else 1
+            )
 
     def test_new_subclass_instance_has_two_refs(self):
         obj = A()
         if hasattr(sys, "getrefcount"):
-            self.assertEqual(sys.getrefcount(obj), 2)
+            self.assertEqual(
+                sys.getrefcount(obj), 2 if sys.version_info < (3, 14) else 1
+            )
 
     def test_new_subclass_instance_has_two_refs_using_gobject_new(self):
         obj = GObject.new(A)
         if hasattr(sys, "getrefcount"):
-            self.assertEqual(sys.getrefcount(obj), 2)
+            self.assertEqual(
+                sys.getrefcount(obj), 2 if sys.version_info < (3, 14) else 1
+            )
 
 
 class TestContextManagers(unittest.TestCase):
diff --git a/tests/test_object_marshaling.py b/tests/test_object_marshaling.py
index d52ff54..d162cd7 100644
--- a/tests/test_object_marshaling.py
+++ b/tests/test_object_marshaling.py
@@ -109,7 +109,9 @@ class TestVFuncsWithObjectArg(unittest.TestCase):
 
         gc.collect()
         if hasattr(sys, "getrefcount"):
-            self.assertEqual(sys.getrefcount(vfuncs), 2)
+            self.assertEqual(
+                sys.getrefcount(vfuncs), 2 if sys.version_info < (3, 14) else 1
+            )
         self.assertEqual(vfuncs.__grefcount__, 1)
 
         del vfuncs
diff --git a/tests/test_signal.py b/tests/test_signal.py
index 8a935fd..89a2c57 100644
--- a/tests/test_signal.py
+++ b/tests/test_signal.py
@@ -1415,18 +1415,24 @@ class _RefCountTestBase(object):
             return value // 2
 
         callback_ref = weakref.ref(callback)
-        self.assertEqual(sys.getrefcount(callback), 2)
+        self.assertEqual(
+            sys.getrefcount(callback), 2 if sys.version_info < (3, 14) else 1
+        )
 
         obj = self.Object()
-        obj.connect('sig-with-int64-prop', callback)
-        self.assertEqual(sys.getrefcount(callback), 3)
+        obj.connect("sig-with-int64-prop", callback)
+        self.assertEqual(
+            sys.getrefcount(callback), 3 if sys.version_info < (3, 14) else 2
+        )
 
         del callback
         self.assertEqual(sys.getrefcount(callback_ref()), 2)
 
         res = obj.emit('sig-with-int64-prop', 42)
         self.assertEqual(res, 21)
-        self.assertEqual(sys.getrefcount(callback_ref), 2)
+        self.assertEqual(
+            sys.getrefcount(callback_ref), 2 if sys.version_info < (3, 14) else 1
+        )
 
         del obj
         self.assertIsNone(callback_ref())
@@ -1437,18 +1443,24 @@ class _RefCountTestBase(object):
             return value // 2
 
         callback_ref = weakref.ref(callback)
-        self.assertEqual(sys.getrefcount(callback), 2)
+        self.assertEqual(
+            sys.getrefcount(callback), 2 if sys.version_info < (3, 14) else 1
+        )
 
         obj = self.Object()
-        handler_id = obj.connect('sig-with-int64-prop', callback)
-        self.assertEqual(sys.getrefcount(callback), 3)
+        handler_id = obj.connect("sig-with-int64-prop", callback)
+        self.assertEqual(
+            sys.getrefcount(callback), 3 if sys.version_info < (3, 14) else 2
+        )
 
         del callback
         self.assertEqual(sys.getrefcount(callback_ref()), 2)
 
         res = obj.emit('sig-with-int64-prop', 42)
         self.assertEqual(res, 21)
-        self.assertEqual(sys.getrefcount(callback_ref), 2)
+        self.assertEqual(
+            sys.getrefcount(callback_ref), 2 if sys.version_info < (3, 14) else 1
+        )
 
         obj.disconnect(handler_id)
         self.assertIsNone(callback_ref())
@@ -1459,18 +1471,24 @@ class _RefCountTestBase(object):
             return value // 2
 
         callback_ref = weakref.ref(callback)
-        self.assertEqual(sys.getrefcount(callback), 2)
+        self.assertEqual(
+            sys.getrefcount(callback), 2 if sys.version_info < (3, 14) else 1
+        )
 
         obj = self.Object()
-        obj.connect('sig-with-int64-prop', callback)
-        self.assertEqual(sys.getrefcount(callback), 3)
+        obj.connect("sig-with-int64-prop", callback)
+        self.assertEqual(
+            sys.getrefcount(callback), 3 if sys.version_info < (3, 14) else 2
+        )
 
         del callback
         self.assertEqual(sys.getrefcount(callback_ref()), 2)
 
         res = obj.emit('sig-with-int64-prop', 42)
         self.assertEqual(res, 21)
-        self.assertEqual(sys.getrefcount(callback_ref), 2)
+        self.assertEqual(
+            sys.getrefcount(callback_ref), 2 if sys.version_info < (3, 14) else 1
+        )
 
         obj.disconnect_by_func(callback_ref())
         self.assertIsNone(callback_ref())
@@ -1482,11 +1500,11 @@ class _RefCountTestBase(object):
 
         data = self.PyData()
         data_ref = weakref.ref(data)
-        self.assertEqual(sys.getrefcount(data), 2)
+        self.assertEqual(sys.getrefcount(data), 2 if sys.version_info < (3, 14) else 1)
 
         obj = self.Object()
-        obj.connect('sig-with-int64-prop', callback, data)
-        self.assertEqual(sys.getrefcount(data), 3)
+        obj.connect("sig-with-int64-prop", callback, data)
+        self.assertEqual(sys.getrefcount(data), 3 if sys.version_info < (3, 14) else 2)
 
         del data
         self.assertEqual(sys.getrefcount(data_ref()), 2)
