@@ -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_s_hash_int (self ):
907921 # "s#" without PY_SSIZE_T_CLEAN defined.
@@ -937,6 +951,8 @@ def test_z_star(self):
937951 self .assertEqual (getargs_z_star (bytearray (b'bytearray' )), b'bytearray' )
938952 self .assertEqual (getargs_z_star (memoryview (b'memoryview' )), b'memoryview' )
939953 self .assertIsNone (getargs_z_star (None ))
954+ self .assertRaises (BufferError , getargs_z_star , NONCONTIG_WRITABLE )
955+ self .assertRaises (BufferError , getargs_z_star , NONCONTIG_READONLY )
940956
941957 def test_z_hash (self ):
942958 from _testcapi import getargs_z_hash
@@ -946,6 +962,9 @@ def test_z_hash(self):
946962 self .assertRaises (TypeError , getargs_z_hash , bytearray (b'bytearray' ))
947963 self .assertRaises (TypeError , getargs_z_hash , memoryview (b'memoryview' ))
948964 self .assertIsNone (getargs_z_hash (None ))
965+ # TypeError: must be read-only bytes-like object, not memoryview
966+ self .assertRaises (TypeError , getargs_z_hash , NONCONTIG_WRITABLE )
967+ self .assertRaises (TypeError , getargs_z_hash , NONCONTIG_READONLY )
949968
950969 def test_es (self ):
951970 from _testcapi import getargs_es
0 commit comments