Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Perl 6 test suite
Perl6 Perl

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
S01-perl-5-integration This test isn't run by rakudo.
S02-lexical-conventions missing infix is now missing, not confused
S02-lists yes, the test is correct, since Zen should decont
S02-literals test that HLL's EXPR requires term after infix
S02-magicals Unfudge now passing tests
S02-names-vars deal with $/ = "\n\n" error
S02-names Add test for RT #123696
S02-one-pass-parsing Remove any Pugs fudges
S02-packages fix tests for lookup of our-variables in a class
S02-types Add Buf/Blob to WHICH type checking
S03-binding Add test for RT #65900
S03-feeds lolly-proof uses of (;)
S03-junctions so() and not() are now well-behaved functions
S03-metaops add tests for [Z] and [Z<] on indirect lols
S03-operators test that assignops fail inside ??!!
S03-sequence Unfudge passing tests for 'sequence + last'
S03-smartmatch remove inadvertent shape declarations from tests
S04-blocks-and-statements Fix typos.
S04-declarations Unfudge state $x++ related tests.
S04-exception-handlers Add test for program-level handlers.
S04-exceptions unfudge some items
S04-phasers Unfudge all passing JVM specific todo'd tests
S04-statement-modifiers Unfudge some more passing tests for Parrot
S04-statement-parsing Remove any Pugs fudges
S04-statements "use MONKEY_TYPING" -> "use MONKEY-TYPING"
S05-capture Add test for RT #77570
S05-grammar Add a test for RT111768
S05-interpolation Tests for RT #122253.
S05-mass unfudge some items
S05-match "use MONKEY_TYPING" -> "use MONKEY-TYPING"
S05-metachars Unfudge some more passing tests for Parrot
S05-metasyntax Match.gist doesn't end with a newline anymore
S05-modifier Add test for RT #77406
S05-nonstrings Remove any Pugs fudges
S05-substitution Test non-Str replacement parts for Str.substr
S05-syntactic-categories "use MONKEY_TYPING" -> "use MONKEY-TYPING"
S05-transliteration Unfudge now passing test
S06-advanced "use MONKEY_TYPING" -> "use MONKEY-TYPING"
S06-currying Fudge failing test for RT 123498
S06-macros Unfudge all passing JVM specific todo'd tests
S06-multi Remove any Pugs fudges
S06-operator-overloading check new add_categorical errors
S06-other Skip rather than todo failing test on JVM
S06-routine-modifiers Add tests for native rw sub semantics.
S06-signature Fudge a test for R-J that relies on &unival.
S06-traits Tests for is copy trait on native args.
S07-iterators s/done_testing/done/ as per recent S24 changes
S09-autovivification Test for autovivification on multidim access
S09-hashes Add test for RT #118037
S09-subscript hyper infix ambig with hyper postfix
S09-typed-arrays Add some more native int/num array tests
S10-packages Unfudge RT #124162 test on JVM.
S11-modules Add test for RT #84280
S12-attributes "use MONKEY_TYPING" -> "use MONKEY-TYPING"
S12-class test for Foo.new.perl leaving out parens
S12-coercion Update fudging after fixing an optimizer bug.
S12-construction "use MONKEY_TYPING" -> "use MONKEY-TYPING"
S12-enums "use MONKEY_TYPING" -> "use MONKEY-TYPING"
S12-introspection Test .^can interaction with submethods.
S12-meta Fudge 6 tests for JVM (todo); skip all tests for Parrot
S12-methods Add test for RT #76928
S12-subset Fudge (skip) failing test for rakudo.parrot (RT #123234)
S12-traits Remove any Pugs fudges
S13-overloading Take the full argument list when overriding (...) for Type(...)
S13-syntax movie sub/hash syntax
S13-type-casting RT #72834
S14-roles Unfudge all passing JVM specific todo'd tests
S14-traits eval => EVAL in S14 to S32
S15-string-types some rakudo fudging
S15-unicode-information Fudge for rakudo in general, not just rakudo.moar.
S16-filehandles Fix typos.
S16-io Update test now that Pair has a nicer gist method.
S16-unfiled remove references to "browser" os.
S17-channel Fix some Supply.for deprecation messages
S17-lowlevel Unfudge: this seems stable now, even under load
S17-procasync also skip test that depend on another
S17-promise add reference to ticket
S17-scheduler Make sure we don't die on empty arrays
S17-supply Basic Supply.on-demand test
S19-command-line-options Cope with test file having Windows newlines.
S19-command-line Avoid test failure in S19-command-line/repl.t on parrot
S22-package-format Unfudge now passing precomp test, jnthn++
S24-testing Remove superfluous trailing '1;'s and trailing whitespace
S26-documentation Add test that indented code blocks span blank lines
S28-named-variables Remove any Pugs fudges
S29-any Increase/Decrease -> Less/More migration
S29-context Remove any Pugs fudges
S29-conversions Remove any Pugs fudges
S29-os Add test for RT #104794
S29-type Remove any Pugs fudges
S32-array "use MONKEY_TYPING" -> "use MONKEY-TYPING"
S32-basics Add some AT-POS & friends tests on native arrays
S32-container Remove any Pugs fudges
S32-exceptions unless elsif should throw same as unless else
S32-hash hyper infix ambig with hyper postfix
S32-io use .cleanup to compare paths
S32-list Add test for RT #124205 (squish should always return at least the fir…
S32-num Unfudge passing Rat tests
S32-scalar Add tests for RT #117777
S32-str Add a test for odd-length string input to pack 'H'
S32-temporal Unfudge.
S32-trig Remove any Pugs fudges
integration Add integration/precompiled.t as a testing ground for Test::Compile.
packages Add Test::Compile for convenient quicky tests of precompilation problems
rosettacode tweak OUT override
.gitignore Remove any Pugs fudges
LICENSE Add Artistic License 2
README document new fudge directives, negated and envvar
TODO Add a note about RTs.
fudge teach fudge to know about envvars
fudgeall Added quotes in case fudge path has spaces. (Tested on Linux and Win3…
test_summary avoid unnecessary differences in output

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.

You may also negate the test:

    #!humpty: [NUM] VERB ARGS

This will apply the verb on any system that *isn't* humpty.

Sometimes environment variables distinguish syntactic or semantic
variants, so you may apply a verb depending on the presence or absence
of such a setting:

    #?MYSPECIALVAR: [NUM] VERB ARGS
    #!MYSPECIALVAR: [NUM] VERB ARGS

The environement variable must be uppercase.

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.