Subject: [bug#55845] [PATCH 1/1] ui: Improve pager selection logic when less is not installed.

From: Maxime Devos <[email-masked]>
Date: Fri, 10 Jun 2022 09:47:30 +0200

Taiju HIGASHI schreef op vr 10-06-2022 om 09:39 [+0900]:
> +     (with-environment-variables
> +         `(("PATH" ,dir))

Wait, looking at the definition of with-environment-variables, if PAGER
was set when running "make check" (try "GUIX_PAGER=less make check
TESTS=tests/ui.scm"), it will still be set when the test is run
(unverified).  Maybe it should be unset?  Proposal:

Change

                  (match-lambda
                    ((variable value)
                     (setenv variable value)

to

                  (match-lambda
                    ((variable #false)
                     (unsetenv variable))
                    ((variable value)
                     (setenv variable value)

and change the with-environment-variables to

   (with-environment-variables
      `(("PATH ,dir)
        ("PAGER" #false)
        ("GUIX_PAGER" #false))
      [...]).

and likewise for the other tests?

(string=? ((@@ (guix ui) find-available-pager)) "guix-pager")))))

Nitpick: find-available-pager is not an exported procedure, so due to
optimisations, it can dissappear (be inlined into call-with-paginated-
output-port).  So to be 100% robust, it needs to be exported, or a line

  (set! find-avaible-pager find-available-pager) ; used in tests/ui.scm

needs to be added in guix/ui.scm, or the tests needs to be adjusted
to always use with-paginated-output-port instead of
find-available-pager.

Otherwise, tests LGTM.

Greetings,
Maxime.