Scheme portable testing prior art Lassi Kortela (20 Aug 2020 19:00 UTC)
Re: Scheme portable testing prior art Marc Nieper-Wißkirchen (20 Aug 2020 19:09 UTC)
Re: Scheme portable testing prior art Lassi Kortela (20 Aug 2020 19:17 UTC)
Re: Scheme portable testing prior art Marc Nieper-Wißkirchen (20 Aug 2020 19:31 UTC)
Re: Scheme portable testing prior art Per Bothner (20 Aug 2020 20:58 UTC)
Re: Scheme portable testing prior art Per Bothner (20 Aug 2020 21:13 UTC)
Re: Scheme portable testing prior art Alex Shinn (21 Aug 2020 01:54 UTC)
Re: Scheme portable testing prior art Marc Nieper-Wißkirchen (21 Aug 2020 07:52 UTC)
Re: Scheme portable testing prior art Alex Shinn (21 Aug 2020 09:16 UTC)
Re: Scheme portable testing prior art Marc Nieper-Wißkirchen (21 Aug 2020 11:11 UTC)
Re: Scheme portable testing prior art Alex Shinn (21 Aug 2020 13:41 UTC)
Re: Scheme portable testing prior art John Cowan (20 Aug 2020 19:25 UTC)
Re: Scheme portable testing prior art Lassi Kortela (20 Aug 2020 19:39 UTC)
Re: Scheme portable testing prior art Marc Nieper-Wißkirchen (20 Aug 2020 20:04 UTC)
test-error, portability Lassi Kortela (20 Aug 2020 20:41 UTC)
Re: test-error, portability Marc Nieper-Wißkirchen (21 Aug 2020 06:49 UTC)
Re: test-error, portability Per Bothner (21 Aug 2020 13:21 UTC)
Re: test-error, portability Arthur A. Gleckler (21 Aug 2020 18:24 UTC)
Re: test-error, portability John Cowan (21 Aug 2020 21:54 UTC)
Re: test-error, portability Alex Shinn (22 Aug 2020 15:13 UTC)
Re: test-error, portability hga@xxxxxx (23 Aug 2020 21:24 UTC)
Re: test-error, portability John Cowan (23 Aug 2020 21:44 UTC)
Re: test-error, portability Marc Nieper-Wißkirchen (26 Aug 2020 13:45 UTC)
Re: test-error, portability Marc Nieper-Wißkirchen (26 Aug 2020 13:43 UTC)
Re: Scheme portable testing prior art John Cowan (20 Aug 2020 22:05 UTC)
Re: Scheme portable testing prior art Marc Nieper-Wißkirchen (20 Aug 2020 19:56 UTC)
Re: Scheme portable testing prior art Arthur A. Gleckler (20 Aug 2020 22:27 UTC)
Comments on Arthur's test framework Lassi Kortela (22 Aug 2020 08:56 UTC)
Re: Comments on Arthur's test framework Arthur A. Gleckler (22 Aug 2020 21:28 UTC)
Re: Comments on Arthur's test framework John Cowan (22 Aug 2020 22:34 UTC)
Re: Comments on Arthur's test framework Per Bothner (22 Aug 2020 23:45 UTC)
Re: Comments on Arthur's test framework Arthur A. Gleckler (23 Aug 2020 00:21 UTC)
Re: Comments on Arthur's test framework Per Bothner (23 Aug 2020 00:40 UTC)
Re: Comments on Arthur's test framework Arthur A. Gleckler (23 Aug 2020 01:52 UTC)
Re: Scheme portable testing prior art Alex Shinn (27 Aug 2020 05:04 UTC)
Re: Scheme portable testing prior art hga@xxxxxx (21 Aug 2020 16:52 UTC)

Scheme portable testing prior art Lassi Kortela 20 Aug 2020 18:59 UTC

Thanks for the initiative Harold!

I'm pressed for time, but quick comments:

> One thing that's become clear in the discussions of auxiliary SRFIs
> embedded in other official SRFIs is that testing in Scheme needs a bit
> of work.

+1

> It's also a special case for SRFIs, ideally the sample
> implementations will always have a test suite, and for many SRFIs this
> could be the only non-standard, higher numbered SRFI they depend on.

https://github.com/srfi-explorations/srfi-test is a repo I started a
while back to collect tests for as many SRFIs as we can in one place.
The tests in that repo use the SRFI 64 test definition primitives. Shiro
and Alex graciously donates many of their excellent tests under the MIT
License so the licensing situation for the repo can be as simple as the
situation with the SRFI documents themselves. Marc Feeley also donated
any tests in Gambit and is converting them piecemeal to SRFI 64.

The ultimate idea would be that the repo can have the test suites in a
format that Scheme implementations can simply copy those files verbatim
into their source trees. Doing whatever it takes to get them into a form
that implementors find agreeable. (include "...") in (define-library)
does wonders to enable portable .scm files. I haven't yet had the energy
to pursue this since there are so many things to do, but it'd be awesome
if you do. Aggregating the tests already uncovered a bunch of bugs; I
expect doing it more would uncover more and save everyone time in the
long run.

> So in the spirit of other Scheme topics, and to limit the demands on
> Arthur, I've created a GitHub Schemetest organization, into which we can
> put repositories with testing libraries, documentation, examples, etc.

+1

> Ideally it will in due course have a working SRFI 64 library for every
> Scheme implementation people care about, and whatever other testing
> libraries people like to use.

+1

> Don't know if this warrants a Schemetest mailing list, but I'll throw
> that idea out.

No opinion.

> First question: how to subdivide the space of testing libraries and
> Schemes they run on.  A general repo, page, or file can be consulted to
> tell you "if you want to use SRFI 64 in Chibi Scheme, then use /this/
> library", rather than having a repo or sub-directory per implementation
> with messy duplication.  So ... no great reason not to do it in grab bag
> fashion, after people's names or user ids, or whatever???

The situation basically is that 3 test definition frameworks dominate:

- SRFI 64

- Chicken's `test` egg <https://wiki.call-cc.org/eggref/5/test>

- The (chibi test) library
<http://snow-fort.org/s/gmail.com/alexshinn/chibi/test/0.9.0/index.html>,
a port of Chicken `test`.

All of these provide almost the same set of primitives for defining
tests. All of the main stuff is identical or near-identical. Therefore
the most viable strategy is to take this API as-is.

SRFI 64 defines two parts in one SRFI: the part where you define tests,
and the part where you run tests. Most of the reluctance to ship SRFI 64
with a Scheme implementation comes from the fact that you have to ship
the whole bundle, and some people want a differetn test runner than the
one in it.

The problem could be solved by writing a new SRFI that:

- copies (most of) the test definition parts from SRFI 64

- adds the new test definition stuff from the Chicken/Chibi test
library, which is like 1 or 2 new primitives IIRC.

- adds a couple more primitives that are none of those. Gambit needs one
to test whether an exception is raised in tail position or not.

Since the SRFI process is clogged, I suggest first writing a library
that does the above. Once the library has been used for a while,
immortalize its interface in a SRFI.

Here's a very recent GitHub issue on this topic:
<https://github.com/srfi-explorations/srfi-test/issues/3>, with many of
the usual suspects chiming in at length :)

> Anyone out there interested in this who's already running a bunch of
> different Scheme implementations so we can do some testing?  If not,
> I've got a bit of spare time to devote to that.

We have Docker containers for 45 Scheme implementations at
<https://hub.docker.com/u/schemers>, including a container build from
git master for many of the actively developed Schemes. I can give ssh
access to people I know from the lists to a Linux server with Docker
pre-configured.