Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Perl 6 test suite

branch: master
Octocat-spinner-32 S01-perl-5-integration eval => EVAL in S01 January 01, 2014
Octocat-spinner-32 S02-lexical-conventions Copy Brent Laabs' tests for RT #76988 April 12, 2014
Octocat-spinner-32 S02-lists test iteration for parcel-of-parcel.tree July 22, 2012
Octocat-spinner-32 S02-literals Add tests for quote starter being escapable April 19, 2014
Octocat-spinner-32 S02-magicals Make a test Windows-friendly. January 25, 2014
Octocat-spinner-32 S02-names-vars Skip tests that rely on ordered hash keys April 14, 2014
Octocat-spinner-32 S02-names Add some more "is cached" tests April 14, 2014
Octocat-spinner-32 S02-one-pass-parsing eval => EVAL in S02, take 1 January 01, 2014
Octocat-spinner-32 S02-packages fix tests for lookup of our-variables in a class July 16, 2012
Octocat-spinner-32 S02-types We can't rely on order in which pairs are returned April 16, 2014
Octocat-spinner-32 S03-binding eval => EVAL in S03 and S04 January 01, 2014
Octocat-spinner-32 S03-feeds rakudo unfudges August 29, 2013
Octocat-spinner-32 S03-junctions Add a test for RT #101124 January 16, 2014
Octocat-spinner-32 S03-metaops Label test as corresponding to RT #77660 April 15, 2014
Octocat-spinner-32 S03-operators Unfudge TODO's passing / fudge test for \@a April 14, 2014
Octocat-spinner-32 S03-sequence eval => EVAL in S03 and S04 January 01, 2014
Octocat-spinner-32 S03-smartmatch Add new signature/parameter matching tests. January 25, 2014
Octocat-spinner-32 S04-blocks-and-statements JVM-fudge a failing test (with ticket number) April 13, 2014
Octocat-spinner-32 S04-declarations Bring a test in line with spec/STD. January 25, 2014
Octocat-spinner-32 S04-exception-handlers Fix plan for catch.t February 18, 2014
Octocat-spinner-32 S04-exceptions Various unfudges and skip->todo changes September 01, 2013
Octocat-spinner-32 S04-phasers JVM unfudges April 13, 2014
Octocat-spinner-32 S04-statement-modifiers Added tests for RT #89208 January 26, 2014
Octocat-spinner-32 S04-statement-parsing Add test for RT #78096 November 14, 2012
Octocat-spinner-32 S04-statements refudge test for rakudo April 13, 2014
Octocat-spinner-32 S05-capture check $/.chunks ~~ Positional not is_a Positional February 28, 2014
Octocat-spinner-32 S05-grammar LTM tests should use subparse March 02, 2014
Octocat-spinner-32 S05-interpolation pugs fudges March 03, 2013
Octocat-spinner-32 S05-mass JVM unfudges April 13, 2014
Octocat-spinner-32 S05-match Unfudge passing tests (at least on MoarVM) March 01, 2014
Octocat-spinner-32 S05-metachars unfudged for rakudo.jvm September 10, 2013
Octocat-spinner-32 S05-metasyntax LTM tests should use subparse, reprise March 02, 2014
Octocat-spinner-32 S05-modifier Add (more) tests for RT #109874 April 14, 2014
Octocat-spinner-32 S05-nonstrings [t] warning suppression May 02, 2009
Octocat-spinner-32 S05-substitution Unfudge ss/// test on Rakudo April 12, 2014
Octocat-spinner-32 S05-syntactic-categories [t/spec] add 'use MONKEY_TYPING' where appropriate March 13, 2010
Octocat-spinner-32 S05-transliteration eval => EVAL in S05, S06 and S09 January 01, 2014
Octocat-spinner-32 S06-advanced adjust expectation after off-by-one was fixed January 23, 2014
Octocat-spinner-32 S06-currying pugs fudge July 08, 2012
Octocat-spinner-32 S06-macros fudge moar macro test (RTed) March 29, 2014
Octocat-spinner-32 S06-multi eval => EVAL in S05, S06 and S09 January 01, 2014
Octocat-spinner-32 S06-operator-overloading eval => EVAL in S05, S06 and S09 January 01, 2014
Octocat-spinner-32 S06-other Fix main-usage tests April 11, 2014
Octocat-spinner-32 S06-routine-modifiers eval => EVAL in S05, S06 and S09 January 01, 2014
Octocat-spinner-32 S06-signature Add new signature/parameter matching tests. January 25, 2014
Octocat-spinner-32 S06-traits eval => EVAL in S05, S06 and S09 January 01, 2014
Octocat-spinner-32 S07-iterators s/done_testing/done/ as per recent S24 changes December 31, 2010
Octocat-spinner-32 S09-autovivification pugs fudge October 10, 2013
Octocat-spinner-32 S09-hashes Unfudge tests that I made passing today June 02, 2013
Octocat-spinner-32 S09-subscript eval => EVAL in S05, S06 and S09 January 01, 2014
Octocat-spinner-32 S09-typed-arrays Update fudge number for typed hashes test January 12, 2014
Octocat-spinner-32 S10-packages eval => EVAL in S10 to S12 January 01, 2014
Octocat-spinner-32 S11-modules add tests for "our/my $var is export" February 23, 2014
Octocat-spinner-32 S12-attributes eval => EVAL in S10 to S12 January 01, 2014
Octocat-spinner-32 S12-class add test for RT #117165 February 21, 2014
Octocat-spinner-32 S12-construction Fudge for Niecza. December 05, 2013
Octocat-spinner-32 S12-enums Add test for RT #101900 October 20, 2013
Octocat-spinner-32 S12-introspection add test for RT # 76648 January 12, 2014
Octocat-spinner-32 S12-methods Added tests for RT #95514. February 01, 2014
Octocat-spinner-32 S12-subset eval => EVAL in S10 to S12 January 01, 2014
Octocat-spinner-32 S12-traits eval => EVAL in S10 to S12 January 01, 2014
Octocat-spinner-32 S13-overloading Add test for RT #121692 April 21, 2014
Octocat-spinner-32 S13-syntax movie sub/hash syntax August 11, 2013
Octocat-spinner-32 S13-type-casting RT #72834 March 30, 2012
Octocat-spinner-32 S14-roles fudge anonymous role tests for moar, add ticket reference April 10, 2014
Octocat-spinner-32 S14-traits eval => EVAL in S14 to S32 January 01, 2014
Octocat-spinner-32 S15-string-types S15-strings/ -> S15-string-types/ March 04, 2014
Octocat-spinner-32 S15-unicode-information [S15] Fix up a couple of comments. March 08, 2014
Octocat-spinner-32 S16-filehandles unskip passing moar tests January 14, 2014
Octocat-spinner-32 S16-io remove references to "browser" os. November 13, 2013
Octocat-spinner-32 S16-unfiled remove references to "browser" os. November 13, 2013
Octocat-spinner-32 S17-concurrency Add tests for Supply.uniq( :expires ) April 24, 2014
Octocat-spinner-32 S19-command-line-options rewrite dash-p.t to use Test::Util April 23, 2014
Octocat-spinner-32 S19-command-line rakudo.jvm fudge September 08, 2013
Octocat-spinner-32 S24-testing pugs fudge March 08, 2012
Octocat-spinner-32 S26-documentation Use latest formatting code semantics March 04, 2014
Octocat-spinner-32 S28-named-variables Added S16-io/cwd.t and S16-io/tmpdir.t August 22, 2013
Octocat-spinner-32 S29-any Increase/Decrease -> Less/More migration November 08, 2013
Octocat-spinner-32 S29-context eval => EVAL in S14 to S32 January 01, 2014
Octocat-spinner-32 S29-conversions (re)fudge ord_and_char.t for rakudo March 29, 2014
Octocat-spinner-32 S29-os refude test for rakudo-m that depends on rakudo being installed April 13, 2014
Octocat-spinner-32 S29-type eval => EVAL in S14 to S32 January 01, 2014
Octocat-spinner-32 S32-array eval => EVAL in S14 to S32 January 01, 2014
Octocat-spinner-32 S32-basics Untodo tests reliably passing after is_run fix. September 25, 2013
Octocat-spinner-32 S32-container niecza fudge October 09, 2013
Octocat-spinner-32 S32-exceptions moar-fudge S32-exceptions/misc.t March 29, 2014
Octocat-spinner-32 S32-hash eval => EVAL in S14 to S32 January 01, 2014
Octocat-spinner-32 S32-io Use the server ready flag file for discard test also March 30, 2014
Octocat-spinner-32 S32-list Add test for RT #121434 April 12, 2014
Octocat-spinner-32 S32-num fix a moar fudge March 28, 2014
Octocat-spinner-32 S32-scalar eval => EVAL in S14 to S32 January 01, 2014
Octocat-spinner-32 S32-str JVM unfudges April 13, 2014
Octocat-spinner-32 S32-temporal star to switch some eval()s to EVAL January 01, 2014
Octocat-spinner-32 S32-trig star to switch some eval()s to EVAL January 01, 2014
Octocat-spinner-32 integration adding advent 2012 day 15 April 23, 2014
Octocat-spinner-32 packages star to switch some eval()s to EVAL January 01, 2014
Octocat-spinner-32 rosettacode tweak OUT override April 14, 2014
Octocat-spinner-32 .gitignore ignore *~ (emacs backups) March 11, 2014
Octocat-spinner-32 LICENSE Add Artistic License 2 November 05, 2013
Octocat-spinner-32 README Typo. September 19, 2011
Octocat-spinner-32 TODO removed spurt from TODO May 21, 2013
Octocat-spinner-32 fudge Extend fudge to allow an implementation "rakudo.jvm" that matches #?r… June 20, 2013
Octocat-spinner-32 fudgeall Added quotes in case fudge path has spaces. (Tested on Linux and Win3… June 18, 2008
Octocat-spinner-32 test_summary respect new flag in rakudo's specttest.data April 11, 2014
README
	The Official Perl 6 Test Suite (someday...)

This is the Official Perl 6 test suite. It evolved out of the pugs
test suite, and is now maintained in a separate repository.

Its purpose is to validate implementations that wish to be known
as a conforming Perl 6 implementation. 

Please consider this test suite to be the result
of an ongoing negotiation: since many of these tests are inspired
by seeing how the various prototype implementations are screwed up
(or even more likely, how the design of Perl 6 is screwed up), this
test suite should be considered a work in progress until one or more
of the implementations gets close to passing the entire test suite,
at which point we will freeze version 6.0 of the test suite, and any
implementation that passes it can then call itself Perl 6.

As they develop, different implementations will certainly be in
different states of readiness with respect to the test suite, so
in order for the various implementations to track their progress
independently, we've established a mechanism for "fudging" the
tests in a kind of failsoft fashion.  To pass a test officially,
an implementation must be able to run a test file unmodified, but an
implementation may (temporarily) skip tests or mark them as "todo" via
the fudging mechanism, which is implemented via the fudge preprocessor.
Individual implementations are not allowed to modify the actual test
code, but may insert line comments before each actual test (or block
of tests) that changes how those tests are to be treated for this
platform.  The fudge preprocessor pays attention only to the comments
that belong to the current platform and ignores all the rest.  If your
platform is named "humpty" then your special comment lines look like:

    #?humpty: [NUM] VERB ARGS

(The colon is optional.)

The optional NUM says how many statements or blocks to apply the
verb to.  (If not supplied, a value of 1 is assumed).  A statement
is arbitrarily defined as one or more lines starting with a test call
and ending in semicolon (with an optional comment).

VERBs include:

    skip "reason"	# skip test entirely
    eval "reason"	# eval the test because it doesn't parse yet
    try "reason"	# try the test because it throws exception
    todo "reason"	# mark "todo" because "not ok" is expected
    emit code		# insert code (such as "skip_rest();") inline

All fudged tests return an exit code of 1 by default, so the test harness
will mark it as "dubious" even if all the tests supposedly pass.

There is also the following directive which modifies the test count of
the next construct:

    #?DOES count

The count may be an expression as long as any variables referenced in
the expression are in scope at the location fudge eventually inserts a
"skip()" call.

When applied to a subsequent sub definition, registers the sub name as
doing that many tests when called.  Note, however, that any skipping
is done at the point of the call, not within the subroutine, so the count
may not refer to any parameter of the sub.

When you run the fudge preprocessor, if it decides the test needs
fudging, it returns the new fudged filename; otherwise it returns
the original filename.  (Generally you don't run "fudge" directly,
but your test harness runs the "fudgeall" program for you; see below.)
If there is already a fudged program in the directory that is newer
than the unfudged version, fudge just returns the fudged version
without regenerating it.  If the fudged version is older, it removes
it and then decides anew whether to regenerate it based on the internal
fudge comments.

The "fudgeall" program may be called to process all the needed fudging
for a particular platform:

    fudgeall humpty */*.t */*/*.t

will use the "fudge" program to translate any fudged files to a new
file where the extension is not *.t but instead is *.humpty to indicate
the platform dependency.  It also returns the fudged list of filenames
to run, where unfudged tests are just passed through unchanged as *.t.
Each test comes through as either fudged or not, but never both.
The test harness then runs the selected test files as it normally
would (it shouldn't care whether they are named *.t or *.humpty).


In cases where the current working directory makes a difference, the tests
assume that the working directory is the root of the test suite, so that the
relative path to itself is t/spec/S\d\d-$section/$filename.
Something went wrong with that request. Please try again.