@@ -33,7 +33,7 @@ def setUpClass(cls):
3333 gc .stopMonitoring ()
3434 except Exception :
3535 pass
36-
36+
3737 @classmethod
3838 def tearDownClass (cls ):
3939 try :
@@ -371,7 +371,7 @@ def __del__(self):
371371 class Test_Resurrection (object ):
372372 def __init__ (self , name ):
373373 self .name = name
374-
374+
375375 def __repr__ (self ):
376376 return "<" + self .name + ">"
377377
@@ -385,7 +385,7 @@ def __del__(self):
385385 c = Test_Resurrection ("c" )
386386 c .a = a
387387 c .toResurrect = Test_Finalizable ("d" )
388-
388+
389389 del a
390390 del c
391391 self .assertNotEqual (gc .collect (), 0 )
@@ -552,7 +552,7 @@ def __del__(self):
552552 class Test_Resurrection (object ):
553553 def __init__ (self , name ):
554554 self .name = name
555-
555+
556556 def __repr__ (self ):
557557 return "<" + self .name + ">"
558558
@@ -566,7 +566,7 @@ def __del__(self):
566566 c = Test_Resurrection ("c" )
567567 c .a = a
568568 c .toResurrect = Test_Finalizable ("d" )
569-
569+
570570 del a
571571 del c
572572 self .assertNotEqual (gc .collect (), 0 )
@@ -616,31 +616,31 @@ def tearDownClass(cls):
616616 def test_raw_forced_delayedFinalization (self ):
617617 #print "test_raw_forced_delayedFinalization"
618618 comments = []
619-
619+
620620 class Test_JavaAbortFinalizable (Object ):
621621 def __init__ (self , name , toAbort ):
622622 self .name = name
623623 self .toAbort = toAbort
624-
624+
625625 def __repr__ (self ):
626626 return "<" + self .name + ">"
627-
627+
628628 def finalize (self ):
629629 gc .notifyPreFinalization ()
630630 comments .append ("del " + self .name )
631631 gc .abortDelayedFinalization (self .toAbort )
632632 gc .notifyPostFinalization ()
633-
633+
634634 class Test_Finalizable (object ):
635635 def __init__ (self , name ):
636636 self .name = name
637-
637+
638638 def __repr__ (self ):
639639 return "<" + self .name + ">"
640-
640+
641641 def __del__ (self ):
642642 comments .append ("del " + self .name )
643-
643+
644644 def callback (obj ):
645645 comments .append ("callback0" )
646646
@@ -666,12 +666,12 @@ def callback(obj):
666666 def test_raw_forced_delayedWeakrefCallback (self ):
667667 comments = []
668668 resurrected = []
669-
669+
670670 class Test_JavaResurrectFinalizable (Object ):
671671 def __init__ (self , name , toResurrect ):
672672 self .name = name
673673 self .toResurrect = toResurrect
674-
674+
675675 def __repr__ (self ):
676676 return "<" + self .name + ">"
677677
@@ -684,20 +684,20 @@ def finalize(self):
684684 # We manually restore weak references:
685685 gc .restoreWeakReferences (self .toResurrect )
686686 gc .notifyPostFinalization ()
687-
687+
688688 class Test_Finalizable (object ):
689689 def __init__ (self , name ):
690690 self .name = name
691-
691+
692692 def __repr__ (self ):
693693 return "<" + self .name + ">"
694-
694+
695695 def __del__ (self ):
696696 comments .append ("del " + self .name )
697-
697+
698698 def callback (obj ):
699699 comments .append ("callback" )
700-
700+
701701 a = Test_Finalizable ("a" )
702702 b = Test_JavaResurrectFinalizable ("b" , a )
703703 wa = weakref .ref (a , callback )
@@ -723,15 +723,15 @@ def callback(obj):
723723
724724 def test_raw_forced_delayed (self ):
725725 comments = []
726-
726+
727727 class Test_JavaAbortFinalizable (Object ):
728728 def __init__ (self , name , toAbort ):
729729 self .name = name
730730 self .toAbort = toAbort
731-
731+
732732 def __repr__ (self ):
733733 return "<" + self .name + ">"
734-
734+
735735 def finalize (self ):
736736 gc .notifyPreFinalization ()
737737 comments .append ("del " + self .name )
@@ -826,7 +826,7 @@ def __del__(self):
826826 class Test_Resurrection (object ):
827827 def __init__ (self , name ):
828828 self .name = name
829-
829+
830830 def __repr__ (self ):
831831 return "<" + self .name + ">"
832832
@@ -926,7 +926,7 @@ def __del__(self):
926926 class Test_Resurrection (object ):
927927 def __init__ (self , name ):
928928 self .name = name
929-
929+
930930 def __repr__ (self ):
931931 return "<" + self .name + ">"
932932
@@ -976,7 +976,7 @@ def __del__(self):
976976 class Test_Resurrection (object ):
977977 def __init__ (self , name ):
978978 self .name = name
979-
979+
980980 def __repr__ (self ):
981981 return "<" + self .name + ">"
982982
@@ -1035,7 +1035,7 @@ def __del__(self):
10351035 class Test_Resurrection (object ):
10361036 def __init__ (self , name ):
10371037 self .name = name
1038-
1038+
10391039 def __repr__ (self ):
10401040 return "<" + self .name + ">"
10411041
@@ -1071,18 +1071,18 @@ def __del__(self):
10711071 self .assertEqual (wc (), None )
10721072
10731073
1074- @unittest .skipUnless (test_support .is_jython ,
1075- '''
1076- The test involves Java-classes and is thus not supported by
1077- non-Jython interpreters.
1078- ''' )
1074+ @unittest .skipUnless (test_support .is_jython and test_support .get_java_version () < (9 ,),
1075+ "Test is specific to Java versions <9" )
1076+ # From Java 9 onwards we get ugly warnings.
1077+ # See discussion in http://bugs.jython.org/issue2656
10791078class GCTests_Jy_TraverseByReflection (unittest .TestCase ):
10801079
10811080 @classmethod
10821081 def setUpClass (cls ):
10831082 #Jython-specific block:
10841083 try :
10851084 cls .savedJythonGCFlags = gc .getJythonGCFlags ()
1085+ gc .removeJythonGCFlags (gc .DONT_TRAVERSE_BY_REFLECTION ) # i.e. enable ...
10861086 gc .addJythonGCFlags (gc .SUPPRESS_TRAVERSE_BY_REFLECTION_WARNING )
10871087 gc .setMonitorGlobal (True )
10881088 except Exception :
@@ -1096,25 +1096,32 @@ def tearDownClass(cls):
10961096 except Exception :
10971097 pass
10981098
1099- def test_TraverseByReflection (self ):
1099+ def test_Field (self ):
11001100 gc .collect ()
1101-
11021101 prt = GCTestHelper .reflectionTraverseTestField ()
11031102 del prt
11041103 self .assertEqual (gc .collect (), 1 )
11051104
1105+ def test_List (self ):
1106+ gc .collect ()
11061107 prt = GCTestHelper .reflectionTraverseTestList ()
11071108 del prt
11081109 self .assertEqual (gc .collect (), 1 )
11091110
1111+ def test_Array (self ):
1112+ gc .collect ()
11101113 prt = GCTestHelper .reflectionTraverseTestArray ()
11111114 del prt
11121115 self .assertEqual (gc .collect (), 1 )
11131116
1117+ def test_PyList (self ):
1118+ gc .collect ()
11141119 prt = GCTestHelper .reflectionTraverseTestPyList ()
11151120 del prt
11161121 self .assertEqual (gc .collect (), 2 )
11171122
1123+ def test_Cycle (self ):
1124+ gc .collect ()
11181125 prt = GCTestHelper .reflectionTraverseTestCycle ()
11191126 del prt
11201127 self .assertEqual (gc .collect (), 0 )
0 commit comments