@@ -153,6 +153,8 @@ class TupleSubclass(tuple):
153153class DictSubclass (dict ):
154154pass
155155
156+ NONCONTIG_WRITABLE = memoryview (bytearray (b'noncontig' ))[::- 2 ]
157+ NONCONTIG_READONLY = memoryview (b'noncontig' )[::- 2 ]
156158
157159class Unsigned_TestCase (unittest .TestCase ):
158160def test_b (self ):
@@ -837,6 +839,8 @@ def test_y_star(self):
837839self .assertEqual (getargs_y_star (bytearray (b'bytearray' )),b'bytearray' )
838840self .assertEqual (getargs_y_star (memoryview (b'memoryview' )),b'memoryview' )
839841self .assertRaises (TypeError ,getargs_y_star ,None )
842+ self .assertRaises (BufferError ,getargs_y_star ,NONCONTIG_WRITABLE )
843+ self .assertRaises (BufferError ,getargs_y_star ,NONCONTIG_READONLY )
840844
841845def test_y_hash (self ):
842846from _testcapi import getargs_y_hash
@@ -846,6 +850,9 @@ def test_y_hash(self):
846850self .assertRaises (TypeError ,getargs_y_hash ,bytearray (b'bytearray' ))
847851self .assertRaises (TypeError ,getargs_y_hash ,memoryview (b'memoryview' ))
848852self .assertRaises (TypeError ,getargs_y_hash ,None )
853+ # TypeError: must be read-only bytes-like object, not memoryview
854+ self .assertRaises (TypeError ,getargs_y_hash ,NONCONTIG_WRITABLE )
855+ self .assertRaises (TypeError ,getargs_y_hash ,NONCONTIG_READONLY )
849856
850857def test_w_star (self ):
851858# getargs_w_star() modifies first and last byte
@@ -861,6 +868,8 @@ def test_w_star(self):
861868self .assertEqual (getargs_w_star (memoryview (buf )),b'[emoryvie]' )
862869self .assertEqual (buf ,bytearray (b'[emoryvie]' ))
863870self .assertRaises (TypeError ,getargs_w_star ,None )
871+ self .assertRaises (TypeError ,getargs_w_star ,NONCONTIG_WRITABLE )
872+ self .assertRaises (TypeError ,getargs_w_star ,NONCONTIG_READONLY )
864873
865874
866875class String_TestCase (unittest .TestCase ):
@@ -893,6 +902,8 @@ def test_s_star(self):
893902self .assertEqual (getargs_s_star (bytearray (b'bytearray' )),b'bytearray' )
894903self .assertEqual (getargs_s_star (memoryview (b'memoryview' )),b'memoryview' )
895904self .assertRaises (TypeError ,getargs_s_star ,None )
905+ self .assertRaises (BufferError ,getargs_s_star ,NONCONTIG_WRITABLE )
906+ self .assertRaises (BufferError ,getargs_s_star ,NONCONTIG_READONLY )
896907
897908def test_s_hash (self ):
898909from _testcapi import getargs_s_hash
@@ -902,6 +913,9 @@ def test_s_hash(self):
902913self .assertRaises (TypeError ,getargs_s_hash ,bytearray (b'bytearray' ))
903914self .assertRaises (TypeError ,getargs_s_hash ,memoryview (b'memoryview' ))
904915self .assertRaises (TypeError ,getargs_s_hash ,None )
916+ # TypeError: must be read-only bytes-like object, not memoryview
917+ self .assertRaises (TypeError ,getargs_s_hash ,NONCONTIG_WRITABLE )
918+ self .assertRaises (TypeError ,getargs_s_hash ,NONCONTIG_READONLY )
905919
906920def test_z (self ):
907921from _testcapi import getargs_z
@@ -920,6 +934,8 @@ def test_z_star(self):
920934self .assertEqual (getargs_z_star (bytearray (b'bytearray' )),b'bytearray' )
921935self .assertEqual (getargs_z_star (memoryview (b'memoryview' )),b'memoryview' )
922936self .assertIsNone (getargs_z_star (None ))
937+ self .assertRaises (BufferError ,getargs_z_star ,NONCONTIG_WRITABLE )
938+ self .assertRaises (BufferError ,getargs_z_star ,NONCONTIG_READONLY )
923939
924940def test_z_hash (self ):
925941from _testcapi import getargs_z_hash
@@ -929,6 +945,9 @@ def test_z_hash(self):
929945self .assertRaises (TypeError ,getargs_z_hash ,bytearray (b'bytearray' ))
930946self .assertRaises (TypeError ,getargs_z_hash ,memoryview (b'memoryview' ))
931947self .assertIsNone (getargs_z_hash (None ))
948+ # TypeError: must be read-only bytes-like object, not memoryview
949+ self .assertRaises (TypeError ,getargs_z_hash ,NONCONTIG_WRITABLE )
950+ self .assertRaises (TypeError ,getargs_z_hash ,NONCONTIG_READONLY )
932951
933952def test_es (self ):
934953from _testcapi import getargs_es