Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
Failed to load latest commit information.
arithmetic
contrib
io
records
run
README.txt
base.sls
bytevectors.sls
conditions.sls
contrib.sls
control.sls
enums.sls
eval.sls
exceptions.sls
hashtables.sls
lists.sls
mutable-pairs.sls
mutable-strings.sls
programs.sls
r5rs.sls
reader.sls
run-via-eval.sps
run.sps
sorting.sls
syntax-case.sls
test.sls
unicode.sls

README.txt

------------------------- An R6RS Test Suite -------------------------

======================================================================
Files and libraries
======================================================================

Files that end ".sps" are R6RS programs. The main one is "run.sps",
which runs all the tests.

Files that end ".sls" are R6RS libraries. For example, "base.sls" is a
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 `(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 imports
   "<id>/.../<id>.sls", runs the tests, and reports the results.

And then there's 

 * "run.sps", which runs all the tests (as noted above)

 * "run-via-eval.sps", which is similar to "run.ss" but runs each set
    of tests via `eval'

 * "test.sls", containing `(tests r6rs test)', which implements the
   testing utilities that are used by all the other libraries

 * "contrib.sls" and "run/contrib.sps", which implement and run
   contributed tests; these tests might be contributed when someone
   finds a bug in an implementation that seems worth testing in other
   implementations; also, they may be difficult to pin to a particular
   R6RS library; finally, they may use extra libraries from the
   "contrib" sub-directory

======================================================================
Limitations and feedback
======================================================================

The test suite tries to cover all of the bindings of R6RS, and it
tries to check a variety of uses

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 tests 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 Racket bug report at

   http://bugs.racket-lang.org

======================================================================
Hints on running the tests
======================================================================

Ikarus (version 0.0.3+)
------

Put this directory at "<somewhere>/tests/r6rs" and run with "run.sps"

  cd <somewhere>
  ikarus --r6rs-script tests/r6rs/run.sps

or run an individual library's test, such as "run/program.sps" as

  cd <somewhere>
  ikarus --r6rs-script tests/r6rs/run/program.sps

Larceny (version 0.962)
-------

Put this directory at "<somewhere>/tests/r6rs" and run with "run.sps"

  larceny -path <somewhere> -r6rs -program run.sps

or run an individual library's test, such as "run/program.sps" as

  larceny -path <somewhere> -r6rs -program run/program.sps

PLT Scheme (version 4.0.2.5)
----------

If you get an SVN-based or the "Full" nightly build, then these tests are
in a `tests/r6rs' collection already. You can run all of the tests using

   mzscheme -l tests/r6rs/run.sps

and so on.

Otherwise, install this directory as a `tests/r6rs' collection,
perhaps in the location reported by

  (build-path (find-system-path 'addon-dir) 
              (version) "collects"
              "tests" "r6rs")

Four tests fail; they correspond to documented non-conformance with
R6RS.

Ypsilon (version 0.9.6)
-------

Put this directory at "<somewhere>/tests/r6rs" and run with "run.sps":

  cd <somewhere>
  ypsilon --sitelib=. --clean-acc tests/r6rs/run.sps

or run an individual library's test, such as "run/program.sps" as

  cd <somewhere>
  ypsilon --sitelib=. --clean-acc tests/r6rs/run/program.sps 
Something went wrong with that request. Please try again.