@@ -72,6 +72,7 @@ <h1>Source code for _pytest._code.code</h1><div class="highlight"><pre>
72
72
< span > </ span > < span class ="kn "> import</ span > < span class ="nn "> sys</ span >
73
73
< span class ="kn "> from</ span > < span class ="nn "> inspect</ span > < span class ="k "> import</ span > < span class ="n "> CO_VARARGS</ span > < span class ="p "> ,</ span > < span class ="n "> CO_VARKEYWORDS</ span >
74
74
< span class ="kn "> import</ span > < span class ="nn "> re</ span >
75
+ < span class ="kn "> from</ span > < span class ="nn "> weakref</ span > < span class ="k "> import</ span > < span class ="n "> ref</ span >
75
76
76
77
< span class ="kn "> import</ span > < span class ="nn "> py</ span >
77
78
< span class ="n "> builtin_repr</ span > < span class ="o "> =</ span > < span class ="nb "> repr</ span >
@@ -301,7 +302,7 @@ <h1>Source code for _pytest._code.code</h1><div class="highlight"><pre>
301
302
< span class ="k "> return</ span > < span class ="kc "> False</ span >
302
303
303
304
< span class ="k "> if</ span > < span class ="n "> py</ span > < span class ="o "> .</ span > < span class ="n "> builtin</ span > < span class ="o "> .</ span > < span class ="n "> callable</ span > < span class ="p "> (</ span > < span class ="n "> tbh</ span > < span class ="p "> ):</ span >
304
- < span class ="k "> return</ span > < span class ="n "> tbh</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _excinfo</ span > < span class ="p "> )</ span >
305
+ < span class ="k "> return</ span > < span class ="n "> tbh</ span > < span class ="p "> (</ span > < span class ="kc " > None </ span > < span class =" k " > if </ span > < span class =" bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _excinfo</ span > < span class ="ow " > is </ span > < span class =" kc " > None </ span > < span class =" k " > else </ span > < span class =" bp " > self </ span > < span class =" o " > . </ span > < span class =" n " > _excinfo </ span > < span class =" p "> () )</ span >
305
306
< span class ="k "> else</ span > < span class ="p "> :</ span >
306
307
< span class ="k "> return</ span > < span class ="n "> tbh</ span >
307
308
@@ -413,6 +414,7 @@ <h1>Source code for _pytest._code.code</h1><div class="highlight"><pre>
413
414
< span class ="n "> l</ span > < span class ="o "> .</ span > < span class ="n "> append</ span > < span class ="p "> (</ span > < span class ="n "> entry</ span > < span class ="o "> .</ span > < span class ="n "> frame</ span > < span class ="o "> .</ span > < span class ="n "> f_locals</ span > < span class ="p "> )</ span >
414
415
< span class ="k "> return</ span > < span class ="kc "> None</ span >
415
416
417
+
416
418
< span class ="n "> co_equal</ span > < span class ="o "> =</ span > < span class ="nb "> compile</ span > < span class ="p "> (</ span > < span class ="s1 "> '__recursioncache_locals_1 == __recursioncache_locals_2'</ span > < span class ="p "> ,</ span >
417
419
< span class ="s1 "> '?'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'eval'</ span > < span class ="p "> )</ span >
418
420
@@ -441,7 +443,7 @@ <h1>Source code for _pytest._code.code</h1><div class="highlight"><pre>
441
443
< span class ="c1 "> #: the exception type name</ span >
442
444
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> typename</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> type</ span > < span class ="o "> .</ span > < span class ="n "> __name__</ span >
443
445
< span class ="c1 "> #: the exception traceback (_pytest._code.Traceback instance)</ span >
444
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> traceback</ span > < span class ="o "> =</ span > < span class ="n "> _pytest</ span > < span class ="o "> .</ span > < span class ="n "> _code</ span > < span class ="o "> .</ span > < span class ="n "> Traceback</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> tb</ span > < span class ="p "> ,</ span > < span class ="n "> excinfo</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="p "> )</ span >
446
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> traceback</ span > < span class ="o "> =</ span > < span class ="n "> _pytest</ span > < span class ="o "> .</ span > < span class ="n "> _code</ span > < span class ="o "> .</ span > < span class ="n "> Traceback</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> tb</ span > < span class ="p "> ,</ span > < span class ="n "> excinfo</ span > < span class ="o "> =</ span > < span class ="n " > ref </ span > < span class =" p " > ( </ span > < span class =" bp "> self</ span > < span class ="p "> ) )</ span >
445
447
446
448
< span class ="k "> def</ span > < span class ="nf "> __repr__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
447
449
< span class ="k "> return</ span > < span class ="s2 "> "<ExceptionInfo </ span > < span class ="si "> %s</ span > < span class ="s2 "> tblen=</ span > < span class ="si "> %d</ span > < span class ="s2 "> >"</ span > < span class ="o "> %</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> typename</ span > < span class ="p "> ,</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> traceback</ span > < span class ="p "> ))</ span >
@@ -694,16 +696,23 @@ <h1>Source code for _pytest._code.code</h1><div class="highlight"><pre>
694
696
< span class ="n "> e</ span > < span class ="o "> =</ span > < span class ="n "> excinfo</ span > < span class ="o "> .</ span > < span class ="n "> value</ span >
695
697
< span class ="n "> descr</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
696
698
< span class ="k "> while</ span > < span class ="n "> e</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
697
- < span class ="n "> reprtraceback</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> repr_traceback</ span > < span class ="p "> (</ span > < span class ="n "> excinfo</ span > < span class ="p "> )</ span >
698
- < span class ="n "> reprcrash</ span > < span class ="o "> =</ span > < span class ="n "> excinfo</ span > < span class ="o "> .</ span > < span class ="n "> _getreprcrash</ span > < span class ="p "> ()</ span >
699
+ < span class ="k "> if</ span > < span class ="n "> excinfo</ span > < span class ="p "> :</ span >
700
+ < span class ="n "> reprtraceback</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> repr_traceback</ span > < span class ="p "> (</ span > < span class ="n "> excinfo</ span > < span class ="p "> )</ span >
701
+ < span class ="n "> reprcrash</ span > < span class ="o "> =</ span > < span class ="n "> excinfo</ span > < span class ="o "> .</ span > < span class ="n "> _getreprcrash</ span > < span class ="p "> ()</ span >
702
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
703
+ < span class ="c1 "> # fallback to native repr if the exception doesn't have a traceback:</ span >
704
+ < span class ="c1 "> # ExceptionInfo objects require a full traceback to work</ span >
705
+ < span class ="n "> reprtraceback</ span > < span class ="o "> =</ span > < span class ="n "> ReprTracebackNative</ span > < span class ="p "> (</ span > < span class ="n "> py</ span > < span class ="o "> .</ span > < span class ="n "> std</ span > < span class ="o "> .</ span > < span class ="n "> traceback</ span > < span class ="o "> .</ span > < span class ="n "> format_exception</ span > < span class ="p "> (</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="p "> ),</ span > < span class ="n "> e</ span > < span class ="p "> ,</ span > < span class ="kc "> None</ span > < span class ="p "> ))</ span >
706
+ < span class ="n "> reprcrash</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
707
+
699
708
< span class ="n "> repr_chain</ span > < span class ="o "> +=</ span > < span class ="p "> [(</ span > < span class ="n "> reprtraceback</ span > < span class ="p "> ,</ span > < span class ="n "> reprcrash</ span > < span class ="p "> ,</ span > < span class ="n "> descr</ span > < span class ="p "> )]</ span >
700
709
< span class ="k "> if</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> __cause__</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
701
710
< span class ="n "> e</ span > < span class ="o "> =</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> __cause__</ span >
702
- < span class ="n "> excinfo</ span > < span class ="o "> =</ span > < span class ="n "> ExceptionInfo</ span > < span class ="p "> ((</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="p "> ),</ span > < span class ="n "> e</ span > < span class ="p "> ,</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> __traceback__</ span > < span class ="p "> ))</ span >
711
+ < span class ="n "> excinfo</ span > < span class ="o "> =</ span > < span class ="n "> ExceptionInfo</ span > < span class ="p "> ((</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="p "> ),</ span > < span class ="n "> e</ span > < span class ="p "> ,</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> __traceback__</ span > < span class ="p "> ))</ span > < span class =" k " > if </ span > < span class =" n " > e </ span > < span class =" o " > . </ span > < span class =" n " > __traceback__ </ span > < span class =" k " > else </ span > < span class =" kc " > None </ span >
703
712
< span class ="n "> descr</ span > < span class ="o "> =</ span > < span class ="s1 "> 'The above exception was the direct cause of the following exception:'</ span >
704
713
< span class ="k "> elif</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> __context__</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
705
714
< span class ="n "> e</ span > < span class ="o "> =</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> __context__</ span >
706
- < span class ="n "> excinfo</ span > < span class ="o "> =</ span > < span class ="n "> ExceptionInfo</ span > < span class ="p "> ((</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="p "> ),</ span > < span class ="n "> e</ span > < span class ="p "> ,</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> __traceback__</ span > < span class ="p "> ))</ span >
715
+ < span class ="n "> excinfo</ span > < span class ="o "> =</ span > < span class ="n "> ExceptionInfo</ span > < span class ="p "> ((</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="p "> ),</ span > < span class ="n "> e</ span > < span class ="p "> ,</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> __traceback__</ span > < span class ="p "> ))</ span > < span class =" k " > if </ span > < span class =" n " > e </ span > < span class =" o " > . </ span > < span class =" n " > __traceback__ </ span > < span class =" k " > else </ span > < span class =" kc " > None </ span >
707
716
< span class ="n "> descr</ span > < span class ="o "> =</ span > < span class ="s1 "> 'During handling of the above exception, another exception occurred:'</ span >
708
717
< span class ="k "> else</ span > < span class ="p "> :</ span >
709
718
< span class ="n "> e</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
@@ -909,6 +918,7 @@ <h1>Source code for _pytest._code.code</h1><div class="highlight"><pre>
909
918
< span class ="k "> return</ span > < span class ="n "> x</ span >
910
919
< span class ="k "> return</ span > < span class ="n "> obj</ span >
911
920
921
+
912
922
< span class ="k "> if</ span > < span class ="n "> sys</ span > < span class ="o "> .</ span > < span class ="n "> version_info</ span > < span class ="p "> [:</ span > < span class ="mi "> 2</ span > < span class ="p "> ]</ span > < span class ="o "> >=</ span > < span class ="p "> (</ span > < span class ="mi "> 3</ span > < span class ="p "> ,</ span > < span class ="mi "> 5</ span > < span class ="p "> ):</ span > < span class ="c1 "> # RecursionError introduced in 3.5</ span >
913
923
< span class ="k "> def</ span > < span class ="nf "> is_recursion_error</ span > < span class ="p "> (</ span > < span class ="n "> excinfo</ span > < span class ="p "> ):</ span >
914
924
< span class ="k "> return</ span > < span class ="n "> excinfo</ span > < span class ="o "> .</ span > < span class ="n "> errisinstance</ span > < span class ="p "> (</ span > < span class ="n "> RecursionError</ span > < span class ="p "> )</ span > < span class ="c1 "> # noqa</ span >
0 commit comments