Last call for review of Test-Builder using Test2 (Formerly Test-Stream).
On October 29th, 2015, I released Test-Stream as stable. I did this because I felt it was ready, and because I was no longer receiving any feedback from perl-qa asking me to change things. Since that release, the feedback picked up substantially. It seems that declaring something done is the best way to find out ways in which it is not actually done.
Here are the big things people wanted:
- Split the dist into multiple dists, making the internals and tools separate.
- Abandon the loader system (use Test::Stream -/:/etc)
- Loosen the tight coupling of Test::Steam to TAP
- Make context() less magic (don’t use INTERNALS::SvREFCNT)
- Use less import() magic
- Better namespace structuring
- Changes to how SKIP and TODO are implemented
We decided that the best way forward was to forget about compatibility with Test-Stream, which is still new enough that it is not seeing much use, and make a new name with everyone’s changes. That’s Test2.
After the split there are 3 distributions:
- Test2 (https://metacpan.org/pod/Test2) - The guts. No tools, just the things to make tools. This is what Test::Builder will be using.
- Test2::Suite (https://metacpan.org/pod/Test2::Suite) - New tools as an alternative to Test::More and friends, built directly on Test2 instead of Test::Builder
- Test2::Workflow (https://metacpan.org/pod/Test2::Workflow) - The ‘spec’ plugin and workflow extension from Test::Stream. This was big enough to be a separate distribution.
Test2::Suite and Test2::Workflow are optional systems. I think you’ll find them very useful, but they’re not the key deliverable. That’s Test2, which is meant to replace Test::Builder’s guts. Test::Builder will be a backward compatibility layer on top of Test2.
As of the latest releases of Test2 and Test2-Suite I am considering the work done to my specifications and intentions. Now is the time to review these and make commentary. Once this goes stable it will become much harder, if not impossible, to make sweeping changes. If there is anything in these distributions (Test2 in particular) that makes you uncomfortable, you need to speak now. I am not yet ready to say Test2-Workflow is complete.
The work to make Test::Builder use Test2 under the hood is also complete.
On CPAN: https://metacpan.org/pod/release/EXODIST/Test-Simple-1.302013_011/lib/Test/Builder.pm
On Github: https://github.com/Test-More/test-more/tree/Test2/master
Blead Patch Ticket: https://rt.perl.org/Public/Bug/Display.html?id=127000#txn-1385453
This work has been through several verification procedures:
- CPAN Smoking by Andreas König
- My own testing against CPAN distributions
- Blead patches I have written (though to date nobody has merged it in)
- A comparison of verbose testing output on blead with and without my patch https://github.com/exodist/bleadstreamdiff
Note: The preferred form of feedback is tickets on the relevant github projects.