Trove — yet another scalable and configurable TAP-tool for flexible unit testing. It supports iterative test model, based on stages, could be integrated to modern CI/CD chains and exports coverage data to Coveralls service. Trove is currently presented and maintained in both Perl & Raku ecosystems.
AbstractTrove — yet another TAP tool for flexible unit testing. It basically focuses on Perl and Raku modules, but eventually could be used for any software. Trove is scalable and configurable tool. It supports iterative test model, based on stages, could be easily integrated to modern CI/CD environments and delivers coverage history & statistics data export to Coveralls service. Trove is currently presented and maintained in both Perl & Raku ecosystems, so we can consider it as a versatile Perl family tool
Since the early
Pheix versions, I have paid a lot of attention to testing system. Initially it was a set of unit tests – I tried to cover a huge range of units like classes, methods, subroutines and conditions. In some cases I have combined unit and functional testing within one .t file, like it’s done to verify Ethereum or API related functionality.
Tests became a bit complicated and environment dependent. For example off chain testing like trivial prove6 -Ilib ./t should skip any Ethereum tests including some API units, but not template engine or cross module API communications. So I had to create environment dependent configurations and since that point I started yet another test tool inventing. In a middle of June 2022, I introduced Coveralls support and got a few requests to publish this test tool separately from Pheix. Consider that moment as a Trove module birth 👶
Generally Trove is based on idea to create yet another
prove6-like application: the wrapper over the unit tests in t folder. But with custom configuration, out-of-the-box Github and Gitlab CI/CD integration, extended logging and test-dependable options. Trove includes trove-cli script as a primary worker for batch testing. It iterates over pre-configured stages and runs specific unit test linked to the stage. trove-cli is console oriented – all output is printed to standard data streams. Input is taken from command line arguments and configuration file.
In this talk I would like to concentrate on practical aspects of Trove usage: integration with Perl & Raku projects, application in daily DevOps, exporting the test coverage and statistics to 3rd-party services, configuration best practices and command line tricks. We will talk about performance, discuss the perspectives and highlight the most wanted features (or in opposite – the worst ones). Finally I will present Q3/Q4-2023 roadmap and the change list of the upcoming release.
My talk is relevant to QA engineers, developers and bug bounty hunters, as well as enthusiasts and contributors, who use Perl & Raku in daily CI/CD process.