@@ -294,29 +294,55 @@ def test_anyOf(self):
294
294
e = errors [0 ]
295
295
296
296
self .assertEqual (e .validator , "anyOf" )
297
- self .assertEqual (e .schema_path , deque (["anyOf" ]))
298
297
self .assertEqual (e .validator_value , schema ["anyOf" ])
299
298
self .assertEqual (e .instance , instance )
300
299
self .assertEqual (e .schema , schema )
300
+ self .assertIsNone (e .parent )
301
+
301
302
self .assertEqual (e .path , deque ([]))
303
+ self .assertEqual (e .relative_path , deque ([]))
304
+ self .assertEqual (e .absolute_path , deque ([]))
305
+
306
+ self .assertEqual (e .schema_path , deque (["anyOf" ]))
307
+ self .assertEqual (e .relative_schema_path , deque (["anyOf" ]))
308
+ self .assertEqual (e .absolute_schema_path , deque (["anyOf" ]))
309
+
302
310
self .assertEqual (len (e .context ), 2 )
303
311
304
312
e1 , e2 = sorted_errors (e .context )
305
313
306
314
self .assertEqual (e1 .validator , "minimum" )
307
- self .assertEqual (e1 .schema_path , deque ([0 , "minimum" ]))
308
315
self .assertEqual (e1 .validator_value , schema ["anyOf" ][0 ]["minimum" ])
309
316
self .assertEqual (e1 .instance , instance )
310
317
self .assertEqual (e1 .schema , schema ["anyOf" ][0 ])
318
+ self .assertIs (e1 .parent , e )
319
+
311
320
self .assertEqual (e1 .path , deque ([]))
312
- self .assertEqual (len (e1 .context ), 0 )
321
+ self .assertEqual (e1 .absolute_path , deque ([]))
322
+ self .assertEqual (e1 .relative_path , deque ([]))
323
+
324
+ self .assertEqual (e1 .schema_path , deque ([0 , "minimum" ]))
325
+ self .assertEqual (e1 .relative_schema_path , deque ([0 , "minimum" ]))
326
+ self .assertEqual (
327
+ e1 .absolute_schema_path , deque (["anyOf" , 0 , "minimum" ]),
328
+ )
329
+
330
+ self .assertFalse (e1 .context )
313
331
314
332
self .assertEqual (e2 .validator , "type" )
315
- self .assertEqual (e2 .schema_path , deque ([1 , "type" ]))
316
333
self .assertEqual (e2 .validator_value , schema ["anyOf" ][1 ]["type" ])
317
334
self .assertEqual (e2 .instance , instance )
318
335
self .assertEqual (e2 .schema , schema ["anyOf" ][1 ])
336
+ self .assertIs (e2 .parent , e )
337
+
319
338
self .assertEqual (e2 .path , deque ([]))
339
+ self .assertEqual (e2 .relative_path , deque ([]))
340
+ self .assertEqual (e2 .absolute_path , deque ([]))
341
+
342
+ self .assertEqual (e2 .schema_path , deque ([1 , "type" ]))
343
+ self .assertEqual (e2 .relative_schema_path , deque ([1 , "type" ]))
344
+ self .assertEqual (e2 .absolute_schema_path , deque (["anyOf" , 1 , "type" ]))
345
+
320
346
self .assertEqual (len (e2 .context ), 0 )
321
347
322
348
def test_type (self ):
@@ -339,36 +365,61 @@ def test_type(self):
339
365
e = errors [0 ]
340
366
341
367
self .assertEqual (e .validator , "type" )
342
- self .assertEqual (e .schema_path , deque (["type" ]))
343
368
self .assertEqual (e .validator_value , schema ["type" ])
344
369
self .assertEqual (e .instance , instance )
345
370
self .assertEqual (e .schema , schema )
371
+ self .assertIsNone (e .parent )
372
+
346
373
self .assertEqual (e .path , deque ([]))
374
+ self .assertEqual (e .relative_path , deque ([]))
375
+ self .assertEqual (e .absolute_path , deque ([]))
376
+
377
+ self .assertEqual (e .schema_path , deque (["type" ]))
378
+ self .assertEqual (e .relative_schema_path , deque (["type" ]))
379
+ self .assertEqual (e .absolute_schema_path , deque (["type" ]))
380
+
347
381
self .assertEqual (len (e .context ), 2 )
348
382
349
383
e1 , e2 = sorted_errors (e .context )
350
384
351
385
self .assertEqual (e1 .validator , "type" )
352
- self .assertEqual (e1 .schema_path , deque ([0 , "type" ]))
353
386
self .assertEqual (e1 .validator_value , schema ["type" ][0 ]["type" ])
354
387
self .assertEqual (e1 .instance , instance )
355
388
self .assertEqual (e1 .schema , schema ["type" ][0 ])
389
+ self .assertIs (e1 .parent , e )
390
+
356
391
self .assertEqual (e1 .path , deque ([]))
357
- self .assertEqual (len (e1 .context ), 0 )
392
+ self .assertEqual (e1 .relative_path , deque ([]))
393
+ self .assertEqual (e1 .absolute_path , deque ([]))
394
+
395
+ self .assertEqual (e1 .schema_path , deque ([0 , "type" ]))
396
+ self .assertEqual (e1 .relative_schema_path , deque ([0 , "type" ]))
397
+ self .assertEqual (e1 .absolute_schema_path , deque (["type" , 0 , "type" ]))
398
+
399
+ self .assertFalse (e1 .context )
358
400
359
401
self .assertEqual (e2 .validator , "enum" )
402
+ self .assertEqual (e2 .validator_value , [2 ])
403
+ self .assertEqual (e2 .instance , 1 )
404
+ self .assertEqual (e2 .schema , {u"enum" : [2 ]})
405
+ self .assertIs (e2 .parent , e )
406
+
407
+ self .assertEqual (e2 .path , deque (["foo" ]))
408
+ self .assertEqual (e2 .relative_path , deque (["foo" ]))
409
+ self .assertEqual (e2 .absolute_path , deque (["foo" ]))
410
+
360
411
self .assertEqual (
361
- list (e2 .schema_path ),
362
- [1 , "properties" , "foo" , "enum" ]
412
+ e2 .schema_path , deque ([1 , "properties" , "foo" , "enum" ]),
363
413
)
364
414
self .assertEqual (
365
- e2 .validator_value ,
366
- schema ["type" ][1 ]["properties" ]["foo" ]["enum" ]
415
+ e2 .relative_schema_path , deque ([1 , "properties" , "foo" , "enum" ]),
367
416
)
368
- self .assertEqual (e2 .instance , instance ["foo" ])
369
- self .assertEqual (e2 .schema , schema ["type" ][1 ]["properties" ]["foo" ])
370
- self .assertEqual (e2 .path , deque (["foo" ]))
371
- self .assertEqual (len (e2 .context ), 0 )
417
+ self .assertEqual (
418
+ e2 .absolute_schema_path ,
419
+ deque (["type" , 1 , "properties" , "foo" , "enum" ]),
420
+ )
421
+
422
+ self .assertFalse (e2 .context )
372
423
373
424
def test_single_nesting (self ):
374
425
instance = {"foo" : 2 , "bar" : [1 ], "baz" : 15 , "quux" : "spam" }
@@ -389,6 +440,16 @@ def test_single_nesting(self):
389
440
self .assertEqual (e3 .path , deque (["baz" ]))
390
441
self .assertEqual (e4 .path , deque (["foo" ]))
391
442
443
+ self .assertEqual (e1 .relative_path , deque (["bar" ]))
444
+ self .assertEqual (e2 .relative_path , deque (["baz" ]))
445
+ self .assertEqual (e3 .relative_path , deque (["baz" ]))
446
+ self .assertEqual (e4 .relative_path , deque (["foo" ]))
447
+
448
+ self .assertEqual (e1 .absolute_path , deque (["bar" ]))
449
+ self .assertEqual (e2 .absolute_path , deque (["baz" ]))
450
+ self .assertEqual (e3 .absolute_path , deque (["baz" ]))
451
+ self .assertEqual (e4 .absolute_path , deque (["foo" ]))
452
+
392
453
self .assertEqual (e1 .validator , "minItems" )
393
454
self .assertEqual (e2 .validator , "enum" )
394
455
self .assertEqual (e3 .validator , "maximum" )
0 commit comments