Changeset 20975 in project


Ignore:
Timestamp:
10/24/10 18:21:37 (11 years ago)
Author:
Mario Domenech Goulart
Message:

salmonella: doc checking, egg tests execution, warning section. Version bumped to 1.17

Location:
release/4/salmonella/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/4/salmonella/trunk/salmonella

    r20247 r20975  
    1515(define chicken-eggs-dir  (make-parameter (make-pathname `(,(current-directory) "chicken-eggs" "release")
    1616                                                         (->string major-version))))
     17(define wiki-dir          (make-parameter (make-pathname `(,(current-directory) "chicken-eggs" "wiki" "eggref")
     18                                                         (->string major-version))))
    1719(define chicken-install-args (make-parameter (lambda () (string-append " -prefix " (repo-test-dir) " -t local "
    1820                                                                       " -l " (chicken-eggs-dir)))))
     
    2527                        "CHICKEN_INCLUDE_PATH=" (make-pathname (repo-test-dir) "share/chicken")
    2628                        " "
    27                         "CHICKEN_REPOSITORY=" (repo-test-lib-dir)
    28                         )))
    29 
     29                        "CHICKEN_REPOSITORY=" (repo-test-lib-dir))))
    3030(define skip-eggs     (make-parameter '()))
    3131(define verbose       (make-parameter #f))
     
    4141(define css-file      (make-parameter #f))
    4242(define ->html        (make-parameter #f))
     43(define run-tests     (make-parameter #f))
     44(define salmonella-tests-dir (make-parameter "salmonella-tests"))
    4345
    4446(define (show . msg)
    4547  (when (verbose)
    46     (print "  " (string-concatenate (map ->string msg)))))
     48    (print "    " (string-concatenate (map ->string msg)))))
     49
     50(define (show-progress description proc)
     51  ;; Ignores `verbose'
     52  (display description)
     53  (flush-output)
     54  (let ((status (proc)))
     55    (print (string-pad
     56            (if (boolean? status)
     57                (if status "[ok]" "[error]")
     58                (conc "[" status "]"))
     59            (- 75 (string-length description))))))
    4760
    4861(define egg-information (make-parameter (lambda () #f)))
     
    8194 (repo-test-dir \"<path to repo-test-dir>\")    `pwd`/salmonella-repo
    8295 (chicken-eggs-dir \"<path to SVN dir>\")       `pwd`/chicken-eggs/release/4
     96 (wiki-dir \"<path to SVN dir>\")               `pwd`/chicken-eggs/wiki/eggref/4
    8397 (skip-eggs (list \"egg1\" \"egg2\" ...))         '()
    8498 (verbose <bool>)                               ##f
     
    99113 (->html \"filename\")                          ##f
    100114 (base-uri \"uri\")                             /
     115 (run-tests <bool>)                             ##f
    101116Example:
    102117
     
    139154
    140155(define (report egg status msg #!key (action 'egg-install)
    141                  (egg-install-info '()))
     156                                     (egg-install-info '()))
    142157  (with-output-to-file (logfile)
    143158    (lambda () (pp (list egg action status msg egg-install-info)))
     
    160175  csi: #(csi)
    161176  chicken-install: #(chicken-install)
     177  chicken-eggs-dir: #(chicken-eggs-dir)
     178  wiki-dir: #(wiki-dir)
    162179  repo-test-dir: #(repo-test-dir)
    163180  chicken-install-args: #((chicken-install-args))
     
    177194  ->html: #(->html)
    178195  base-uri: #(base-uri)
     196  run-tests: #(run-tests)
    179197EOF
    180198)))))
     
    241259(define (safe-car x) (and x (car x)))
    242260
     261;;; Egg tests
     262(define (save-excursion dir proc)
     263  (let ((current-dir (current-directory)))
     264    (change-directory dir)
     265    (let ((out (proc)))
     266      (change-directory current-dir)
     267      out)))
     268
     269(define (read-meta-file egg)
     270  (let ((egg (->string egg)))
     271    (with-input-from-file (make-pathname (list (salmonella-tests-dir) egg) egg "meta") read)))
     272
     273(define (test-dependencies egg)
     274  (or (and-let* ((d (assq 'test-depends (read-meta-file egg))))
     275        (cdr d))
     276      '()))
     277
     278(define (install-test-dependencies egg)
     279  (with-output-to-string
     280    (lambda ()
     281      (for-each (lambda (dep)
     282                  (let-values (((status output) (install-egg dep)))
     283                    output))
     284                (test-dependencies egg)))))
     285
     286(define (run-egg-tests egg)
     287  (let* ((tests-dir (make-pathname (list (salmonella-tests-dir) (->string egg)) "tests"))
     288         (run.scm (make-pathname tests-dir "run.scm")))
     289    (if (file-exists? run.scm)
     290        (save-excursion tests-dir
     291          (lambda ()
     292            (let-values (((status output) (system:system (env-vars) " " (csi) " -s run.scm")))
     293              (cons status output))))
     294        (cons 'no-tests 'no-tests))))
     295
     296(define (fetch-egg-source egg)
     297  (when (file-exists? (salmonella-tests-dir))
     298    (delete-path (salmonella-tests-dir)))
     299  (create-directory (salmonella-tests-dir))
     300  (save-excursion (salmonella-tests-dir)
     301    (lambda ()
     302      (let-values (((status output)
     303                    (system:system (conc (chicken-install) " -r -t local -l "
     304                                         (chicken-eggs-dir) " " egg))))
     305        (cons status output)))))
     306
    243307(define (main)
    244308  (let ((args (command-line-arguments)))
     
    299363                    (show "Deleting " egg " egg source (if it exists)...")
    300364                    (delete-eggs-source)
    301                     (display (string-append "Installing " egg))
    302                     (flush-output)
    303                     (let-values (((status output) (install-egg egg))
    304                                  ((_    egg-info-str) (egg-extension-information egg)))
     365                    (let-values (((status output)  (install-egg egg))
     366                                 ((_ egg-info-str) (egg-extension-information egg)))
    305367                        (let* ((egg-install-info   (read (open-input-string egg-info-str)))
    306368                               (egg-install-ver    (safe-car (alist-ref 'version egg-install-info)))
     
    310372                                                       (not egg-ver) (and (string? egg-ver) (string-null? egg-ver))
    311373                                                       (string=? (->string egg-install-ver) (->string egg-ver)))))
    312                             (print (string-pad
    313                                     (cond ((and egg-version-check (zero? status))
    314                                            (set! successful (cons egg successful))
    315                                            "[ok]")
    316                                           (else (set! fail (cons egg fail))
    317                                                 "[error]"))
    318                                     (- 50 (string-length egg))))
     374                            (show-progress
     375                             (string-append "Installing " egg)
     376                             (lambda ()
     377                               (cond ((and egg-version-check (zero? status))
     378                                      (set! successful (cons egg successful))
     379                                      #t)
     380                                     (else (set! fail (cons egg fail))
     381                                           #f))))
    319382                            (let ((messages
    320383                                   (string-append
    321384                                    output "\n"
    322385                                    (if (and (zero? status) (not egg-version-check))
    323                                         (sprintf "Salmonella error: mismatch between installed egg version ~a and declared egg version ~a\n"
    324                                                  egg-install-ver egg-ver)
     386                                        (let ((mismatch-msg
     387                                               (conc
     388                                                "Mismatch between installed egg version "
     389                                                egg-install-ver
     390                                                " and declared egg version " egg-ver "\n")))
     391                                          (report egg 1 mismatch-msg action: 'warning)
     392                                          mismatch-msg)
    325393                                        ""))))
    326                               (when (logfile) (report egg status messages
    327                                                       egg-install-info: egg-install-info))))))
     394                              ;; Report installation status
     395                              (when (logfile)
     396                                (report egg
     397                                        status
     398                                        messages
     399                                        egg-install-info: egg-install-info)))
     400
     401                            ;; Report doc status
     402                            (let ((doc-exists? (file-exists? (make-pathname (wiki-dir) egg))))
     403                              (report egg (if doc-exists? 0 1) "" action: 'doc-check))
     404
     405                            ;; Report tests status
     406                            (when (and (logfile) (run-tests) (zero? status))
     407                              (show-progress
     408                               (conc "    Running tests for " egg)
     409                               (lambda ()
     410                                 (fetch-egg-source egg)
     411                                 (let* ((test-deps-messages (install-test-dependencies egg))
     412                                        (test-status/messages (run-egg-tests egg))
     413                                        (test-status (car test-status/messages)))
     414                                   (report egg
     415                                           test-status
     416                                           (conc test-deps-messages "\n" (cdr test-status/messages))
     417                                           action: 'run-tests)
     418                                   (if (eq? test-status 'no-tests)
     419                                       'no-tests
     420                                       (zero? test-status)))))))))
    328421                    (set-installed egg)
    329422                    (show "Cleaning up " (repo-test-dir) "...")
    330423                    (clean-repo-test-dir)
    331424                    (create-repo-test-dir)
    332                     (init-repo)
    333                     ))
    334                 ((eggs))
    335                 ))))
     425                    (init-repo)))
     426                ((eggs))))))
    336427
    337428(define css-data
     
    391482
    392483(define alternate-odd/even
    393   (let ((current #f))
    394     (lambda ()
    395       (set! current (not current))
    396       (if current
    397           'even
    398           'odd))))
    399 
    400 (define (ws:make-table alist #!optional with-header)
     484  (let ((current #t))
     485    (lambda (#!optional reset)
     486      (if reset
     487          (set! current #t)
     488          (begin
     489            (set! current (not current))
     490            (if current
     491                'even
     492                'odd))))))
     493
     494(define (ws:make-table alist #!optional with-header no-zebra)
     495  (unless no-zebra (alternate-odd/even 'reset))
    401496  (table
    402497   (string-append
     
    406501    (string-intersperse
    407502     (map (lambda (line)
    408             (tr (string-intersperse (map td line) "") class: (alternate-odd/even)))
     503            (tr (string-intersperse (map td line) "") class: (if no-zebra #f (alternate-odd/even))))
    409504          (if with-header
    410505              (cdr alist)
     
    414509(define (report->html)
    415510
     511  (define log-data (with-input-from-file (logfile) read-file))
     512
     513  (define eggs-report (cdr log-data))
     514
     515  (define (log-egg log-line) (car log-line))
     516  (define (log-action log-line) (cadr log-line))
     517  (define (log-status log-line) (caddr log-line))
     518  (define (log-msg log-line) (cadddr log-line))
     519
     520  (define (select-by-egg/action egg action #!optional default)
     521    (let loop ((lines eggs-report))
     522      (if (null? lines)
     523          default
     524          (let ((line (car lines)))
     525            (if (and (equal? (log-egg line) egg)
     526                     (eq? (log-action line) action))
     527                line
     528                (loop (cdr lines)))))))
     529
     530  (define (select-by-action action)
     531    (filter (lambda (line)
     532              (eq? (log-action line) action))
     533            eggs-report))
     534
    416535  (define (link-egg-doc egg #!optional use-egg-name)
    417     (a (conc "http://wiki.call-cc.org/egg/" egg)
    418        (if use-egg-name (->string egg) "egg page")))
     536    (let ((doc-status (log-status (select-by-egg/action egg 'doc-check))))
     537      (if (zero? doc-status)
     538          (a (conc "http://wiki.call-cc.org/egg/" egg)
     539             (if use-egg-name (->string egg) "egg page"))
     540          "no doc")))
    419541
    420542  (define (link-egg-deps egg)
     
    430552
    431553  (define (egg-fail? egg eggs)
    432     (let ((egg-data (alist-ref (->string egg) eggs equal?)))
     554    (let ((egg-data (find (lambda (egg-data)
     555                            (and (equal? (car egg-data) egg)
     556                                 (eq? (cadr egg-data) 'egg-install)))
     557                          eggs)))
    433558      ;; some eggs are not explicitly tested, so have no status
    434559      (and egg-data (not (zero? (cadr egg-data))))))
     
    438563    (ws:make-table
    439564     (append
    440       (list (let ((h '("Egg" "Version" "Doc" "Dependencies")))
    441                      (if fail
    442                          (append h (list "Broken dependencies"))
    443                          h)))
    444       (map (lambda (egg-data)
    445              (let ((egg (car egg-data))
    446                    (status (caddr egg-data))
    447                    (output (cadddr egg-data)))
    448                ;; write the per-egg report
    449                (with-output-to-file (make-pathname (html-output) egg ".html")
    450                  (lambda ()
    451                    (print (ws:page
    452                            (string-append
    453                             (h1 egg)
    454                             (a (make-pathname (list (base-uri) (html-output)) egg ".html") "permalink")
    455                             (pre output))
    456                            css: css
    457                            page-title: egg))))
    458                ;; generate the eggs table
    459                (let ((version-str (lambda (egg-data)
    460                                     (or (and egg-data (let ((x (alist-ref 'version egg-data)))
    461                                                         (and x (car x)))) ""))))
    462                (map (lambda (info) (a (make-pathname '() egg ".html") info))
    463                     (let ((data
    464                            (list egg
    465                                  (let ((egg-data (alist-ref (string->symbol egg) ((egg-information)))))
    466                                   (version-str egg-data))
    467                                  (link-egg-doc egg)
    468                                  (link-egg-deps egg))))
    469                       (if fail
    470                           (append data (list (string-intersperse
    471                                               (map (cut link-egg-doc <> 'use-egg-name)
    472                                                    (filter (lambda (egg)
    473                                                              (egg-fail? egg eggs))
    474                                                            (egg-dependencies egg)))
    475                                               ", ")))
    476                           data))))))
    477            (sort eggs (lambda (s1 s2) (string< (car s1) (car s2))))))
     565      (list
     566       (append '("Egg" "Version" "Doc" "Dependencies")
     567               (if fail
     568                   (list "Broken dependencies")
     569                   '())
     570               (if fail ;; don't generate the "Tests" column if the installation failed
     571                   '()
     572                   (if (run-tests)
     573                       (list "Tests")
     574                       '()))))
     575      (filter-map
     576       (lambda (egg-data)
     577         (let* ((egg (car egg-data))
     578                (status (caddr egg-data))
     579                (output (cadddr egg-data))
     580                (action (cadr egg-data))
     581                (test-data (and (run-tests)
     582                                (find (lambda (item)
     583                                        (and (equal? (car item) egg)
     584                                             (eq? (cadr item) 'run-tests)))
     585                                      eggs)))
     586                (test-status (and test-data (caddr test-data)))
     587                (test-output (and test-data (cadddr test-data))))
     588           (and (eq? action 'egg-install)
     589                ;; write the per-egg report
     590                (with-output-to-file (make-pathname (html-output) egg ".html")
     591                  (lambda ()
     592                    (print (ws:page
     593                            (string-append
     594                             (h1 egg)
     595                             (a (make-pathname (list (base-uri) (html-output)) egg ".html") "permalink")
     596                             (pre output))
     597                            css: css
     598                            page-title: egg))))
     599                ;; write test output (if any)
     600                (with-output-to-file (make-pathname (list (html-output) "tests") egg ".html")
     601                  (lambda ()
     602                    (print (ws:page
     603                            (string-append
     604                             (h1 (conc "Test output for " egg))
     605                             (a (make-pathname (list (base-uri) (html-output) "tests") egg ".html") "permalink")
     606                             (pre test-output))
     607                            css: css
     608                            page-title: (conc egg ": Test output")))))
     609                ;; generate the eggs table
     610                (let ((version-str (lambda (egg-data)
     611                                     (or (and egg-data (let ((x (alist-ref 'version egg-data)))
     612                                                         (and x (car x)))) ""))))
     613                  (append
     614                   (map (lambda (info) (a (make-pathname '() egg ".html") info))
     615                        (list egg
     616                              (let ((egg-data (alist-ref (string->symbol egg) ((egg-information)))))
     617                                (version-str egg-data))))
     618                   (list (link-egg-doc egg)
     619                         (link-egg-deps egg))
     620                   (if fail
     621                       (list (string-intersperse
     622                              (map (cut link-egg-doc <> 'use-egg-name)
     623                                   (filter (lambda (egg)
     624                                             (egg-fail? egg eggs))
     625                                           (egg-dependencies egg)))
     626                              ", "))
     627                       '())
     628                   (if fail ;; don't generate the "Tests" column if the installation failed
     629                       '()
     630                       (if (run-tests)
     631                           (list (if (number? test-status)
     632                                     (a (make-pathname "tests" egg ".html")
     633                                        (if (zero? test-status)
     634                                            "ok"
     635                                            "fail"))
     636                                     ""))
     637                           '())))))))
     638       (sort eggs (lambda (s1 s2) (string< (car s1) (car s2))))))
    478639     'with-header))
    479640
     
    493654              (string-append
    494655               "_" ;; for eggnames starting with numbers (e.g., 9p)
    495                (string-translate (->string name) "-" "_")))))
     656               (string-translate* (->string name) '(("-" . "_") ("+" . "_")))))))
    496657
    497658      (define (add-link! from to)
     
    507668
    508669      (define (link-dependencies egg #!optional version)
    509         (let ((deps (egg-dependencies egg)))
     670        (let ((deps (or (egg-dependencies egg) '())))
    510671          (with-output-to-string
    511672            (lambda ()
     
    550711    (delete-path (html-output)))
    551712  (create-directory (html-output))
    552   (let* ((data (with-input-from-file (logfile) read-file))
    553          (env-report (car data))
    554          (eggs-report (cdr data))
     713  (create-directory (make-pathname (html-output) "tests"))
     714  (let* ((env-report (car log-data))
    555715         (css (or (css-file)
    556716                  (begin
     
    565725           (h1 "Salmonella report")
    566726           (h2 "Summary")
    567            (let* ((success (filter (lambda (l) (zero? (caddr l))) eggs-report))
    568                   (fail (filter (lambda (l) (not (zero? (caddr l)))) eggs-report))
     727           (let* ((success (filter (lambda (l)
     728                                     (zero? (log-status l)))
     729                                   (select-by-action 'egg-install)))
     730                  (fail (remove (lambda (l)
     731                                  (zero? (log-status l)))
     732                                (select-by-action 'egg-install)))
    569733                  (success-count (length success))
    570734                  (fail-count (length fail))
    571                   (total (+ (length eggs-report) (length (skip-eggs)))))
     735                  (documented (length
     736                               (filter (lambda (l)
     737                                         (zero? (log-status l)))
     738                                       (select-by-action 'doc-check))))
     739                  (undocumented (length
     740                                 (remove (lambda (l)
     741                                           (zero? (log-status l)))
     742                                         (select-by-action 'doc-check))))
     743                  (tests-status (map log-status (select-by-action 'run-tests)))
     744                  (tests-ok (length (filter zero? (filter number? tests-status))))
     745                  (tests-fail (length (remove zero? (filter number? tests-status))))
     746                  (no-tests (length (remove number? tests-status)))
     747                  (warnings (select-by-action 'warning))
     748                  (total (+ success-count fail-count (length (skip-eggs)))))
     749
    572750             (string-append
    573751              (ws:make-table
    574                `(("Failed"    ,(span (number->string fail-count) id: "egg-fail"))
    575                  ("Succeeded" ,(span (number->string success-count) id: "egg-ok"))
    576                  ("Skipped"   ,(length (skip-eggs)))
    577                  ("Total"     ,(span (number->string total) id: "egg-total"))))
     752               `(("Installation" "Tests" "Documentation" "Total")
     753                 ,(list
     754                   ;; Installation
     755                   (ws:make-table
     756                    `(("Ok" ,(span (number->string success-count) id: "egg-ok"))
     757                      ("Failed" ,(span (number->string fail-count) id: "egg-fail"))
     758                      (,(p "") ,(p ""))))
     759
     760                   ;; Tests
     761                   (ws:make-table
     762                    `(("Ok" ,(span (number->string tests-ok) id: "egg-ok"))
     763                      ("Failed" ,(span (number->string tests-fail) id: "egg-fail"))
     764                      ("No tests" ,(span (number->string no-tests) id: "egg-fail"))))
     765
     766                   ;; Documentation
     767                   (ws:make-table
     768                    `(("Documented" ,(span (number->string documented) id: "egg-ok"))
     769                      ("Undocumented" ,(span (number->string undocumented) id: "egg-fail"))
     770                      (,(p "") ,(p ""))))
     771
     772                   ;; Total
     773                   (ws:make-table
     774                    `(("Skipped eggs" ,(length (skip-eggs)))
     775                      ("Total" ,(span (number->string total) id: "egg-total"))
     776                      (,(p "") ,(p ""))))))
     777               'with-header
     778               'no-zebra)
     779
     780              (h3 "Warnings")
     781              (if (null? warnings)
     782                  "None"
     783                  (ws:make-table
     784                   (map (lambda (warning)
     785                          (list (log-egg warning) (log-msg warning)))
     786                        warnings)))
     787
    578788              (h2 "Eggs")
    579               (h3 "Failed") (tabularize-eggs fail css 'fail)
    580               (h3 "Succeeded") (tabularize-eggs success css)
     789              (h3 "Installation failed")
     790              (tabularize-eggs
     791               (let ((failed-eggs (map car fail)))
     792                 (filter (lambda (line)
     793                           (member (log-egg line) failed-eggs))
     794                         eggs-report))
     795               css 'fail)
     796
     797              (h3 "Installation succeeded")
     798              (tabularize-eggs
     799               (let ((ok-eggs (map car success)))
     800                 (filter (lambda (line)
     801                           (member (log-egg line) ok-eggs))
     802                         eggs-report))
     803               css)
    581804              (if (null? (skip-eggs))
    582805                  ""
  • release/4/salmonella/trunk/salmonella-log2atom

    r19324 r20975  
    2626    (sprintf "~aT~a:~a:~aZ" date H M S)))
    2727
    28 (define s+ string-append)
    29 
    3028(define (title eggname status)
    3129  (conc "\n<title>" (status->msg status) " " eggname " egg -- Salmonella report</title>\n"))
     
    3533
    3634(define (status->msg status)
    37   (if (zero? status) "[OK]" "[ERROR]"))
     35  (cond ((eq? status 'no-tests) "[NO TESTS]")
     36        ((zero? status) "[OK]")
     37        (else "[ERROR]")))
    3838
    3939(define (status-msg eggname status)
     
    6666 <updated>" current-date&time "</updated>
    6767 <author><name>Salmonella</name></author>"
    68 (feed-id (s+ "automated-build" (if entries (conc ":" eggname) "")))
     68(feed-id (string-append "automated-build" (if entries (conc ":" eggname) "")))
    6969(or entries (entry eggname status today-dir))
    7070"</feed>"))
     
    9696     exn
    9797     (error "Could not fetch salmonella-custom-feeds from the svn repo.")
    98      (system* (s+ "svn checkout --username anonymous --password '' https://code.call-cc.org/svn/chicken-eggs/salmonella-custom-feeds " tmp-dir)))
     98     (system* (string-append "svn checkout --username anonymous --password '' https://code.call-cc.org/svn/chicken-eggs/salmonella-custom-feeds " tmp-dir)))
    9999    (for-each (lambda (custom-feed)
    100100                (let* ((feed-data (with-input-from-file custom-feed read-file))
     
    104104                                (and-let* ((egg-data (alist-ref (->string egg) log-data equal?))
    105105                                           (status (cadr egg-data)))
    106                                   (not (zero? status))))
     106                                  (or (eq? status 'run-tests)
     107                                      (not (zero? status)))))
    107108                              (or (alist-ref 'eggs feed-data) '())))
    108109                       (filename (pathname-strip-directory custom-feed)))
     
    130131(define (main salmonella-log atom-dir today-dir)
    131132  (when (file-exists? salmonella-log)
    132     (for-each (lambda (egg)
    133                 (let* ((eggname (string-trim-both (car egg)))
    134                        (status (caddr egg)))
    135                   (with-output-to-file (make-pathname atom-dir eggname ".xml")
    136                     (lambda ()
    137                       (print (feed eggname status today-dir))))))
    138               (cdr (with-input-from-file salmonella-log read-file)))))
     133
     134    (let ((tests-dir (make-pathname atom-dir "tests")))
     135      (unless (file-exists? tests-dir)
     136        (create-directory tests-dir))
     137
     138      ;; Installation
     139      (for-each (lambda (egg)
     140                  (let* ((eggname (string-trim-both (car egg)))
     141                         (status (caddr egg)))
     142                    (with-output-to-file (make-pathname atom-dir eggname ".xml")
     143                      (lambda ()
     144                        (print (feed eggname status today-dir))))))
     145                (filter (lambda (egg-data)
     146                          (eq? (cadr egg-data) 'egg-install))
     147                        (cdr (with-input-from-file salmonella-log read-file))))
     148
     149      ;; Tests
     150      (for-each (lambda (egg)
     151                  (let* ((eggname (string-trim-both (car egg)))
     152                         (status (caddr egg)))
     153                    (with-output-to-file (make-pathname tests-dir eggname ".xml")
     154                      (lambda ()
     155                        (print (feed eggname status today-dir))))))
     156                (filter (lambda (egg-data)
     157                          (eq? (cadr egg-data) 'run-tests))
     158                        (cdr (with-input-from-file salmonella-log read-file)))))))
     159
    139160
    140161(let* ((args (command-line-arguments))
  • release/4/salmonella/trunk/salmonella.setup

    r20249 r20975  
    44 'salmonella
    55 "salmonella"
    6  '((version 1.16)
     6 '((version 1.17)
    77   (documentation "salmonella.html")))
    88
     
    1010 'salmonella-log2atom
    1111 "salmonella-log2atom"
    12  '((version 1.16)
     12 '((version 1.17)
    1313   (documentation "salmonella.html")))
Note: See TracChangeset for help on using the changeset viewer.