~ chicken-core (chicken-5) c646d9fce514aac08b773126cb89b9878f19a597


commit c646d9fce514aac08b773126cb89b9878f19a597
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Mar 1 14:39:29 2017 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Wed Mar 1 14:39:29 2017 +0100

    chicken-install: only run tests for explicitly named eggs, exit immediately if tests fail

diff --git a/chicken-install.scm b/chicken-install.scm
index f3d6d2a8..5b4a7148 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -76,6 +76,7 @@
 (define no-install #f)
 (define list-versions-only #f)
 (define canonical-eggs '())
+(define tested-eggs '())
 (define dependencies '())
 (define checked-eggs '())
 (define run-tests #f)
@@ -86,7 +87,6 @@
 (define sudo-program (or (get-environment-variable "SUDO") "sudo"))
 (define update-module-db #f)
 (define purge-mode #f)
-(define tests-failed #f)
 (define keepfiles #f)
 (define print-repository #f)
   
@@ -787,7 +787,9 @@
               (unless no-install
                 (print "  installing " name)
                 (run-script dir iscript platform sudo: sudo-install))
-              (when run-tests (test-egg egg platform)))))
+              (when (and (member name tested-eggs)
+                         (not (test-egg egg platform)))
+                (exit 2)))))
         (when target-extension
           (let-values (((build install info) (compile-egg-info info platform 'target)))
             (let ((bscript (make-pathname dir name 
@@ -944,6 +946,8 @@
                  (map (lambda (fname)
                         (list (pathname-file fname) (current-directory) #f))
                    files))
+               (when run-tests
+                 (set! tested-eggs (map car canonical-eggs)))
                (retrieve-eggs '())
                (unless retrieve-only (install-eggs)))))
         (else
@@ -951,9 +955,10 @@
             (cond (list-versions-only (list-egg-versions eggs))
                   ;;XXX other actions...
                   (else 
+                    (when run-tests
+                      (set! tested-eggs (map (o car canonical) eggs)))
                     (retrieve-eggs eggs)
-                    (unless retrieve-only (install-eggs)))))))
-  (when tests-failed (exit 2)))
+                    (unless retrieve-only (install-eggs))))))))
   
 (define (usage code)
   (print #<<EOF
Trap