Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

masak (6289)

  (email not shown publicly)

Been programming Perl since 2001. Found Perl 6 somewhere around 2004, and fell in love. Now developing November (a Perl 6 wiki), Druid (a Perl 6 board game), pls (a Perl 6 project installer), GGE (a regex engine), and Yapsi (a Perl 6 implementation). Heavy user of and irregular committer to Rakudo.

Journal of masak (6289)

Sunday May 09, 2010
10:03 AM

The tests Rakudo doesn't run

[ #40349 ]

Just a short note.

After an enlightening discussion with mberends a couple of days ago, I became curious about how many spectests Rakudo doesn't run.

So I wrote a short script which takes a list of all spectest .t files, a list of all the files mentioned in Rakudo's t/ (including the commented-out ones), and did hash subtraction on them.

By the way, a common Perl 5 idiom in this situation is difficult to do in Rakudo, because some blocks are still erroneously parsed as hashes:

$ perl6
> my @array; my %hash = map { $_ => 1 }, @array;
No candidates found to invoke
> say { $_ => 1 }.WHAT

Working around this, I arrived at the number 185. That's out of a total of 722. Here's the whole list.

Not too surprisingly, upon showing this list to #perl6, I was quickly informed (by the ever-knowledgeable moritz++) that there's already a Rakudo tool script which processes exactly this list of tests, and prints the much more useful subset of files with at least one test passing, thus being eligible for inclusion into t/

I hope to be able to explore the spectest suite further, in my copious spare time. My long-term goal is to create alluring SVG graphs over the tests currently passing in Rakudo master, Rakudo alpha, and Pugs.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • my %hash;
    %hash{@array} = 1 xx @array;

    Actually I like that better than the map, but I agree it sucks that the map version doesn't work right now.

    • I think I like it better too. Just gotta internalize it :)

      Hm, once laziness is in place, one could even do '1 xx *'. That pleases me.

      • Some variation on this ought to work:

        my %hash = @array X 1;

        That would seem like the most direct expression of what one wants.

        But I can’t quite figure out the right incantation.

        • This should work indeed, but currently suffers from a lack of list flattening in Rakudo. Specifically

          my @a = <a b c>;
          say (@a X 1).perl; # ("a", 1, "b", 1, "c", 1)
          say (@a X 1).elems; # 3

          And then the hash assignment complains about an odd number of elements.

          One can explictly construct Pair objects though:

          my %h = @a X=> 1;
          say %h.perl; # {"a" => 1, "b" => 1, "c" => 1}

          Which is maybe a bit prettier than colomon's solution, but we can argue about that :-)

    • what's the matter with %hash = @array >>=>>> 1 ? (might not work with texas hyper, but does with the normal hyper.)