@@ -153,6 +153,8 @@ class TupleSubclass(tuple):
153153class DictSubclass (dict ):
154154 pass
155155
156+ NONCONTIG_WRITABLE = memoryview (bytearray (b'noncontig' ))[::- 2 ]
157+ NONCONTIG_READONLY = memoryview (b'noncontig' )[::- 2 ]
156158
157159class Unsigned_TestCase (unittest .TestCase ):
158160 def test_b (self ):
@@ -837,6 +839,8 @@ def test_y_star(self):
837839 self .assertEqual (getargs_y_star (bytearray (b'bytearray' )), b'bytearray' )
838840 self .assertEqual (getargs_y_star (memoryview (b'memoryview' )), b'memoryview' )
839841 self .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
841845 def test_y_hash (self ):
842846 from _testcapi import getargs_y_hash
@@ -846,6 +850,9 @@ def test_y_hash(self):
846850 self .assertRaises (TypeError , getargs_y_hash , bytearray (b'bytearray' ))
847851 self .assertRaises (TypeError , getargs_y_hash , memoryview (b'memoryview' ))
848852 self .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
850857 def test_w_star (self ):
851858 # getargs_w_star() modifies first and last byte
@@ -861,6 +868,8 @@ def test_w_star(self):
861868 self .assertEqual (getargs_w_star (memoryview (buf )), b'[emoryvie]' )
862869 self .assertEqual (buf , bytearray (b'[emoryvie]' ))
863870 self .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):
893902 self .assertEqual (getargs_s_star (bytearray (b'bytearray' )), b'bytearray' )
894903 self .assertEqual (getargs_s_star (memoryview (b'memoryview' )), b'memoryview' )
895904 self .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
897908 def test_s_hash (self ):
898909 from _testcapi import getargs_s_hash
@@ -902,6 +913,9 @@ def test_s_hash(self):
902913 self .assertRaises (TypeError , getargs_s_hash , bytearray (b'bytearray' ))
903914 self .assertRaises (TypeError , getargs_s_hash , memoryview (b'memoryview' ))
904915 self .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
906920 def test_z (self ):
907921 from _testcapi import getargs_z
@@ -920,6 +934,8 @@ def test_z_star(self):
920934 self .assertEqual (getargs_z_star (bytearray (b'bytearray' )), b'bytearray' )
921935 self .assertEqual (getargs_z_star (memoryview (b'memoryview' )), b'memoryview' )
922936 self .assertIsNone (getargs_z_star (None ))
937+ self .assertRaises (BufferError , getargs_z_star , NONCONTIG_WRITABLE )
938+ self .assertRaises (BufferError , getargs_z_star , NONCONTIG_READONLY )
923939
924940 def test_z_hash (self ):
925941 from _testcapi import getargs_z_hash
@@ -929,6 +945,9 @@ def test_z_hash(self):
929945 self .assertRaises (TypeError , getargs_z_hash , bytearray (b'bytearray' ))
930946 self .assertRaises (TypeError , getargs_z_hash , memoryview (b'memoryview' ))
931947 self .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
933952 def test_es (self ):
934953 from _testcapi import getargs_es
0 commit comments