1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd ">
2
2
< html lang ="en ">
3
3
< head >
4
4
< title > SRFI 64: A Scheme API for test suites</ title >
5
5
< meta charset ="utf-8 " />
6
6
< meta name ="viewport " content ="width=device-width, initial-scale=1 " />
7
7
< link rel ="stylesheet " href ="https://srfi.schemers.org/srfi.css " type ="text/css " />
8
- < link href ="/favicon.png " rel ="icon " sizes ="192x192 " type ="image/png ">
8
+ < link href ="/favicon.png " rel ="icon " sizes ="192x192 " type ="image/png " / >
9
9
< style type ="text/css ">
10
10
/* So var inside pre gets same font as var in paragraphs. */
11
11
var { font-family : monospace; }
@@ -25,11 +25,11 @@ <h2>Status</h2>
25
25
< li > Received: 2005-01-07</ li >
26
26
< li > Draft: 2005-01-28--2005-03-28</ li >
27
27
< li > Revised: < a href ="https://srfi.schemers.org/srfi-64/srfi-64-1.3.html "> 2005-10-18</ a >
28
- < li > Revised: < a href ="https://srfi.schemers.org/srfi-64/srfi-64-1.5.html "> 2006-02-24</ a >
29
- < li > Final: < a href ="https://srfi.schemers.org/srfi-64/srfi-64-1.6.html "> 2006-06-18</ a > </ li >
28
+ </ li > < li > Revised: < a href ="https://srfi.schemers.org/srfi-64/srfi-64-1.5.html "> 2006-02-24</ a >
29
+ </ li > < li > Final: < a href ="https://srfi.schemers.org/srfi-64/srfi-64-1.6.html "> 2006-06-18</ a > </ li >
30
30
< li > Revised to fix errata: 2016-08-11</ li >
31
31
</ ul >
32
- </ p >
32
+
33
33
34
34
35
35
< h2 > Abstract</ h2 >
@@ -343,7 +343,7 @@ <h4>Handling set-up and cleanup</h4>
343
343
(close-output-port f)))
344
344
</ pre >
345
345
< p > < b > Erratum note:</ b > < a href ="https://github.com/scheme-requests-for-implementation/srfi-64/blob/4470ffdec71b1cf61633b664958a3ce5e6997710/srfi-64.html "> Earlier versions</ a > had a non-working example.
346
-
346
+ </ p >
347
347
<!--
348
348
<h3>Test suites</h3>
349
349
<p>
@@ -393,7 +393,7 @@ <h4>Test specifiers</h4>
393
393
returned by < code > test-runner-test-name</ code > ) is < code > equals?</ code > to
394
394
< var > name</ var > .</ p >
395
395
< p >
396
- < code > (< b > test-match-nth</ b > < var > n</ var > [< var > count</ var > ])</ code > < br />
396
+ < code > (< b > test-match-nth</ b > < var > n</ var > [< var > count</ var > ])</ code > < br />
397
397
This evaluates to a < em > stateful</ em > predicate: A counter keeps track of
398
398
how many times it has been called.
399
399
The predicate matches the < var > n</ var > 'th time it is called
@@ -512,8 +512,8 @@ <h3>Test-runner</h3>
512
512
Create a new test-runner. Equivalent to
513
513
< code > ((test-runner-factory))</ code > .</ p >
514
514
< p >
515
- < code > (< b > test-runner-factory</ b > )</ code > < br />
516
- < code > (< b > test-runner-factory</ b > < var > factory</ var > )</ code > < br />
515
+ < code > (< b > test-runner-factory</ b > )</ code > < br />
516
+ < code > (< b > test-runner-factory</ b > < var > factory</ var > )</ code > < br />
517
517
Get or set the current test-runner factory.
518
518
A factory is a zero-argument function that creates a new test-runner.
519
519
The default value is < code > test-runner-simple</ code > ,
@@ -556,15 +556,15 @@ <h4>Result kind</h4>
556
556
< dt > < code > 'skip</ code > </ dt > < dd > The test was skipped.</ dd >
557
557
</ dl >
558
558
< p >
559
- < code > (< b > test-result-kind</ b > [< var > runner</ var > ])</ code > < br />
559
+ < code > (< b > test-result-kind</ b > [< var > runner</ var > ])</ code > < br />
560
560
Return one of the above result codes from the most recent tests.
561
561
Returns < code > #f</ code > if no tests have been run yet.
562
562
If we've started on a new test, but don't have a result yet,
563
563
then the result kind is < code > 'xfail</ code > is the test is expected to fail,
564
564
< code > 'skip</ code > is the test is supposed to be skipped,
565
565
or < code > #f</ code > otherwise.</ p >
566
566
< p >
567
- < code > (< b > test-passed?</ b > [< var > runner</ var > ])</ code > < br />
567
+ < code > (< b > test-passed?</ b > [< var > runner</ var > ])</ code > < br />
568
568
True if the value of < code > (test-result-kind [< var > runner</ var > ])</ code >
569
569
is one of < code > 'pass</ code > or < code > 'xpass</ code > .
570
570
This is a convenient shorthand that might be useful
@@ -599,7 +599,7 @@ <h4>Test result properties</h4>
599
599
The implementation automatically calls < code > test-result-clear</ code >
600
600
at the start of a < code > test-assert</ code > and similar procedures.</ p >
601
601
< p >
602
- < code > (< b > test-result-alist</ b > < var > runner</ var > )</ code > < br />
602
+ < code > (< b > test-result-alist</ b > < var > runner</ var > )</ code > < br />
603
603
Returns an association list of the current result properties.
604
604
It is unspecified if the result shares state with the test-runner.
605
605
The result should not be modified, on the other hand the result
@@ -615,8 +615,8 @@ <h4>Standard result properties</h4>
615
615
< dl >
616
616
< dt > < code > 'result-kind</ code > </ dt >
617
617
< dd > The result kind, as defined previously.
618
- This is the only mandatory result property.< br />
619
- < code > (test-result-kind < var > runner</ var > )</ code > is equivalent to:< br />
618
+ This is the only mandatory result property.< br />
619
+ < code > (test-result-kind < var > runner</ var > )</ code > is equivalent to:< br />
620
620
< code > (test-result-ref < var > runner</ var > 'result-kind)</ code >
621
621
</ dd >
622
622
< dt > < code > 'source-file</ code > </ dt >
@@ -650,7 +650,7 @@ <h4>Call-back functions</h4>
650
650
< p >
651
651
To define (set) the callback function for < var > event</ var > use the following expression.
652
652
(This is normally done when initializing a test-runner.)
653
- < br />
653
+ < br />
654
654
< code > (test-runner-on-< var > event</ var > ! < var > runner</ var > < var > event-function</ var > )</ code > </ p >
655
655
< p >
656
656
An < var > event-function</ var > takes a test-runner argument, and possibly other arguments, depending on the < var > event</ var > .</ p >
@@ -659,57 +659,57 @@ <h4>Call-back functions</h4>
659
659
< code > (test-runner-on-< var > event</ var > < var > runner</ var > )</ code > </ p >
660
660
< p >
661
661
To extract call the callback function for < var > event</ var > use the following expression.
662
- (This is normally done by the implementation core.)< br />
662
+ (This is normally done by the implementation core.)< br />
663
663
< code > ((test-runner-on-< var > event</ var > < var > runner</ var > ) < var > runner</ var > < var > other-args</ var > ...)</ code > </ p >
664
664
< p >
665
665
The following call-back hooks are available.</ p >
666
666
< p >
667
- < code > (< b > test-runner-on-test-begin</ b > < var > runner</ var > )</ code > < br />
668
- < code > (< b > test-runner-on-test-begin!</ b > < var > runner</ var > < var > on-test-begin-function</ var > )</ code > < br />
667
+ < code > (< b > test-runner-on-test-begin</ b > < var > runner</ var > )</ code > < br />
668
+ < code > (< b > test-runner-on-test-begin!</ b > < var > runner</ var > < var > on-test-begin-function</ var > )</ code > < br />
669
669
< code > (< var > on-test-begin-function</ var > < var > runner</ var > )</ code > < br />
670
670
The < var > on-test-begin-function</ var > is called at the start of an
671
671
individual testcase, before the test expression (and expected value) are
672
672
evaluated.
673
673
</ p >
674
674
< p >
675
- < code > (< b > test-runner-on-test-end</ b > < var > runner</ var > )</ code > < br />
676
- < code > (< b > test-runner-on-test-end!</ b > < var > runner</ var > < var > on-test-end-function</ var > )</ code > < br />
675
+ < code > (< b > test-runner-on-test-end</ b > < var > runner</ var > )</ code > < br />
676
+ < code > (< b > test-runner-on-test-end!</ b > < var > runner</ var > < var > on-test-end-function</ var > )</ code > < br />
677
677
< code > (< var > on-test-end-function</ var > < var > runner</ var > )</ code > < br />
678
678
The < var > on-test-end-function</ var > is called at the end of an
679
679
individual testcase, when the result of the test is available.</ p >
680
680
< p >
681
- < code > (< b > test-runner-on-group-begin</ b > < var > runner</ var > )</ code > < br />
682
- < code > (< b > test-runner-on-group-begin!</ b > < var > runner</ var > < var > on-group-begin-function</ var > )</ code > < br />
681
+ < code > (< b > test-runner-on-group-begin</ b > < var > runner</ var > )</ code > < br />
682
+ < code > (< b > test-runner-on-group-begin!</ b > < var > runner</ var > < var > on-group-begin-function</ var > )</ code > < br />
683
683
< code > (< var > on-group-begin-function</ var > < var > runner</ var > < var > suite-name</ var > < var > count</ var > )</ code > < br />
684
684
The < var > on-group-begin-function</ var > is called by a < code > test-begin</ code > ,
685
685
including at the start of a < code > test-group</ code > .
686
686
The < var > suite-name</ var > is a Scheme string,
687
687
and < var > count</ var > is an integer or < code > #f</ code > .</ p >
688
688
< p >
689
- < code > (< b > test-runner-on-group-end</ b > < var > runner</ var > )</ code > < br />
690
- < code > (< b > test-runner-on-group-end!</ b > < var > runner</ var > < var > on-group-end-function</ var > )</ code > < br />
689
+ < code > (< b > test-runner-on-group-end</ b > < var > runner</ var > )</ code > < br />
690
+ < code > (< b > test-runner-on-group-end!</ b > < var > runner</ var > < var > on-group-end-function</ var > )</ code > < br />
691
691
< code > (< var > on-group-end-function</ var > < var > runner</ var > )</ code > < br />
692
692
The < var > on-group-end-function</ var > is called by a < code > test-end</ code > ,
693
693
including at the end of a < code > test-group</ code > .</ p >
694
694
< p >
695
695
< code > (< b > test-runner-on-bad-count</ b > < var > runner</ var > )</ code > < br />
696
696
< code > (< b > test-runner-on-bad-count!</ b > < var > runner</ var > < var > on-bad-count-function</ var > )</ code > < br />
697
- < code > (< var > on-bad-count-function</ var > < var > runner</ var > < var > actual-count</ var > < var > expected-count</ var > )</ code > < br />
697
+ < code > (< var > on-bad-count-function</ var > < var > runner</ var > < var > actual-count</ var > < var > expected-count</ var > )</ code > < br />
698
698
Called from < code > test-end</ code > (before the < var > on-group-end-function</ var >
699
699
is called) if an < var > expected-count</ var > was specified by the matching
700
700
< code > test-begin</ code > and the < var > expected-count</ var > does not match
701
701
the < var > actual-count</ var > of tests actually executed or skipped.</ p >
702
702
< p >
703
703
< code > (< b > test-runner-on-bad-end-name</ b > < var > runner</ var > )</ code > < br />
704
704
< code > (< b > test-runner-on-bad-end-name!</ b > < var > runner</ var > < var > on-bad-end-name-function</ var > )</ code > < br />
705
- < code > (< var > on-bad-end-name-function</ var > < var > runner</ var > < var > begin-name</ var > < var > end-name</ var > )</ code > < br />
705
+ < code > (< var > on-bad-end-name-function</ var > < var > runner</ var > < var > begin-name</ var > < var > end-name</ var > )</ code > < br />
706
706
Called from < code > test-end</ code > (before the < var > on-group-end-function</ var >
707
707
is called) if a < var > suite-name</ var > was specified, and it did not that the
708
708
name in the matching < code > test-begin</ code > .</ p >
709
709
< p >
710
710
< code > (< b > test-runner-on-final</ b > < var > runner</ var > )</ code > < br />
711
711
< code > (< b > test-runner-on-final!</ b > < var > runner</ var > < var > on-final-function</ var > )</ code > < br />
712
- < code > (< var > on-final-function</ var > < var > runner</ var > )</ code > < br />
712
+ < code > (< var > on-final-function</ var > < var > runner</ var > )</ code > < br />
713
713
The < var > on-final-function</ var > takes one parameter (a test-runner)
714
714
and typically displays a summary (count) of the tests.
715
715
The < var > on-final-function</ var > is called after called the
@@ -725,8 +725,8 @@ <h4>Call-back functions</h4>
725
725
< code > (< b > test-on-test-end-simple</ b > < var > runner</ var > )</ code > < br />
726
726
< code > (< b > test-on-group-begin-simple</ b > < var > runner</ var > < var > suite-name</ var > < var > count</ var > )</ code > < br />
727
727
< code > (< b > test-on-group-end-simple</ b > < var > runner</ var > )</ code > < br />
728
- < code > (< b > test-on-bad-count-simple</ b > < var > runner</ var > < var > actual-count</ var > < var > expected-count</ var > )</ code > < br />
729
- < code > (< b > test-on-bad-end-name-simple</ b > < var > runner</ var > < var > begin-name</ var > < var > end-name</ var > )</ code > < br />
728
+ < code > (< b > test-on-bad-count-simple</ b > < var > runner</ var > < var > actual-count</ var > < var > expected-count</ var > )</ code > < br />
729
+ < code > (< b > test-on-bad-end-name-simple</ b > < var > runner</ var > < var > begin-name</ var > < var > end-name</ var > )</ code > < br />
730
730
You can call those if you want to write your own test-runner.</ p >
731
731
732
732
< h4 > Test-runner components</ h4 >
0 commit comments