Skip to content
Perl 6 test suite
Perl6 Other
Latest commit 5a079b2 @lizmat lizmat Add test for RT #127504
Failed to load latest commit information.
S01-perl-5-integration Use 'Perl5' as consistent name for EVAL and use :from
S02-lexical-conventions add tests for RT #126959
S02-lists change 'parcel' to 'raw' or 'list', depending
S02-literals S02-literals/quoting.t: win32 cmd uses & as separator
S02-magicals Fix test that passed for the wrong reason on Win.
S02-names-vars Prepare for removal of @*INC
S02-names `is cached` is now experimental.
S02-one-pass-parsing Remove any Pugs fudges
S02-packages prefer RT #ticket
S02-types Add a test for the round trip of Instant via .perl.EVAL
S03-binding test: can't bind to some things. type objects, ints, ...
S03-feeds Remove dubious test
S03-junctions Fudge tests returning Int instead of Bool for JVM
S03-metaops correct over-specific exception type
S03-operators test that null range sums to 0
S03-sequence Change range indexing semantic tweaks.
S03-smartmatch Fix fallout of " as " removal
S04-blocks-and-statements Tests for RT #126880
S04-declarations Fudge tests for sigilless variables for JVM
S04-exception-handlers Test for X::AdHoc (with throws-like) instead of using eval-dies-ok
S04-exceptions Tests for fail outside of a routine.
S04-phasers test under new EVAL and interpolation rules
S04-statement-modifiers prefer RT #ticket
S04-statement-parsing s/lives_ok/lives-ok/g
S04-statements tests for #127069 as well (a dup of #127013)
S05-capture Tests to cover RT #88340.
S05-grammar Expect Exception, not X::AdHoc.
S05-interpolation test under new EVAL and interpolation rules
S05-mass Expect Exception, not X::AdHoc.
S05-match Tighten fudge for rakudo.jvm
S05-metachars Test for RT #122891.
S05-metasyntax test that \0 works inside cclasses
S05-modifier add test for RT #126771
S05-nonstrings Remove any Pugs fudges
S05-substitution Unfudge passing tests for JVM
S05-syntactic-categories Expect Exception, not X::AdHoc.
S05-transliteration Replace some more eval-dies-ok with throws-like
S06-advanced Correct some busted tests; unfudge.
S06-currying Fudge for JVM: NPE in sub 'is-primed-call'
S06-macros Fix test where eval-lives-ok didn't get right context
S06-multi Add tests for RT's 127025 127024 127129, with a couple fudges
S06-operator-overloading use the alef symbol rather than the letter
S06-other Fix another print streamlining casualty
S06-parameters Expect Exception, not X::AdHoc.
S06-routine-modifiers Replace some eval-dies-ok in S06-* with throws-like
S06-signature Tests for RT #126212.
S06-traits Fudge tests for correct exception on JVM, RT #126531
S07-hyperrace Fix test counts
S07-iterators Remove all superstitious "done"s
S07-slip slip tests
S09-autovivification Fix creation of nested arrays in S09-autovivification/autoincrement.t
S09-hashes .list needed before indexing Seq
S09-multidim Test rotate/reverse on 1-dimensional arrays.
S09-subscript Update test for GLR.
S09-typed-arrays Update tests for .flat behavior on native arrays.
S10-packages Fix typo: test newly created array @precompiled2
S11-compunit Use $*EXECUTABLE instead of 'perl6', fudge for JVM
S11-modules test under new EVAL and interpolation rules
S11-repository Fix "no writable path" found in curli-install.t
S12-attributes Test for RT #123757, correct a wrong test.
S12-class Test for RT #126708.
S12-coercion Replace some eval-dies-ok in S12-* with throws-like
S12-construction todo => skip for syntax we're NYI-ing.
S12-enums Expect Exception, not X::AdHoc.
S12-introspection regression test for DEFINITE code gen bug
S12-meta multiple declarators inside DECLARE
S12-methods Tests codifying decision on RT #119193.
S12-subset Fudge another test for role mixin on JVM
S12-traits Replace remaining eval-dies-ok with throws-like
S13-overloading Expect Exception, not X::AdHoc.
S13-syntax s/lives_ok/lives-ok/g
S13-type-casting Use isa-ok instead of isa_ok
S14-roles More multi requirements and roles tests.
S14-traits Test for RT #112666.
S15-literals Fudge tests for unival literals on JVM
S15-nfg Update tests to cope with newline translation.
S15-normalization Add generated normalization sanity tests.
S15-string-types .graphs is gone, remove tests and comments
S15-unicode-information Use existing RT number
S16-filehandles Add missing .close call.
S16-io Update tests to cope with newline translation.
S16-unfiled fixed appended RT number to be within quoted string
S17-channel Remove earliest.t; this feature is going away.
S17-lowlevel Unfudge lock/join test
S17-procasync Harden test against newline translation.
S17-promise Add tests for RT #127101
S17-scheduler Adapt tests because of 2a635cd96279ace1c5d3d6d687
S17-supply Make the test more explicit
S19-command-line-options Fix Windows line ending workarounds.
S19-command-line Bring basic -e tests inline with new MMD setup
S22-package-format S22-package-format/local.t: use $*SPEC.catdir() to account for backsl…
S24-testing Replace last 'done' with 'done-testing'
S26-documentation Add `use experimental :macros` as needed.
S28-named-variables Prepare for removal of @*INC
S29-any Replace more eval-dies-ok with throws-like (S15/S29)
S29-context prefer RT #ticket
S29-conversions Z needs flat now
S29-os Test run/shell in sink context throw on failure.
S32-array Skip strange adverb tests to be caught by MMD
S32-basics Fudge tests for typename in X::Assignment::RO on JVM
S32-container Tests for RT #126522.
S32-exceptions Add test for RT #126888
S32-hash Skip strange adverb tests to be caught by MMD
S32-io Remove references to dead code of newio branch
S32-list Unfudge passing tests for JVM
S32-num Fudge tests (X::Numeric:Overflow is not thrown on OS X)
S32-scalar Fudge tests returning Int instead of Bool for JVM
S32-str test for upgraded printf directives message
S32-temporal Add tests for RT #127170
S32-trig Replace some eval-dies-ok with throws-like in S32-*/*
integration Add test for RT #127504
packages integration/advent2011-day07.t: properly clear %timing hash
rosettacode Fix Windows line ending workarounds.
t Add more tests for fudging
.gitignore ignore .precomp folders
LICENSE Add Artistic License 2
README Someday is here
TODO Add a note about RTs.
fudge utilize does-ok test assertion
fudgeall Added quotes in case fudge path has spaces. (Tested on Linux and Win3…
test_summary avoid unnecessary differences in output


	The Official Perl 6 Test Suite

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 bleeding edge of Perl 6
development. New tests, tests for experimental new features, etc.
will live on this branch. Once a specification is cut, a branch
will be created for that version of the spec, e.g. 6.c for Christmas.

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:


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.