lint: check-tests-true: Allow #:tests? #t for some build systems.

emacs-build-system sets #:tests? #f by default, so the linter shouldn't warn
if #:tests? #t is set for packages using emacs-build-system.  Likewise for
texlive-build-system.

* guix/lint.scm (check-tests-true): Do not warn if the build system
  is emacs-build-system or texlive-build-system.
* tests/lint.scm
  ("tests-true: #:tests? #t acceptable for emacs packages")
  ("tests-true: #:tests? #t acceptable for texlive packages"): New tests.

Fixes: <https://issues.guix.gnu.org/50299>
Reported-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
Maxime Devos 2022-03-04 13:00:56 +00:00 committed by Maxim Cournoyer
parent b769fe7f75
commit 88e44f7e16
No known key found for this signature in database
GPG Key ID: 1260E46482E63562
2 changed files with 32 additions and 0 deletions

View File

@ -34,6 +34,7 @@
#:use-module (guix store)
#:autoload (guix base16) (bytevector->base16-string)
#:use-module (guix base32)
#:use-module (guix build-system)
#:use-module (guix diagnostics)
#:use-module (guix download)
#:use-module (guix ftp-client)
@ -279,6 +280,16 @@ superfluous when building natively and incorrect when cross-compiling."
(eq? tests? #t))
(package-arguments package)))
(if (and (tests-explicitly-enabled?)
;; emacs-build-system sets #:tests? #f by default, therefore
;; writing #:tests? #t in package definitions using
;; emacs-build-system is reasonable. Likewise for
;; texlive-build-system.
;;
;; Compare the name of the build system instead of the build system
;; itself to avoid loading unnecessary modules when only a few
;; modules are linted.
(not (memq (build-system-name (package-build-system package))
'(emacs texlive)))
;; Some packages, e.g. gnutls, set #:tests?
;; differently depending on whether it is being
;; cross-compiled.

View File

@ -35,6 +35,8 @@
#:use-module (guix tests http)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system texlive)
#:use-module (guix build-system emacs)
#:use-module (guix build-system gnu)
#:use-module (guix packages)
#:use-module (guix lint)
@ -338,6 +340,25 @@
`(#:tests? ,(not (%current-target-system)))))))
(check-tests-true pkg)))
;; The emacs-build-system sets #:tests? #f by default.
(test-equal "tests-true: #:tests? #t acceptable for emacs packages"
'()
(let ((pkg (dummy-package "x"
(build-system emacs-build-system)
(arguments
`(#:tests? #t)))))
(check-tests-true pkg)))
;; Likewise, though the 'check' phase is deleted by default,
;; so #:tests? #t won't be useful by itself.
(test-equal "tests-true: #:tests? #t acceptable for texlive packages"
'()
(let ((pkg (dummy-package "x"
(build-system texlive-build-system)
(arguments
`(#:tests? #t)))))
(check-tests-true pkg)))
(test-equal "inputs: pkg-config is probably a native input"
"'pkg-config' should probably be a native input"
(single-lint-warning-message