Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Perl 6 test suite
Perl6 Other

TODO a couple tests.

nine++ for catching that they needed it.
latest commit 6b38ee747d
@ShimmerFairy ShimmerFairy authored
Failed to load latest commit information.
S01-perl-5-integration Use 'Perl5' as consistent name for EVAL and use :from
S02-lexical-conventions Add basic test for $=finish
S02-lists Use isa-ok instead of isa_ok
S02-literals TODO a couple tests.
S02-magicals Remove unneeded "done" to easy migration
S02-names-vars Tighten scope of fudging; refer to existing ticket
S02-names Change (and move) test for RT #98854
S02-one-pass-parsing Remove any Pugs fudges
S02-packages s/lives_ok/lives-ok/g
S02-types Remove very old comment.
S03-binding kebab case skip-rest
S03-feeds Remove all superstitious "done"s
S03-junctions Refer to existing ticket
S03-metaops Revert "fix cross metaop with nested/itemized lists"
S03-operators RT #124542 #124543 - remove/update dodgy tests.
S03-sequence Remove all superstitious "done"s
S03-smartmatch Fix plan.
S04-blocks-and-statements Correct and unfudge test.
S04-declarations RT #125371, catch variable use in its own initializer
S04-exception-handlers kebab case skip-rest
S04-exceptions tests for some enhancements to die/fail
S04-phasers Fix test for RT#123776
S04-statement-modifiers Add test files for with/without modifiers
S04-statement-parsing s/lives_ok/lives-ok/g
S04-statements Add basic tests for Mu.return
S05-capture Remove three tests with wrong assumptions about capturing
S05-grammar Don't be case-sensitive in text test.
S05-interpolation Change two skipped tests to todo
S05-mass reduce the scope of some fudges.
S05-match RT #125345, test (non-)capturing and cursor pos
S05-metachars Tests for RT #72440.
S05-metasyntax add test for RT #120511, <?[\n]>
S05-modifier kebab case skip-rest
S05-nonstrings Remove any Pugs fudges
S05-substitution Remove all superstitious "done"s
S05-syntactic-categories s/eval_lives_ok/eval-lives-ok/g
S05-transliteration s/lives_ok/lives-ok/g
S06-advanced CallFrame.code should now return the code object
S06-currying Add test for RT#123938 which may be closeable
S06-macros Tweaks for PR#475 (new Exception code.)
S06-multi loosen some fudge
S06-operator-overloading Correct test, unfudge for rakudo (RT #124980)
S06-other rakudo unfudge
S06-routine-modifiers Add (fudged) tests for RT#124341
S06-signature Reap merged ticket numbers, and mention RT#123660
S06-traits Use unique ticket numer for RT #124640
S07-iterators Remove all superstitious "done"s
S09-autovivification s/lives_ok/lives-ok/g
S09-hashes Add tests for RT#118031 which might be closeable.
S09-subscript s/eval_lives_ok/eval-lives-ok/g
S09-typed-arrays Add test for RT#122440/RT#124079
S10-packages Fix test to not produce a sink warning.
S11-modules Test for RT #125715.
S12-attributes Fix copy-pasta in test; lucasb++.
S12-class Fix test description
S12-coercion Mention both RT#123770 and RT#124839. These tickets should be merged.
S12-construction Remove all superstitious "done"s
S12-enums utilize does-ok test assertion
S12-introspection Add tests covering RT #80694.
S12-meta Remove all superstitious "done"s
S12-methods RT #125661: Error reporting for private methods in a try
S12-subset s/lives_ok/lives-ok/g
S12-traits s/lives_ok/lives-ok/g
S13-overloading fixed appended RT number to be within quoted string
S13-syntax s/lives_ok/lives-ok/g
S13-type-casting Use isa-ok instead of isa_ok
S14-roles RT #125371, catch variable use in its own initializer
S14-traits Test submethods and traits interaction.
S15-literals Remove unneeded "done" to easy migration
S15-nfg Update cgj.t
S15-normalization Add generated normalization sanity tests.
S15-string-types .graphs is gone, remove tests and comments
S15-unicode-information fixed appended RT number to be within quoted string
S16-filehandles Add some tests for RT#113100
S16-io fix various deprecations as spotted by RAKUDO_DEPRECATIONS_FATAL=1
S16-unfiled fixed appended RT number to be within quoted string
S17-channel fix minor typo
S17-lowlevel reduce the scope of some fudges.
S17-procasync Add test to make sure we release stdin on child exit
S17-promise Test for RT #125346.
S17-scheduler Don't need no sleep with CurrentThreadScheduler
S17-supply Add basic S17 supply/whenever syntax tests.
S19-command-line-options Per design specs, -E isn't in perl6.
S19-command-line Fix test which relied on exact match of error message on JVM.
S22-package-format s/dies_ok/dies-ok/g
S24-testing Replace last 'done' with 'done-testing'
S26-documentation Fix pod test that was backwards.
S28-named-variables s/lives_ok/lives-ok/g
S29-any s/dies_ok/dies-ok/g
S29-context s/evalfile/EVALFILE/, add lexical visibility test.
S29-conversions Remove all superstitious "done"s
S29-os Add tests for RT #115390
S32-array Add test for RT#119913
S32-basics Fix thinkos and typos; Mouq++.
S32-container Remove all superstitious "done"s
S32-exceptions Add test for RT #125754
S32-hash Tests for hash slice adverb exception handling
S32-io Add test for move() and IO.move()
S32-list adjust plan
S32-num update to new sign(Int) behavior
S32-scalar Add a 'use lib' needed when running make spectest
S32-str RT #123760 update/add tests for Str-based comb
S32-temporal Add tests for RT #125872
S32-trig Re-generated files with done-testing
integration Revert ".lines returns Seq now, so fix the test."
packages Teach Test::Compile to chain compunits; add fudged tests for RT#123679
rosettacode tweak OUT override
t Add more tests for fudging
.gitignore Remove any Pugs fudges
LICENSE Add Artistic License 2
README kebab case skip-rest
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 (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:


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.