@@ -153,6 +153,8 @@ class TupleSubclass(tuple):
153
153
class DictSubclass (dict ):
154
154
pass
155
155
156
+ NONCONTIG_WRITABLE = memoryview (bytearray (b'noncontig' ))[::- 2 ]
157
+ NONCONTIG_READONLY = memoryview (b'noncontig' )[::- 2 ]
156
158
157
159
class Unsigned_TestCase (unittest .TestCase ):
158
160
def test_b (self ):
@@ -837,6 +839,8 @@ def test_y_star(self):
837
839
self .assertEqual (getargs_y_star (bytearray (b'bytearray' )), b'bytearray' )
838
840
self .assertEqual (getargs_y_star (memoryview (b'memoryview' )), b'memoryview' )
839
841
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 )
840
844
841
845
def test_y_hash (self ):
842
846
from _testcapi import getargs_y_hash
@@ -846,6 +850,9 @@ def test_y_hash(self):
846
850
self .assertRaises (TypeError , getargs_y_hash , bytearray (b'bytearray' ))
847
851
self .assertRaises (TypeError , getargs_y_hash , memoryview (b'memoryview' ))
848
852
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 )
849
856
850
857
def test_w_star (self ):
851
858
# getargs_w_star() modifies first and last byte
@@ -861,6 +868,8 @@ def test_w_star(self):
861
868
self .assertEqual (getargs_w_star (memoryview (buf )), b'[emoryvie]' )
862
869
self .assertEqual (buf , bytearray (b'[emoryvie]' ))
863
870
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 )
864
873
865
874
866
875
class String_TestCase (unittest .TestCase ):
@@ -893,6 +902,8 @@ def test_s_star(self):
893
902
self .assertEqual (getargs_s_star (bytearray (b'bytearray' )), b'bytearray' )
894
903
self .assertEqual (getargs_s_star (memoryview (b'memoryview' )), b'memoryview' )
895
904
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 )
896
907
897
908
def test_s_hash (self ):
898
909
from _testcapi import getargs_s_hash
@@ -902,6 +913,9 @@ def test_s_hash(self):
902
913
self .assertRaises (TypeError , getargs_s_hash , bytearray (b'bytearray' ))
903
914
self .assertRaises (TypeError , getargs_s_hash , memoryview (b'memoryview' ))
904
915
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 )
905
919
906
920
def test_s_hash_int (self ):
907
921
# "s#" without PY_SSIZE_T_CLEAN defined.
@@ -937,6 +951,8 @@ def test_z_star(self):
937
951
self .assertEqual (getargs_z_star (bytearray (b'bytearray' )), b'bytearray' )
938
952
self .assertEqual (getargs_z_star (memoryview (b'memoryview' )), b'memoryview' )
939
953
self .assertIsNone (getargs_z_star (None ))
954
+ self .assertRaises (BufferError , getargs_z_star , NONCONTIG_WRITABLE )
955
+ self .assertRaises (BufferError , getargs_z_star , NONCONTIG_READONLY )
940
956
941
957
def test_z_hash (self ):
942
958
from _testcapi import getargs_z_hash
@@ -946,6 +962,9 @@ def test_z_hash(self):
946
962
self .assertRaises (TypeError , getargs_z_hash , bytearray (b'bytearray' ))
947
963
self .assertRaises (TypeError , getargs_z_hash , memoryview (b'memoryview' ))
948
964
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 )
949
968
950
969
def test_es (self ):
951
970
from _testcapi import getargs_es
0 commit comments