Bug report
_not_tracked_instantly() requires the tuple to be untracked without a collection. This holds for tuples created at run time, but tuple constants are created tracked and are only untracked by _PyTuple_MaybeUntrack(), which is called only from the collector.
$ ./python -c "import gc; print(gc.is_tracked((1,)))"
True
So test_track_literals passes only if a collection happens between importing the module and running the test. Under regrtest it does not:
$ ./python -m test test_tuple -m test_track_literals
AssertionError: True is not false : (1,)
while ./python -m unittest test.test_tuple.TupleTest.test_track_literals passes.
Untracking tuple constants when the code object is created would let the test keep the stronger check.
Bug report
_not_tracked_instantly()requires the tuple to be untracked without a collection. This holds for tuples created at run time, but tuple constants are created tracked and are only untracked by_PyTuple_MaybeUntrack(), which is called only from the collector.So
test_track_literalspasses only if a collection happens between importing the module and running the test. Under regrtest it does not:while
./python -m unittest test.test_tuple.TupleTest.test_track_literalspasses.Untracking tuple constants when the code object is created would let the test keep the stronger check.