;; Copyright 2006-2012, Matthew Welland.
;;
;; This file is part of Megatest.
;;
;; Megatest is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; Megatest is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with Megatest. If not, see <http://www.gnu.org/licenses/>.
;;
;; strftime('%m/%d/%Y %H:%M:%S','now','localtime')
(import srfi-18
test
chicken.string
chicken.process-context
chicken.file
chicken.pretty-print
commonmod
ulex
)
(define test-work-dir (current-directory))
(work-method 'mailbox) ;; threads, direct, mailbox
(return-method 'mailbox) ;; polling, mailbox, direct
;; given list of lists
;; ( ( msg expected param1 param2 ...)
;; ( ... ) )
;; apply test to all
;;
(define (test-batch proc pname inlst #!key (post-proc #f))
(for-each
(lambda (spec)
(let ((msg (conc pname " " (car spec)))
(result (cadr spec))
(params (cddr spec)))
(if post-proc
(test msg result (post-proc (apply proc params)))
(test msg result (apply proc params)))))
inlst))
;; read in all the _record files
;; (let ((files (glob "*_records.scm")))
;; (for-each
;; (lambda (file)
;; (print "Loading " file)
;; (load file))
;; files))
(define-syntax run-in-thread
(syntax-rules ()
((_ body ...)
(let ((th1 (make-thread (lambda ()
body ...)
"the thread")))
(thread-start! th1)
(thread-join! th1)))))
(let* ((unit-test-name (list-ref (argv) 4))
(fname (conc "../unittests/" unit-test-name ".scm")))
(if (file-exists? fname)
(load fname)
(print "ERROR: Unit test " unit-test-name " not found in unittests directory")))