File: run-on-many-lisps.lisp

package info (click to toggle)
acl2 8.6%2Bdfsg-2
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 1,111,420 kB
  • sloc: lisp: 17,818,294; java: 125,359; python: 28,122; javascript: 23,458; cpp: 18,851; ansic: 11,569; perl: 7,678; xml: 5,591; sh: 3,976; makefile: 3,833; ruby: 2,633; yacc: 1,126; ml: 763; awk: 295; csh: 233; lex: 197; php: 178; tcl: 49; asm: 23; haskell: 17
file content (68 lines) | stat: -rw-r--r-- 4,515 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
;;;; -*- Mode: LISP; Base: 10; Syntax: ANSI-Common-lisp; Package: CL-USER -*-

(ql:quickload :trivial-gray-streams)
(ql:quickload :test-grid-agent)
(ql:quickload :cl-fad)
(in-package :cl-user)

(defparameter *abcl* (make-instance 'lisp-exe:abcl
                                    :java-exe-path "C:\\Program Files\\Java\\jdk1.6.0_26\\bin\\java"
                                    :abcl-jar-path "C:\\Users\\anton\\unpacked\\abcl\\abcl-bin-1.1.0\\abcl.jar"))
(defparameter *clisp* (make-instance 'lisp-exe:clisp :exe-path "clisp"))
(defparameter *ccl-1.8-x86* (make-instance 'lisp-exe:ccl
                                           :exe-path "C:\\Users\\anton\\unpacked\\ccl\\ccl-1.8-windows\\wx86cl.exe"))
(defparameter *ccl-1.8-x86-64* (make-instance 'lisp-exe:ccl
                                              :exe-path "C:\\Users\\anton\\unpacked\\ccl\\ccl-1.8-windows\\wx86cl64.exe"))
(defparameter *sbcl-1.1.0.45* (make-instance 'lisp-exe:sbcl :exe-path "C:\\Program Files (x86)\\Steel Bank Common Lisp\\1.1.0.45\\run.bat"))
(defparameter *sbcl-win-branch-64* (make-instance 'lisp-exe:sbcl :exe-path "C:\\Program Files\\Steel Bank Common Lisp\\1.1.0.36.mswinmt.1201-284e340\\run.bat"))
(defparameter *sbcl-win-branch-32* (make-instance 'lisp-exe:sbcl :exe-path "C:\\Program Files (x86)\\Steel Bank Common Lisp\\1.1.0.36.mswinmt.1201-284e340\\run.bat"))
(defparameter *ecl-bytecode* (make-instance 'lisp-exe:ecl
                                            :exe-path "C:\\Users\\anton\\projects\\ecl\\bin\\ecl.exe"
                                            :compiler :bytecode))
(defparameter *ecl-lisp-to-c* (make-instance 'lisp-exe:ecl
                                             :exe-path "C:\\Users\\anton\\projects\\ecl\\bin\\ecl.exe"
                                             :compiler :lisp-to-c))
(defparameter *acl* (make-instance 'lisp-exe:acl :exe-path "C:\\Program Files (x86)\\acl90express\\alisp.exe"))

(defun run-on-many-lisps (run-description test-run-dir quicklisp-dir lisps)
  (ensure-directories-exist test-run-dir)
  (let ((fasl-root (merge-pathnames "fasl/" test-run-dir)))
    (labels ((log-name (lisp)
               (substitute #\- #\.
                           ;; Substitute dots by hypens if our main process is CCL, it 
                           ;; prepends the > symbol before dots;
                           ;; for example: 1.1.0.36.mswinmt.1201-284e340 => 1>.1>.0>.36>.mswinmt.1201-284e340
                           ;; When we pass such a pathname to another lisps, they can't handle it.
                           (string-downcase (tg-agent::implementation-identifier lisp))))
             (fasl-dir (lisp)
               (merge-pathnames (format nil "~A/" (log-name lisp))
                                fasl-root))
             (run (lisp)
               (let* ((lib-result (tg-agent::proc-run-libtest lisp
                                                              :trivial-gray-streams
                                                              run-description
                                                              (merge-pathnames (log-name lisp) test-run-dir)
                                                              quicklisp-dir
                                                              (fasl-dir lisp)))
                      (status (getf lib-result :status)))
                 (if (listp status)
                     (getf status :failed-tests)
                     status))))
      (let ((results (mapcar (lambda (lisp)
                               (list (tg-agent::implementation-identifier lisp)
                                     (run lisp)))
                             lisps)))
        (tg-utils::write-to-file results (merge-pathnames "resutls.lisp" test-run-dir))
        (cl-fad:delete-directory-and-files fasl-root)
        results))))

(run-on-many-lisps '(:lib-world "quicklisp 2013-02-17 + trivial-gray-streams.head"
                     :contact-email "avodonosov@yandex.ru")
                   "C:\\Users\\anton\\projects\\trivial-gray-streams\\test\\"
                   (merge-pathnames "quicklisp/" (user-homedir-pathname))
                   (list *sbcl-1.1.0.45* *sbcl-win-branch-64* *sbcl-win-branch-32*
                         *abcl*
                         *clisp*
                         *ccl-1.8-x86* *ccl-1.8-x86-64*                         
                         *ecl-bytecode* *ecl-lisp-to-c*
                         *acl*))