1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-05-28 12:01:49 +02:00

lint: Add 'check-for-collisions' checker.

Suggested by Edouard Klein <edk@beaver-labs.com>.

* guix/profiles.scm (check-for-collisions): Export.
* guix/lint.scm (check-profile-collisions): New procedure.
(%local-checkers): Add 'profile-collisions' checker.
* tests/lint.scm ("profile-collisions: no warnings")
("profile-collisions: propagated inputs collide")
("profile-collisions: propagated inputs collide, store items"): New tests.
* doc/guix.texi (Invoking guix lint): Document it.
This commit is contained in:
Ludovic Courtès
2020-06-14 15:06:53 +02:00
parent 9acac9f9c6
commit 993023a28e
4 changed files with 78 additions and 0 deletions
+30
View File
@@ -353,6 +353,36 @@
(((and (? lint-warning?) first-warning) others ...)
(lint-warning-message first-warning))))
(test-equal "profile-collisions: no warnings"
'()
(check-profile-collisions (dummy-package "x")))
(test-equal "profile-collisions: propagated inputs collide"
"propagated inputs p0@1 and p0@2 collide"
(let* ((p0 (dummy-package "p0" (version "1")))
(p0* (dummy-package "p0" (version "2")))
(p1 (dummy-package "p1" (propagated-inputs `(("p0" ,p0)))))
(p2 (dummy-package "p2" (propagated-inputs `(("p1" ,p1)))))
(p3 (dummy-package "p3" (propagated-inputs `(("p0" ,p0*)))))
(p4 (dummy-package "p4" (propagated-inputs
`(("p2" ,p2) ("p3", p3))))))
(single-lint-warning-message
(check-profile-collisions p4))))
(test-assert "profile-collisions: propagated inputs collide, store items"
(string-match-or-error
"propagated inputs /[[:graph:]]+-p0-1 and /[[:graph:]]+-p0-1 collide"
(let* ((p0 (dummy-package "p0" (version "1")))
(p0* (dummy-package "p0" (version "1")
(inputs `(("x" ,(dummy-package "x"))))))
(p1 (dummy-package "p1" (propagated-inputs `(("p0" ,p0)))))
(p2 (dummy-package "p2" (propagated-inputs `(("p1" ,p1)))))
(p3 (dummy-package "p3" (propagated-inputs `(("p0" ,p0*)))))
(p4 (dummy-package "p4" (propagated-inputs
`(("p2" ,p2) ("p3", p3))))))
(single-lint-warning-message
(check-profile-collisions p4)))))
(test-equal "license: invalid license"
"invalid license field"
(single-lint-warning-message