This is a more or less random collection of thoughts and questions about
the rakudo testing infrastructure.

First of all I feel that it's in a rather good shape.


I put up a chart of number of tests on http://rakudo.de/ and plan to
update it regularly (via cron job once the admin installs Text::CSV_XS).


"make localtest" is very handy, among other things for fudging new test
files.
But it would be useful to have an option that makes localtest more
verbose. Specifically if a script dies, it's not obvious after which
test it died. Is there an easy way to pass an option for more verbosity?
Or should we introduce localtest-verbose make target?


I have two scripts in my local tools/ directory, both of which aren't
platform independent (only tested on linux so far). One writes a patch
for automagically unfudging tests (aka autounfudge.pl), the other
generates the chart on rakudo.de. What should I do with them? Are they
of general interest, and should live in the parrot repo? if yes, should
I send patches and ask for testing on other platforms before adding? Or
should I put them somewhere else (pugs repo, entirely different repo,
whatever)


isa_ok in pugs and rakudo seem to work differently. Many tests call
isa_ok with a string as the second argument:
isa_ok(0, 'Int');
while rakudo only understands the bare type name:
isa_ok(0, Int);
It seems to me that the latter is more intuitive, but I'd still like
some feedback before changing the tests on a larger scale.


There seems to be a thorough confusion about numeric types. for example
some tests read like this: is (1.1).WHAT, 'Num'; and then in a different
file is (1.1).WHAT, 'Rat'; That raises two questions for me
1) should we test for the value of .WHAT at all (unless for testing WHAT
of course)? It seems to me that a compiler should have the freedom to
return a different subtype (for example 1 could be a PositiveInt as long
as PositiveInt is an Int; that's a contrived example, but you get the
picture)
2) How do we know which numeric type is a class and which is a role? Is
 there an explicit spec about the types of number literals? That could
have some impact on type checking in the tests. (Maybe I should prod p6l
with that).


I've attached a list of skip messages from spectest_regression, roughly
sorted into categories, some messages commented by me (in parenthesis).


Finally I'd like to point out some annoyances with rakudo. It's rather
frustrating (for example while fudging a large test file) to get an
error message that can't easily be mapped to a location in the source file.
The two most frequent ones are the Null PMC access in the type checker
(as reported by Ovid), and "Method 'lvalue' not found for invocant of
class 'PAST::Stmts'", which I finally tracked down to ($x, $y) = (1, 2).
The latter seems to fit into the category "not yet implemented". If it
is indeed, it would be nice to have it fail with line number information
(I guess the various Past:: nodes already have line information attached
- would it be possible to print that whenever something fails that
involves Past nodes? Perhaps that information wouldn't be too accurate,
but it's already a success if I know which part of the file I should be
looking at).


Sorry for being a bit lengthy, I'd welcome any comments.
Cheers,
Moritz

-- 
Moritz Lenz
http://moritz.faui2k3.org/ |  http://perl-6.de/
Feature
    4 skipped: calling postcircumfix:<()> with a dot
    9 skipped: whatever star
    1 skipped: whatever star not implemented
    7 skipped: prefix:<\>
    21 skipped: prefix:<\> not implemented
    4 skipped: int, num, undef assign not implemented
    1 skipped: Can't compare to undef (?)
    3 skipped: {} hash composer not implemented
    6 skipped: eqv and {} as hash composer not implemented
    1 skipped: @() should be the same as @($/)
    9 skipped: CATCH blocks not implemented
    4 skipped: No pointy blocks on while loops yet
    20 skipped: method fallback to sub unimpl
    100 skipped: No method unpolar yet
    20 skipped: No method unpolar
    5 skipped: promote Int to Num
    2 skipped: colon invocant syntax
    2 skipped: no hashes at the moment
    18 skipped: adverbial closure
    6 skipped: adverbial closure
    2 skipped: adverbial closure
    5 skipped: adverbial closure
    2 skipped: method fallback unimplemented
    12 skipped: colon invocant syntax
    1 skipped: %p doesn't yet throw exception
    3 skipped: Inf and NaN not yet implemented
    6 skipped: module Num not implemented
    2 skipped: NaN not implemented
    42 skipped: can't parse pi (actually exp() and prefix:<-> for Complex)
    1 skipped: unicode
    2 skipped: unicode
    2 skipped: unicode

Bugs
    2 skipped: lexicals bug RT#56184
    4 skipped: weird errors
    2 skipped: underscores cause weird IMCC errors
    3 skipped: type checking bug
    4 skipped: try{} does not keep test from failing
    1 skipped: zip and @@ are broken
    1 skipped: test passes but Parrot bug gets in the way
    1 skipped: Arity problem
    4 skipped: no sub srand() (actually a bug in type checker)

Parse
    10 skipped: only the return type "of" parses correctly
    1 skipped: can't parse
    3 skipped: $ $a parsefail
    1 skipped: '(@ 3)' parsefail
    1 skipped: "(@ $a)" parsefail
    2 skipped: parsefail: sigil coercion
    5 skipped: parsefail: meta cross op not implemented
    1 skipped: parsefail: meta cross op not implemented, eval dies
    9 skipped: parse failure: pointy block as an expression
    7 skipped: parsefail
    1 skipped: can't parse
    2 skipped: parsefail
    24 skipped: parsefail
    3 skipped: don't parse
    1 skipped: can't parse
    4 skipped: parsefail

Dunno/Dubious/Unclassified
    1 skipped: zip does not work
    1 skipped: zip is broken (probably missing slice context)
    4 skipped: Won't test &connect as environment variable "PERL_TESTS_ALLOW_NETWORK" is not true.
    1 skipped: feature
    1 skipped: eval not implemented
    5 skipped: unspecced

Reply via email to