Now that my baby Moose is almost all grown up it is time to go back and look at some of the missing bits in my test suits. In my last post I fixed up the default 'view' for all the 'element' attributes that my be present on a Database::Accessor.
I have checked my test suite and I at least test the elements attribute to a few levels of recursion in '31_elements.t'. Looking at that test suit I think I will pull the eight 'view' tests out of there and and create a new test case '57_dad_elements.t' that will cover those eight and all the other 'view' tests for the DAD.
If you're still not sure what to do on
CPAN Day this year,
you could help me with one of my trickle projects:
help us get META.yml and META.json files added to CPAN
distributions that currently have neither.
Send me an email and I'll assign you a distribution.
I've ordered the list of distributions based on how
far up the CPAN River they are.
Fixing these distributions results in more accurate river data,
and will also help various tools and services.
Over the past few days I have been slowly cleaning up my tests and now I am going to fix one more little problem I was having with Database::Accessor; Setting the 'view/table' of an element/field that is being passed down into a DAD.
I do have this working for most of the parts that I am sending down to the DAD but I am still missing this functionality on the 'sort/order by' so lets look at that test as a start;
Someone on #perl6 asked if Data::Dump::Tree (DDT) could display an int32 properly, and the adventure began.
I have programmed in C and C++ many years; from hardware related code to mangling libraries for RPC across different cpu architectures . Few years ago we had a very large testing and integration project that used Perl as the main development language; we had to write quite some XS even if we used SWIG extensively. So NativeCall is something that is really of interest even if nowadays I have little use for it, I still think it's a nice way of interfacing libraries.
Data::Dump::Tree works with types but NativeCall works with representation, types, and what I believe is dynamically create types for array (with VMArray representation), so it took some times to comprehend and get DDT to groak it.
use v5.12.0;
use warnings;
s/\A(?:[0369]|[147][0369]*(?:[147][0369]*[258][0369]*)*(?:[147][0369]*[147]|[258])|[258][0369]*(?:[258][0369]*[147][0369]*)*(?:[258][0369]*[258]|[147]))*(?:0|[147][0369]*(?:[147][0369]*[258][0369]*)*5|[258][0369]*(?:[258][0369]*[147][0369]*)*[258][0369]*5)\z/Fizzbuzz/,
s/\A(?:[0369]|[147][0369]*(?:[147][0369]*[258][0369]*)*(?:[147][0369]*[147]|[258])|[258][0369]*(?:[258][0369]*[147][0369]*)*(?:[258][0369]*[258]|[147]))+\z/Fizz/,
s/\A[0-9]*[05]\z/Buzz/,
say
for 1 .. 100
Basically it was a release that not really contained any shiny new features nor bug fixes. It was a release that addressed things we did wrong in our test cases. Tests especially matter whenever you want to install a module, so you could say that this version was just released to allow an installation of Bailador without running into errors.
So what happened?
Right after the previous release Gabor came along with a bug report saying Bailador raises an error during installation. The error itself happened in the test case 20-cli.t which can be considered as our first try to do some integration testing. Personally I think this is one of the test cases that didn't see much love, is not a pleasure to read, maybe because it is quite full of code and diags which are commented out. So let me point out a few things it does:
Couple of things I would like to share with fellow Perl Hackers, last month when I posted a blog about completing 1000th consecutive days releasing to CPAN, I talked about releasing new distribution to mark the day. Hence I came up with new distribution Calendar::Hebrew and released on the special day. I was hoping that my new distribution gets the attention of @PerlTricks, monthly series "What's new on CPAN". However as soon as I uploaded the distribution Calendar::Hebrew, I got email notifying the namespace Calendar::Hebrew is already owned by fellow Perl Hacker, "Yitzchak Scott-Thoennes".
I was little disappointed because of this, my new code would not be seen by others, specially @PerlTricks editor. I didn't want to miss the opportunity of getting mentioned in the July series of "What's new on CPAN". I sent an email to the owner and asked if he is planning to release code under the same namespace. To my surprise, I received reply with 24 hours, offering me the namespace. I was over the moon, honestly.
This year's Swiss Perl Workshop in Villars-sur-Ollon overlaps with the historic hill climb, consequently there are some road closures that you need to be aware of if you plan to leave early or the day after the workshop. This isn't a big deal, it just means you will leave the village a different way to that which you arrived. The following flyer details the closures, I have translated the important parts below:
Important bits: The road from Ollon to Villars will be completely closed between 9.30am to 12.30pm and 2pm to 5pm on both Saturday 26th and Sunday 27th August. Therefore the only bus running on those days between 9.30am and 5pm will be the 12.55pm (from Villars to Aigle and vice-versa).
If you wish to get down to the valley you will need to go via Gryon, to Bex. The train from Villars to Bex will not be affected by the road closures, nor will the cantonal road from Villars to Bex. There will be diversion signs in place to show you the way from Villars to Bex.
These features make it easier to log structured data which will then be picked up by log parsers. Adding a single, unblessed hashref as the last argument to a log method will write that data structure as a compact entry at the end of your log string:
use Log::Any '$LOG';
use Log::Any::Adapter 'Stdout';
$LOG->info( "Hello, World", { foo => 'bar' } );
$ perl test.pl
Hello, World {foo => "bar"}
SPVM is not another implementaion of Perl. SPVM is a language and you can call SPVM function from Perl. Installation is very easy. "cpan SPVM" or "cpanm SPVM".
Don't afraid not to run CPAN module. You can use any CPAN modules and use SPVM together.
use FindBin;
use lib "$FindBin::Bin/lib";
use SPVM 'MyModule2';
my $total = SPVM::MyModule2::foo(3, 5);
print $total . "\n";
can display two data structures side by side (DDTR::MultiColumns)
can display the difference between two data structures (DDTR::Diff)
can generate DHTM output (DDTR::DHTML)
can display a folding structure in Curses (DDTR::Folding)
can display parts of the data structure Horizontally ( :flat() )
can be used to "visit" a data structure and call callbacks you define
install Term::ANSIColor and get colored output (highly recommended)
This blog entry is about the the latest changes.
I'll start with dd, the rakudo built-in dumper, which I learner to hate and love. I certainly love it when I am debugging my module and I can't use my own data dumper. I have in this version copied a few of its features which I found better.
This new release would not happen without the endlessly caring people on #perl6.
Well I have been on a role since I started on 'Group By' so I figure I might as well get the last of the base SQL code snippets in place. The last one is 'sort' or in SQL 'ORDER BY' and why change something that isn't broke here is a new test case '
60_order_by.t
' and here it the hash I am going to start with;
This branch contains about 50 commits, which collectively optimise
various aspects of perl's behaviour when detailing with boolean values
or ops that are called in boolean context.
various boolean-related optimisations - perl.git
so about 10% of tests became marginally slower - usually due to one extra
conditional in an op to test for a private BOOL flag or ReANY(); about 70%
of tests were almost unaffected, while 20% of tests showed improvement,
most with considerable improvement, and a few with spectacular improvement.
(The 314% is for an empty @lexical tested in boolean context).
various boolean-related optimisations - perl.git
Since I started my journey of PullRequest, I always wanted to do at least one PR a day every month. I found it very tough and have only managed few times. To be precise 3 times in the year 2015 (Oct: 45, Nov: 31, Dec: 60). However the following year 2016 wasn't as good as expected, unfortunately. I could only successfully managed to do that in one month (Dec: 77). This year 2017, I am charged up again to do at least 6 months, if not at least beat my year 2015 target of 3 months. So far I could only do 2 months (Jan: 63, Jul: 32). I still have plenty of time in my hand and hopeful to get another 4 months, in the remaining months of the year.
At times, I feel like starting with one PR a week challenge and then move up slowly.
Any suggestions/ideas?