refine r6rs test suite notes

svn: r10864
This commit is contained in:
Matthew Flatt 2008-07-22 21:42:39 +00:00
parent e50f229beb
commit 6f6a3f27d0
2 changed files with 46 additions and 19 deletions

View File

@ -1,5 +1,5 @@
R6RS Test Suite
------------------------- An R6RS Test Suite -------------------------
======================================================================
Files
@ -9,17 +9,43 @@ Files that end ".sps" are R6RS programs. The main one is "main.sps",
which runs all the tests.
Files that end ".sls" are R6RS libraries. For example, "base.sls" is a
library that implements tests for `(r6rs base)'. Many R6RS
implementations will auto-load ".sls" files if you set up your
directoties right.
library that implements `(tests r6rs base)', which is a set of tests
for `(rnrs base)'. Many R6RS implementations will auto-load ".sls"
files if you put the directory of tests in the right place.
In general, for each `(r6rs <id> ... <id>)' in the standard:
In general, for each `(rnrs <id> ... <id>)' in the standard:
* There's a library of tests "<id>/.../<id>.sls". It defines and
exports a function `run-<id>-...<id>-tests'.
* There's a program "run/<id>/.../<id>.sps" that runs just the
library's tests and reports the results.
* There's a program "run/<id>/.../<id>.sps" that imports
"<id>/.../<id>.sls", runs the tests, and reports the results.
And then there's "main.sps", which runs all the tests. Also,
"test.sls" implements `(tests r6rs test)', which implements the
testing utilities that are used by all the other libraries.
======================================================================
Limitations and Feedback
======================================================================
One goal of this test suite is to avoid using `eval' (except when
specifcally testing `eval'). Avoiding `eval' makes the test suite as
useful as possible to ahead-of-time compilers that implement `eval'
with a separate interpreter. A drawback of the current approach,
however, is that if an R6RS implementation doesn't supply one binding
or does not support a bit of syntax used in a set of tests, then the
whole set of tests fails to load.
A related problem is that each set of sets is placed into one function
that runs all the tests. This format creates a block of code that is
much larger than in a typical program, which might give some compilers
trouble.
In any case, reports of bugs (in the tests) and new tests would be
very much appreciated. File either as a PLT Scheme bug report at
http://bugs.plt-scheme.org
======================================================================
Hints on running the tests
@ -38,6 +64,9 @@ or run an individual library's test, such as "run/program.sps" as
cd <somewhere>
ikarus --r6rs-script tests/r6rs/run/program.sps
As of Ikarus 0.3.0+ (revision 1548), many libraries fail to load,
mostly because condition names cannot be used as expressions.
Larceny
-------
@ -49,6 +78,9 @@ or run an individual library's test, such as "run/program.sps" as
larceny -path <somewhere> -r6rs -program run/program.sps
As of Larceny 0.962, some of the test suites (such as "base.sls") were
too large to load on our test machine.
PLT Scheme
----------
@ -66,7 +98,8 @@ perhaps in the location reported by
(version) "collects"
"tests" "r6rs")
You could also play with the PLTCOLLECTS environment variable.
As of PLT Scheme 4.0.2.5, two tests fail. They correspond to
documented non-conformance with R6RS.
Ypsilon
-------
@ -83,12 +116,3 @@ Load the library declarations that you're interested in. For `(rnrs
* Eval `(run-<id>-...<id>-tests)'
* Eval `(import tests r6rs test)'
* Eval `(show-test-results)'
======================================================================
Feedback
======================================================================
Reports of bugs (in the tests) and new tests would be very much
appreciated. File either as a PLT Scheme bug report at
http://bugs.plt-scheme.org

View File

@ -24,10 +24,13 @@
(begin
;; (write 'expr) (newline)
(check-test 'expr
(guard (c [#t (make-err c)])
expr)
(catch-exns (lambda () expr))
expected))]))
(define (catch-exns thunk)
(guard (c [#t (make-err c)])
(thunk)))
(define-syntax test/approx
(syntax-rules ()
[(_ expr expected)