[bug#76594,v2,1/5] gnu: quilt: Respect #:tests? key in check phase.

Message ID CH3PR84MB3424D4E3D08B0FE26D0120F4C5B02@CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM
State New
Headers
Series [bug#76594,v2,1/5] gnu: quilt: Respect #:tests? key in check phase. |

Commit Message

Morgan Smith April 13, 2025, 2:57 p.m. UTC
  * gnu/packages/patchutils.scm (quilt): Respect #:tests? key in check phase.

Change-Id: Ie44938ee080f2ac6b3947899e9589174fd3c6446
---
 gnu/packages/patchutils.scm | 65 +++++++++++++++++++------------------
 1 file changed, 33 insertions(+), 32 deletions(-)
  

Comments

Liliana Marie Prikler April 13, 2025, 3:45 p.m. UTC | #1
Am Sonntag, dem 13.04.2025 um 10:57 -0400 schrieb Morgan Smith:
> * gnu/packages/patchutils.scm (quilt): Respect #:tests? key in check
> phase.
> 
> Change-Id: Ie44938ee080f2ac6b3947899e9589174fd3c6446
> ---
>  gnu/packages/patchutils.scm | 65 +++++++++++++++++++----------------
> --
>  1 file changed, 33 insertions(+), 32 deletions(-)
> 
> diff --git a/gnu/packages/patchutils.scm
> b/gnu/packages/patchutils.scm
> index 3cd3507b07..8ba227a3d3 100644
> --- a/gnu/packages/patchutils.scm
> +++ b/gnu/packages/patchutils.scm
> @@ -205,38 +205,39 @@ (define-public quilt
>                     ,(map cmd-path
>                           (list "find" "grep" "mkdir")))))))
>           (add-after 'compress-documentation 'check
> -           (lambda _
> -             (substitute* '("test/run" "test/edit.test")
> -               (("/bin/sh") (which "sh"))
> -               (("rm -rf") (string-append (which "rm") " -rf")))
> -             (substitute* "Makefile"
> -               (("^(PATH|QUILT_DIR).*" &)
> -                (string-append "#" &)) ; Test the installed 'quilt'
> -               (("export QUILT_DIR") "export")
> -               (("\\| sort") (string-append "| " (which "sort")))
> -               (("\\| sed") (string-append "| " (which "sed")))
> -               (("(chmod|touch)" &) (which &)))
> -             ;; Tests are scripts interpreted by `test/run` and may
> specify
> -             ;; the execution of several tools.  But PATH will be
> empty, so
> -             ;; rewrite with the full file name:
> -             (setenv "PATH" (string-append %output "/bin" ":"
> (getenv "PATH")))
> -             (substitute* (find-files "test" "\\.test$")
> -               (("([\\$\\|] )([[:graph:]]+)([[:blank:]\n]+)"
> -                 & > cmd <)
> -                (if (string=? cmd "zcat")
> -                    ;; The `zcat` program is a script, and it will
> not be able
> -                    ;; to invoke its `gzip` with PATH unset.  It's a
> simple
> -                    ;; script though, so just translate here:
> -                    (string-append > (which "gzip") " -cd " <)
> -                    (or (and=> (which cmd)
> -                               (lambda (p) (string-append > p <)))
> -                        &))))
> -             (let ((make (which "make")))
> -               ;; Assert the installed 'quilt' can find utilities it
> needs.
> -               (unsetenv "PATH")
> -               ;; Used by some tests for access to internal
> "scripts"
> -               (setenv "QUILT_DIR" (string-append %output
> "/share/quilt"))
> -               (invoke make "check")))))))
> +           (lambda* (#:key tests? #:allow-other-keys)
> +             (when tests?
> +               (substitute* '("test/run" "test/edit.test")
> +                 (("/bin/sh") (which "sh"))
> +                 (("rm -rf") (string-append (which "rm") " -rf")))
> +               (substitute* "Makefile"
> +                 (("^(PATH|QUILT_DIR).*" &)
> +                  (string-append "#" &)) ; Test the installed
> 'quilt'
> +                 (("export QUILT_DIR") "export")
> +                 (("\\| sort") (string-append "| " (which "sort")))
> +                 (("\\| sed") (string-append "| " (which "sed")))
> +                 (("(chmod|touch)" &) (which &)))
> +               ;; Tests are scripts interpreted by `test/run` and
> may specify
> +               ;; the execution of several tools.  But PATH will be
> empty, so
> +               ;; rewrite with the full file name:
> +               (setenv "PATH" (string-append %output "/bin" ":"
> (getenv "PATH")))
> +               (substitute* (find-files "test" "\\.test$")
> +                 (("([\\$\\|] )([[:graph:]]+)([[:blank:]\n]+)"
> +                   & > cmd <)
> +                  (if (string=? cmd "zcat")
> +                      ;; The `zcat` program is a script, and it will
> not be able
> +                      ;; to invoke its `gzip` with PATH unset.  It's
> a simple
> +                      ;; script though, so just translate here:
> +                      (string-append > (which "gzip") " -cd " <)
> +                      (or (and=> (which cmd)
> +                                 (lambda (p) (string-append > p <)))
> +                          &))))
Everything above this line should probably be done in a pre-check or
post-unpack phase.

> +               (let ((make (which "make")))
> +                 ;; Assert the installed 'quilt' can find utilities
> it needs.
> +                 (unsetenv "PATH")
> +                 ;; Used by some tests for access to internal
> "scripts"
> +                 (setenv "QUILT_DIR" (string-append %output
> "/share/quilt"))
> +                 (invoke make "check"))))))))
Could this be handled with arguments to make?

Cheers
  

Patch

diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 3cd3507b07..8ba227a3d3 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -205,38 +205,39 @@  (define-public quilt
                    ,(map cmd-path
                          (list "find" "grep" "mkdir")))))))
          (add-after 'compress-documentation 'check
-           (lambda _
-             (substitute* '("test/run" "test/edit.test")
-               (("/bin/sh") (which "sh"))
-               (("rm -rf") (string-append (which "rm") " -rf")))
-             (substitute* "Makefile"
-               (("^(PATH|QUILT_DIR).*" &)
-                (string-append "#" &)) ; Test the installed 'quilt'
-               (("export QUILT_DIR") "export")
-               (("\\| sort") (string-append "| " (which "sort")))
-               (("\\| sed") (string-append "| " (which "sed")))
-               (("(chmod|touch)" &) (which &)))
-             ;; Tests are scripts interpreted by `test/run` and may specify
-             ;; the execution of several tools.  But PATH will be empty, so
-             ;; rewrite with the full file name:
-             (setenv "PATH" (string-append %output "/bin" ":" (getenv "PATH")))
-             (substitute* (find-files "test" "\\.test$")
-               (("([\\$\\|] )([[:graph:]]+)([[:blank:]\n]+)"
-                 & > cmd <)
-                (if (string=? cmd "zcat")
-                    ;; The `zcat` program is a script, and it will not be able
-                    ;; to invoke its `gzip` with PATH unset.  It's a simple
-                    ;; script though, so just translate here:
-                    (string-append > (which "gzip") " -cd " <)
-                    (or (and=> (which cmd)
-                               (lambda (p) (string-append > p <)))
-                        &))))
-             (let ((make (which "make")))
-               ;; Assert the installed 'quilt' can find utilities it needs.
-               (unsetenv "PATH")
-               ;; Used by some tests for access to internal "scripts"
-               (setenv "QUILT_DIR" (string-append %output "/share/quilt"))
-               (invoke make "check")))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (substitute* '("test/run" "test/edit.test")
+                 (("/bin/sh") (which "sh"))
+                 (("rm -rf") (string-append (which "rm") " -rf")))
+               (substitute* "Makefile"
+                 (("^(PATH|QUILT_DIR).*" &)
+                  (string-append "#" &)) ; Test the installed 'quilt'
+                 (("export QUILT_DIR") "export")
+                 (("\\| sort") (string-append "| " (which "sort")))
+                 (("\\| sed") (string-append "| " (which "sed")))
+                 (("(chmod|touch)" &) (which &)))
+               ;; Tests are scripts interpreted by `test/run` and may specify
+               ;; the execution of several tools.  But PATH will be empty, so
+               ;; rewrite with the full file name:
+               (setenv "PATH" (string-append %output "/bin" ":" (getenv "PATH")))
+               (substitute* (find-files "test" "\\.test$")
+                 (("([\\$\\|] )([[:graph:]]+)([[:blank:]\n]+)"
+                   & > cmd <)
+                  (if (string=? cmd "zcat")
+                      ;; The `zcat` program is a script, and it will not be able
+                      ;; to invoke its `gzip` with PATH unset.  It's a simple
+                      ;; script though, so just translate here:
+                      (string-append > (which "gzip") " -cd " <)
+                      (or (and=> (which cmd)
+                                 (lambda (p) (string-append > p <)))
+                          &))))
+               (let ((make (which "make")))
+                 ;; Assert the installed 'quilt' can find utilities it needs.
+                 (unsetenv "PATH")
+                 ;; Used by some tests for access to internal "scripts"
+                 (setenv "QUILT_DIR" (string-append %output "/share/quilt"))
+                 (invoke make "check"))))))))
     (home-page "https://savannah.nongnu.org/projects/quilt/")
     (synopsis "Script for managing patches to software")
     (description