@@ -294,29 +294,55 @@ def test_anyOf(self):
294294 e = errors [0 ]
295295
296296 self .assertEqual (e .validator , "anyOf" )
297- self .assertEqual (e .schema_path , deque (["anyOf" ]))
298297 self .assertEqual (e .validator_value , schema ["anyOf" ])
299298 self .assertEqual (e .instance , instance )
300299 self .assertEqual (e .schema , schema )
300+ self .assertIsNone (e .parent )
301+
301302 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+
302310 self .assertEqual (len (e .context ), 2 )
303311
304312 e1 , e2 = sorted_errors (e .context )
305313
306314 self .assertEqual (e1 .validator , "minimum" )
307- self .assertEqual (e1 .schema_path , deque ([0 , "minimum" ]))
308315 self .assertEqual (e1 .validator_value , schema ["anyOf" ][0 ]["minimum" ])
309316 self .assertEqual (e1 .instance , instance )
310317 self .assertEqual (e1 .schema , schema ["anyOf" ][0 ])
318+ self .assertIs (e1 .parent , e )
319+
311320 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 )
313331
314332 self .assertEqual (e2 .validator , "type" )
315- self .assertEqual (e2 .schema_path , deque ([1 , "type" ]))
316333 self .assertEqual (e2 .validator_value , schema ["anyOf" ][1 ]["type" ])
317334 self .assertEqual (e2 .instance , instance )
318335 self .assertEqual (e2 .schema , schema ["anyOf" ][1 ])
336+ self .assertIs (e2 .parent , e )
337+
319338 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+
320346 self .assertEqual (len (e2 .context ), 0 )
321347
322348 def test_type (self ):
@@ -339,36 +365,61 @@ def test_type(self):
339365 e = errors [0 ]
340366
341367 self .assertEqual (e .validator , "type" )
342- self .assertEqual (e .schema_path , deque (["type" ]))
343368 self .assertEqual (e .validator_value , schema ["type" ])
344369 self .assertEqual (e .instance , instance )
345370 self .assertEqual (e .schema , schema )
371+ self .assertIsNone (e .parent )
372+
346373 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+
347381 self .assertEqual (len (e .context ), 2 )
348382
349383 e1 , e2 = sorted_errors (e .context )
350384
351385 self .assertEqual (e1 .validator , "type" )
352- self .assertEqual (e1 .schema_path , deque ([0 , "type" ]))
353386 self .assertEqual (e1 .validator_value , schema ["type" ][0 ]["type" ])
354387 self .assertEqual (e1 .instance , instance )
355388 self .assertEqual (e1 .schema , schema ["type" ][0 ])
389+ self .assertIs (e1 .parent , e )
390+
356391 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 )
358400
359401 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+
360411 self .assertEqual (
361- list (e2 .schema_path ),
362- [1 , "properties" , "foo" , "enum" ]
412+ e2 .schema_path , deque ([1 , "properties" , "foo" , "enum" ]),
363413 )
364414 self .assertEqual (
365- e2 .validator_value ,
366- schema ["type" ][1 ]["properties" ]["foo" ]["enum" ]
415+ e2 .relative_schema_path , deque ([1 , "properties" , "foo" , "enum" ]),
367416 )
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 )
372423
373424 def test_single_nesting (self ):
374425 instance = {"foo" : 2 , "bar" : [1 ], "baz" : 15 , "quux" : "spam" }
@@ -389,6 +440,16 @@ def test_single_nesting(self):
389440 self .assertEqual (e3 .path , deque (["baz" ]))
390441 self .assertEqual (e4 .path , deque (["foo" ]))
391442
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+
392453 self .assertEqual (e1 .validator , "minItems" )
393454 self .assertEqual (e2 .validator , "enum" )
394455 self .assertEqual (e3 .validator , "maximum" )
0 commit comments