@@ -579,19 +579,6 @@ def __buffer__(self, flags):
579579 view .release ()
580580 data .clear ()
581581
582- def test_comparison_blocks_gc_clear_during_buffer_callback (self ):
583- _testcapi = import_helper .import_module ('_testcapi' )
584- data = bytearray (b'abc' )
585- view = memoryview (data )
586-
587- class Other :
588- def __buffer__ (self , flags ):
589- _testcapi .clear_memoryview (view )
590- return memoryview (data )
591-
592- self .assertTrue (view == Other ())
593- self .assertEqual (view .tobytes (), b'abc' )
594-
595582 def test_comparison_releases_buffer_after_access (self ):
596583 data = bytearray (b'abc' )
597584 view = memoryview (data )
@@ -608,24 +595,6 @@ def __release_buffer__(self, buffer):
608595 self .assertIsNone (cm .unraisable )
609596 data .clear ()
610597
611- def test_assignment_blocks_release_during_index_callback (self ):
612- data = bytearray (b'abc' )
613- view = memoryview (data ).cast ('c' )
614- assert_raises = self .assertRaises
615-
616- class Index :
617- def __index__ (self ):
618- with assert_raises (BufferError ):
619- view .release ()
620- with assert_raises (BufferError ):
621- data .clear ()
622- return 0
623-
624- view [Index ()] = b'x'
625- self .assertEqual (data , b'xbc' )
626- view .release ()
627- data .clear ()
628-
629598 def test_assignment_releases_buffer_after_access (self ):
630599 data = bytearray (b'abc' )
631600 view = memoryview (data )
@@ -786,6 +755,17 @@ def test_gc_cleared_view(self):
786755 with self .assertRaisesRegex (ValueError , "released" ):
787756 view .tobytes ()
788757
758+ data = bytearray (b"abc" )
759+ view = memoryview (data )
760+
761+ class Other :
762+ def __buffer__ (self , flags ):
763+ _testcapi .clear_memoryview (view )
764+ return memoryview (data )
765+
766+ self .assertTrue (view == Other ())
767+ self .assertEqual (view .tobytes (), b"abc" )
768+
789769 def test_cast_order (self ):
790770 # gh-78959: cast(order=...) selects the result memory layout.
791771 b = bytearray (range (6 ))
@@ -992,6 +972,23 @@ def __bool__(self):
992972 m [0 ] = MyBool ()
993973 self .assertEqual (m .tobytes (), b'\xff ' * size )
994974
975+ data = bytearray (b'abc' )
976+ m = memoryview (data ).cast ('c' )
977+ assert_raises = self .assertRaises
978+
979+ class CatchingIndex :
980+ def __index__ (self ):
981+ with assert_raises (BufferError ):
982+ release ()
983+ with assert_raises (BufferError ):
984+ data .clear ()
985+ return 0
986+
987+ m [CatchingIndex ()] = b'x'
988+ self .assertEqual (data , b'xbc' )
989+ m .release ()
990+ data .clear ()
991+
995992 def test_buffer_reference_loop (self ):
996993 m = memoryview (b'abc' ).__buffer__ (0 )
997994 o = MyObject ()
0 commit comments