GNU bug report logs -
#51037
[PATCH] Make `print-level` & `print-length` customizable in ERT batch tests
Previous Next
Reported by: Michael <sp1ff <at> runbox.com>
Date: Tue, 5 Oct 2021 14:51:02 UTC
Severity: wishlist
Tags: patch
Fixed in version 29.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
+Gemini
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> Michael <sp1ff <at> runbox.com> writes:
>
>> Only when comparing _results_. Say I have test code like:
>>
>> (let ((a (<some complex list>)
>> (b (<another complex list>))))
>> ...
>> (should (equal a b))
>>
>> My changes would case the error message from the failed
>> `should`
>> invocation to print `a` & `b` more fully (i.e. with fewwer
>> ellipses).
>
> Ah, I see.
>
>> The backtrace logic is separate, and un-touched by my patch as
>> submitted (tho of course I can change that).
>
> Perhaps it would be better if the same variables affected both
> result
> printing and backtraces in the code that ert is testing.
I've run down a bit of a rabbit hole on this.
The issue: stack traces are printed by the `backtrace`
package. backtrace.el was authored by Gemini (which is why I've
added him to this thread). backtrace.el doesn't directly work in
terms of `print-le{ngth,vel}`: it defines a custom variable
`backtrace-line-length` and then adjusts print-level &
print-length in let bindings in order to:
1. try to respect the desired line length
2. not trigger bug 31919 (Lisp Debugger doesn't work when at
stack limit)
Bug 31919 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=31919>
occurs when the debugger is invoked in response to
`max-lisp-eval-depth` being exceeded. Since we're close the the
top of the stack already, a too-high setting of `print-level`
will cause backtraces to break.
Because of this arrangement, any attempt on the part of ert to
customize print-length & print-level comes to nothing--
`backtrace` will adjust them to satisfy conditions 1 & 2 above.
For myself, I was quite surprised to all learn this: I had to
spend a fair bit of time digging through the source to find out
what was happening to my settings for print-length &
print-level.
My personal incliniation is to remove the `backtrace-line-length`
variable entirely, and make the `debug` package responsible for
controlling print-level so as to avoid 31919. But that's me: is
there a compelling use-case for backtrace.el working in terms of
limiting line length rather than just using `print-le{ve,ength}`?
--
Michael <sp1ff <at> runbox.com>
This bug report was last modified 3 years and 172 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.