@@ -107,12 +107,27 @@ def test_tuple_make_single(self):
107107 self .assertEqual (make_single (None ), (None ,))
108108 self .assertEqual (make_single (True ), (True ,))
109109
110- temp = object ()
110+ # user class supports gc
111+ class Temp :
112+ pass
113+
114+ temp = Temp ()
111115 self .assertEqual (make_single (temp ), (temp ,))
112116
113117 self .assertRaises (TypeError , make_single , 1 , 2 )
114118 self .assertRaises (TypeError , make_single )
115119
120+ self .assertFalse (gc .is_tracked (make_single (1 )))
121+ self .assertFalse (gc .is_tracked (make_single (None )))
122+ self .assertFalse (gc .is_tracked (make_single (True )))
123+ self .assertTrue (gc .is_tracked (make_single (temp )))
124+ self .assertTrue (gc .is_tracked (make_single ([])))
125+ self .assertTrue (gc .is_tracked (make_single ({})))
126+
127+ # because we only check type for gc support can't untrack tuple of
128+ # immutable tuples, see maybe_tracked
129+ self .assertTrue (gc .is_tracked (make_single ((1 , 2 ))))
130+
116131 def test_tuple_make_pair (self ):
117132 # Test PyTuple_MakePair()
118133 make_pair = _testcapi .tuple_make_pair
@@ -121,13 +136,27 @@ def test_tuple_make_pair(self):
121136 self .assertEqual (make_pair (None , None ), (None , None ))
122137 self .assertEqual (make_pair (True , False ), (True , False ))
123138
124- temp = object ()
139+ # user class supports gc
140+ class Temp :
141+ pass
142+ temp = Temp ()
125143 self .assertEqual (make_pair (temp , temp ), (temp , temp ))
126144
127145 self .assertRaises (TypeError , make_pair , 1 , 2 , 3 )
128146 self .assertRaises (TypeError , make_pair , 1 )
129147 self .assertRaises (TypeError , make_pair )
130148
149+ self .assertFalse (gc .is_tracked (make_pair (1 , 2 )))
150+ self .assertFalse (gc .is_tracked (make_pair (None , None )))
151+ self .assertFalse (gc .is_tracked (make_pair (True , False )))
152+ self .assertTrue (gc .is_tracked (make_pair (temp , (1 , 2 ))))
153+ self .assertTrue (gc .is_tracked (make_pair (temp , 1 )))
154+ self .assertTrue (gc .is_tracked (make_pair ([], {})))
155+
156+ # because we only check type for gc support can't untrack tuple of
157+ # immutable tuples, see maybe_tracked
158+ self .assertTrue (gc .is_tracked (make_pair ((1 , 2 ), (1 , 2 ))))
159+
131160 def test_tuple_size (self ):
132161 # Test PyTuple_Size()
133162 size = _testlimitedcapi .tuple_size
0 commit comments