3
3
import pprint
4
4
5
5
import datetime
6
+ import re
6
7
import yaml .tokens
7
8
8
9
def execute (code ):
@@ -14,7 +15,7 @@ def _make_objects():
14
15
global MyLoader , MyDumper , MyTestClass1 , MyTestClass2 , MyTestClass3 , YAMLObject1 , YAMLObject2 , \
15
16
AnObject , AnInstance , AState , ACustomState , InitArgs , InitArgsWithState , \
16
17
NewArgs , NewArgsWithState , Reduce , ReduceWithState , Slots , MyInt , MyList , MyDict , \
17
- FixedOffset , today , execute
18
+ FixedOffset , today , execute , MyFullLoader
18
19
19
20
class MyLoader (yaml .Loader ):
20
21
pass
@@ -222,6 +223,9 @@ def tzname(self, dt):
222
223
def dst (self , dt ):
223
224
return datetime .timedelta (0 )
224
225
226
+ class MyFullLoader (yaml .FullLoader ):
227
+ state_blacklist_regexp = re .compile ('(^mymethod$|^wrong_.*$)' )
228
+
225
229
today = datetime .date .today ()
226
230
227
231
def _load_code (expression ):
@@ -274,6 +278,18 @@ def test_constructor_types(data_filename, code_filename, verbose=False):
274
278
275
279
test_constructor_types .unittest = ['.data' , '.code' ]
276
280
281
+ def test_subclass_blacklist_types (data_filename , verbose = False ):
282
+ _make_objects ()
283
+ try :
284
+ yaml .load (open (data_filename , 'rb' ).read (), MyFullLoader )
285
+ except yaml .YAMLError as exc :
286
+ if verbose :
287
+ print ("%s:" % exc .__class__ .__name__ , exc )
288
+ else :
289
+ raise AssertionError ("expected an exception" )
290
+
291
+ test_subclass_blacklist_types .unittest = ['.subclass_blacklist' ]
292
+
277
293
if __name__ == '__main__' :
278
294
import sys , test_constructor
279
295
sys .modules ['test_constructor' ] = sys .modules ['__main__' ]
0 commit comments