@@ -152,6 +152,8 @@ class TupleSubclass(tuple):
152
152
class DictSubclass (dict ):
153
153
pass
154
154
155
+ NONCONTIG_WRITABLE = memoryview (bytearray (b'noncontig' ))[::- 2 ]
156
+ NONCONTIG_READONLY = memoryview (b'noncontig' )[::- 2 ]
155
157
156
158
class Unsigned_TestCase (unittest .TestCase ):
157
159
def test_b (self ):
@@ -836,6 +838,8 @@ def test_y_star(self):
836
838
self .assertEqual (getargs_y_star (bytearray (b'bytearray' )), b'bytearray' )
837
839
self .assertEqual (getargs_y_star (memoryview (b'memoryview' )), b'memoryview' )
838
840
self .assertRaises (TypeError , getargs_y_star , None )
841
+ self .assertRaises (BufferError , getargs_y_star , NONCONTIG_WRITABLE )
842
+ self .assertRaises (BufferError , getargs_y_star , NONCONTIG_READONLY )
839
843
840
844
def test_y_hash (self ):
841
845
from _testcapi import getargs_y_hash
@@ -845,6 +849,9 @@ def test_y_hash(self):
845
849
self .assertRaises (TypeError , getargs_y_hash , bytearray (b'bytearray' ))
846
850
self .assertRaises (TypeError , getargs_y_hash , memoryview (b'memoryview' ))
847
851
self .assertRaises (TypeError , getargs_y_hash , None )
852
+ # TypeError: must be read-only bytes-like object, not memoryview
853
+ self .assertRaises (TypeError , getargs_y_hash , NONCONTIG_WRITABLE )
854
+ self .assertRaises (TypeError , getargs_y_hash , NONCONTIG_READONLY )
848
855
849
856
def test_w_star (self ):
850
857
# getargs_w_star() modifies first and last byte
@@ -860,6 +867,8 @@ def test_w_star(self):
860
867
self .assertEqual (getargs_w_star (memoryview (buf )), b'[emoryvie]' )
861
868
self .assertEqual (buf , bytearray (b'[emoryvie]' ))
862
869
self .assertRaises (TypeError , getargs_w_star , None )
870
+ self .assertRaises (TypeError , getargs_w_star , NONCONTIG_WRITABLE )
871
+ self .assertRaises (TypeError , getargs_w_star , NONCONTIG_READONLY )
863
872
864
873
865
874
class String_TestCase (unittest .TestCase ):
@@ -892,6 +901,8 @@ def test_s_star(self):
892
901
self .assertEqual (getargs_s_star (bytearray (b'bytearray' )), b'bytearray' )
893
902
self .assertEqual (getargs_s_star (memoryview (b'memoryview' )), b'memoryview' )
894
903
self .assertRaises (TypeError , getargs_s_star , None )
904
+ self .assertRaises (BufferError , getargs_s_star , NONCONTIG_WRITABLE )
905
+ self .assertRaises (BufferError , getargs_s_star , NONCONTIG_READONLY )
895
906
896
907
def test_s_hash (self ):
897
908
from _testcapi import getargs_s_hash
@@ -901,6 +912,9 @@ def test_s_hash(self):
901
912
self .assertRaises (TypeError , getargs_s_hash , bytearray (b'bytearray' ))
902
913
self .assertRaises (TypeError , getargs_s_hash , memoryview (b'memoryview' ))
903
914
self .assertRaises (TypeError , getargs_s_hash , None )
915
+ # TypeError: must be read-only bytes-like object, not memoryview
916
+ self .assertRaises (TypeError , getargs_s_hash , NONCONTIG_WRITABLE )
917
+ self .assertRaises (TypeError , getargs_s_hash , NONCONTIG_READONLY )
904
918
905
919
def test_s_hash_int (self ):
906
920
# "s#" without PY_SSIZE_T_CLEAN defined.
@@ -936,6 +950,8 @@ def test_z_star(self):
936
950
self .assertEqual (getargs_z_star (bytearray (b'bytearray' )), b'bytearray' )
937
951
self .assertEqual (getargs_z_star (memoryview (b'memoryview' )), b'memoryview' )
938
952
self .assertIsNone (getargs_z_star (None ))
953
+ self .assertRaises (BufferError , getargs_z_star , NONCONTIG_WRITABLE )
954
+ self .assertRaises (BufferError , getargs_z_star , NONCONTIG_READONLY )
939
955
940
956
def test_z_hash (self ):
941
957
from _testcapi import getargs_z_hash
@@ -945,6 +961,9 @@ def test_z_hash(self):
945
961
self .assertRaises (TypeError , getargs_z_hash , bytearray (b'bytearray' ))
946
962
self .assertRaises (TypeError , getargs_z_hash , memoryview (b'memoryview' ))
947
963
self .assertIsNone (getargs_z_hash (None ))
964
+ # TypeError: must be read-only bytes-like object, not memoryview
965
+ self .assertRaises (TypeError , getargs_z_hash , NONCONTIG_WRITABLE )
966
+ self .assertRaises (TypeError , getargs_z_hash , NONCONTIG_READONLY )
948
967
949
968
def test_es (self ):
950
969
from _testcapi import getargs_es
0 commit comments