Perl::QA Hackathon in Lyon - Summary

I'm back from the Perl QA Hackathon and had a blast. I really appreciated the work that BooK and Laurent did to pull this off. And thanks to Booking.com for hosting us. In fact, we had a wide variety of sponsors and I suggest you check them out if you're looking for a new position.

To summarize what I did:

Very useful if you distribute tests across multiple boxes or want tests running in multiple processes.

This version makes it easier to migrate from Test::Class.

It's a good starting point for those (like me) who are new to Dist::Zilla.

This version makes method attributes required. There's simply too much benefit for them in tests and making them optional complicated the code too much.

This allows you to disable transactions, if you need to.

This document explains my (not so humble) opinions about what is needed to write tests for applications.

All things considered, I think this was a very successful hackathon for me. I even have a lead for a rather interesting contract.

3 Comments

Thanks for the work. I looked at your dist.ini and it makes a good start. A friend and I are looking at becoming owners to a rather largest module and might go the Dist::Zilla route with it.

Hi Ovid,

Just a quick note for your "Zen of Test Suites" particularly this bit:

https://github.com/Ovid/zen-of-test-suites#much-of-the-testing-code-is-duplicated

I've found that putting repetitive and declarative test data into arrays makes it easier to figure out which of the items failed its tests. Especially at first glance, before you realize it's a hash and the order is not guaranteed.

So something like:

my @id_tests = (
    { id => $id,
      tests => [
        [ attr1 => $expected1 ],
        [ attr2 => $expected2 ],
        [ attr3 => $expected3 ],
        [ attr4 => $expected4 ],
        [ attr5 => $expected5 ],
    ]},
    { id => $new_id,
      tests  => [
        [ attr1 => $new_expected1 ],
        [ attr2 => $new_expected2 ],
        [ attr3 => $new_expected3 ],
        [ attr4 => $new_expected4 ],
        [ attr5 => $new_expected5 ],
    ]},
);

for my $test ( @id_tests ){
      test_fetching_by_id( 'Object', $test->{id}, $tests->{test} );
}

If that adds too much syntactical overhead I would at the very least update the final test executed to include the $id so that you can figure out which object failed the test:

is $object->$attribute, $expected, "$attribute works for $class $id";

Leave a comment

About Ovid

user-pic Freelance Perl/Testing/Agile consultant and trainer. See http://www.allaroundtheworld.fr/ for our services. If you have a problem with Perl, we will solve it for you. And don't forget to buy my book! http://www.amazon.com/Beginning-Perl-Curtis-Poe/dp/1118013840/