@@ -924,23 +924,30 @@ def verify(self, result, obj=-1,
924924 except BufferError : # re-exporter does not provide full information
925925 return
926926 ex = result .obj if isinstance (result , memoryview ) else result
927- self .assertIs (m .obj , ex )
928- self .assertEqual (m .nbytes , expected_len )
929- self .assertEqual (m .itemsize , itemsize )
930- self .assertEqual (m .format , fmt )
931- self .assertEqual (m .readonly , readonly )
932- self .assertEqual (m .ndim , ndim )
933- self .assertEqual (m .shape , tuple (shape ))
934- if not (sliced and suboffsets ):
935- self .assertEqual (m .strides , tuple (strides ))
936- self .assertEqual (m .suboffsets , tuple (suboffsets ))
937-
938- n = 1 if ndim == 0 else len (lst )
939- self .assertEqual (len (m ), n )
940927
941- rep = result .tolist () if fmt else result .tobytes ()
942- self .assertEqual (rep , lst )
943- self .assertEqual (m , result )
928+ def check_memoryview (m , expected_readonly = readonly ):
929+ self .assertIs (m .obj , ex )
930+ self .assertEqual (m .nbytes , expected_len )
931+ self .assertEqual (m .itemsize , itemsize )
932+ self .assertEqual (m .format , fmt )
933+ self .assertEqual (m .readonly , expected_readonly )
934+ self .assertEqual (m .ndim , ndim )
935+ self .assertEqual (m .shape , tuple (shape ))
936+ if not (sliced and suboffsets ):
937+ self .assertEqual (m .strides , tuple (strides ))
938+ self .assertEqual (m .suboffsets , tuple (suboffsets ))
939+
940+ n = 1 if ndim == 0 else len (lst )
941+ self .assertEqual (len (m ), n )
942+
943+ rep = result .tolist () if fmt else result .tobytes ()
944+ self .assertEqual (rep , lst )
945+ self .assertEqual (m , result )
946+
947+ check_memoryview (m )
948+ with m .toreadonly () as mm :
949+ check_memoryview (mm , expected_readonly = True )
950+ m .tobytes () # Releasing mm didn't release m
944951
945952 def verify_getbuf (self , orig_ex , ex , req , sliced = False ):
946953 def simple_fmt (ex ):
0 commit comments