challenge: Display an overall summary.

* guix/scripts/challenge.scm (summarize-report-list): New procedure.
(guix-challenge): Use it.
* doc/guix.texi (Invoking guix challenge): Adjust command output in
example.
This commit is contained in:
Ludovic Courtès 2017-10-25 21:00:17 -07:00
parent d213cc8c7f
commit bf7dfb1f07
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 23 additions and 0 deletions

View file

@ -7276,6 +7276,13 @@ updating list of substitutes from 'https://guix.example.org'... 100.0%
local hash: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
https://hydra.gnu.org/nar/@dots{}-pius-2.1.1: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
https://guix.example.org/nar/@dots{}-pius-2.1.1: 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs
@dots{}
6,406 store items were analyzed:
- 4,749 (74.1%) were identical
- 525 (8.2%) differed
- 1,132 (17.7%) were inconclusive
@end smallexample
@noindent

View file

@ -210,6 +210,20 @@ (define (report-hashes item local narinfos)
(report (G_ "~a contents match:~%") item)
(report-hashes item local narinfos)))))
(define (summarize-report-list reports)
"Display the overall summary of REPORTS."
(let ((total (length reports))
(inconclusive (count comparison-report-inconclusive? reports))
(matches (count comparison-report-match? reports))
(discrepancies (count comparison-report-mismatch? reports)))
(report (G_ "~h store items were analyzed:~%") total)
(report (G_ " - ~h (~,1f%) were identical~%")
matches (* 100. (/ matches total)))
(report (G_ " - ~h (~,1f%) differed~%")
discrepancies (* 100. (/ discrepancies total)))
(report (G_ " - ~h (~,1f%) were inconclusive~%")
inconclusive (* 100. (/ inconclusive total)))))
;;;
;;; Command-line options.
@ -292,6 +306,8 @@ (define (guix-challenge . args)
(reports (compare-contents items urls)))
(for-each (cut summarize-report <> #:verbose? verbose?)
reports)
(report "\n")
(summarize-report-list reports)
(exit (cond ((any comparison-report-mismatch? reports) 2)
((every comparison-report-match? reports) 0)