tvl-depot/third_party/lisp/fiveam/src/package.lisp

139 lines
3.8 KiB
Common Lisp

;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
;;;; * Introduction
;;;; FiveAM is a testing framework. It takes care of all the boring
;;;; bookkeeping associated with managing a test framework allowing
;;;; the developer to focus on writing tests and code.
;;;; FiveAM was designed with the following premises:
;;;; - Defining tests should be about writing tests, not
;;;; infrastructure. The developer should be able to focus on what
;;;; they're testing, not the testing framework.
;;;; - Interactive testing is the norm. Common Lisp is an interactive
;;;; development environment, the testing environment should allow the
;;;; developer to quickly and easily redefine, change, remove and run
;;;; tests.
(defpackage :it.bese.fiveam
(:use :common-lisp :alexandria)
(:nicknames :5am :fiveam)
#+sb-package-locks
(:lock t)
(:export
;; creating tests and test-suites
#:make-suite
#:def-suite
#:def-suite*
#:in-suite
#:in-suite*
#:test
#:def-test
#:get-test
#:rem-test
#:test-names
#:*default-test-compilation-time*
;; fixtures
#:def-fixture
#:with-fixture
#:get-fixture
#:rem-fixture
;; running checks
#:is
#:is-every
#:is-true
#:is-false
#:signals
#:finishes
#:skip
#:pass
#:fail
#:*test-dribble*
#:for-all
#:*num-trials*
#:*max-trials*
#:gen-integer
#:gen-float
#:gen-character
#:gen-string
#:gen-list
#:gen-tree
#:gen-buffer
#:gen-one-element
;; running tests
#:run
#:run-all-tests
#:explain
#:explain!
#:run!
#:debug!
#:!
#:!!
#:!!!
#:*run-test-when-defined*
#:*debug-on-error*
#:*debug-on-failure*
#:*on-error*
#:*on-failure*
#:*verbose-failures*
#:*print-names*
#:results-status))
;;;; You can use #+5am to put your test-defining code inline with your
;;;; other code - and not require people to have fiveam to run your
;;;; package.
(pushnew :5am *features*)
;;;;@include "check.lisp"
;;;;@include "random.lisp"
;;;;@include "fixture.lisp"
;;;;@include "test.lisp"
;;;;@include "suite.lisp"
;;;;@include "run.lisp"
;;;;@include "explain.lisp"
;;;; * Colophon
;;;; This documentaion was written by Edward Marco Baringer
;;;; <mb@bese.it> and generated by qbook.
;;;; ** COPYRIGHT
;;;; Copyright (c) 2002-2003, Edward Marco Baringer
;;;; All rights reserved.
;;;; Redistribution and use in source and binary forms, with or without
;;;; modification, are permitted provided that the following conditions are
;;;; met:
;;;; - Redistributions of source code must retain the above copyright
;;;; notice, this list of conditions and the following disclaimer.
;;;; - Redistributions in binary form must reproduce the above copyright
;;;; notice, this list of conditions and the following disclaimer in the
;;;; documentation and/or other materials provided with the distribution.
;;;; - Neither the name of Edward Marco Baringer, nor BESE, nor the names
;;;; of its contributors may be used to endorse or promote products
;;;; derived from this software without specific prior written permission.
;;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;;;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;;;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;;;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;;;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;;;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;;;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;;;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;;;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE