A faster configuration for CPAN::Reporter
The idea of CPAN::Reporter
is great: take advantage of all those daily uses of the cpan
shell to collect reports from a large network of users.
I tried several times to enable CPAN::Reporter
but I always found that it delayed just enough of my workflow that I found it a nuisance. After each test phase, it would start a SMTP connection and send the report. Those 3 or 4 seconds where a bit too much for me.
After a bit of reading I found a good compromise to report my test runs without affecting the performance. The setup is simple: make CPAN::Reporter
write the test results to a directory and create a command to send them later.
To set this up, first you install CPAN::Reporter as usual and then you tweak the configuration to store the reports in a directory. My ~/.cpanreporter/config.ini
looks like this:
email_from = "Pedro Melo" edit_report = no send_report=unknown:yes fail:yes pass:yes na:no transport=File /Users/melo/.cpan/reports
The trick is to use the File
transport. You configure it with the directory where the test reports will be stored. In my case I choose /Users/melo/.cpan/reports
. You need to make sure that directory exists.
From now on, every time you use the cpan
shell to install a module, the test reports will be stored in you test report directory.
The final step is sending them. I wrote a simple script to take care of that, that you can find on my scripts repository: x-perl-send-test-reports
(download).
How and when you run it is up to you. You can run it manually from time to time, or from a cron, or use something like folder actions to monitor the directory and start the script whenever a new file is placed there. I run it manually for now.
My command line to use the script is this:
x-perl-send-test-reports \ --from [email protected] \ --server smtp.gmail.com \ --transport 'Net::SMTP::TLS User [email protected] Password my_password Port 587' \ ~/.cpan/reports
So one less excuse not to report your test results. If you are not using CPAN::Reporter, start now.