bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#51037: [PATCH] Make `print-level` & `print-length` customizable in E


From: Michael
Subject: bug#51037: [PATCH] Make `print-level` & `print-length` customizable in ERT batch tests
Date: Mon, 22 Nov 2021 06:07:33 -0800
User-agent: mu4e 1.4.15; emacs 28.0.50


Filipp Gunbin <fgunbin@fastmail.fm> writes:

On 20/11/2021 08:49 -0800, Michael wrote:

On 19/11/2021 07:24 -0800, Michael wrote:

Lars Ingebrigtsen <larsi@gnus.org> writes:

Filipp Gunbin <fgunbin@fastmail.fm> writes:

The docstring for backtrace-line-length says: "If set to nil
or
zero,
backtrace mode will not abbreviate the forms it prints." So
the
above
sentence, which I removed, was indeed not true?  (a quick
look over
its usages confirmed that to me, but I'd like someone else to
check)

I think the intention is that a nil value of
backtrace-line-length
shouldn't limit the lengths -- but I haven't tested it.
Doesn't it
work?

Yes, I'm a bit lost, Filipp... what is your concern? And I
thought I *had* tested that.

That the docstring contained a sentence which is not true.  A
minor
issue, of course.  I give examples here:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=51037#117

(there was also fix of interactive spec of
`ert-run-tests-interactively',
but that's obvious I think)

Hey Filipp,

Note that _is_ true, as far as I know, and was intended to be
true before my patch, and I verified that it became true with my
patch :) Can you provide a test case that demonstrates it to be
not true?

Yes, here https://debbugs.gnu.org/cgi/bugreport.cgi?bug=51037#117, as I
wrote above..

Oh.... oh, my-- you are on to something here, Filipp. My
apologies for not seeing it sooner. The problem lies in:

(defun cl-print-to-string-with-limit (print-function value limit)
     ...
     (setq limit (and (natnump limit)
                      (not (zerop limit))
                      limit))
;; Since this is used by the debugger when stack space may be ;; limited, if you increase print-level here, add more depth in
     ;; call_debugger (bug#31919).
     (let* ((print-length (when limit (min limit 50)))
(print-level (when limit (min 8 (truncate (log limit)))))


backtrace uses this function to print each frame, and as you can
see, if called with `limit' set to nil, `print-le{vel,ength}`
will *not* keep their current values, they will *also* be set to
`nil`.

So, we could do either of:

   1. As Filipp suggests, just change the contract for
   `ert-batch-backtrace-line-length' to: if set to nil, you get
   full stack traces, period.

   2. change `cl-print-to-string-with-limit' to respect the
   existing values of `print-length' & `print-level' when
   `limit' is nil. Note that the only caller (in Emacs) of this
   function is the backtrace package.

I vote for option 2. What say you all?

--
Michael <sp1ff@pobox.com>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]