* copyright.t - Ensures that there is a "Copyright ".([localtime]->[5]+1900) somewhere in every .pm file. Will break 11 months from now. * distribution.t - Relies on Test::Distribution, which is not in my prereq list

snipped ones that need your personal files, you are certainly right there. I wouldn't even include them at all. Put them in the MAKEFILE.SKIP.

* versionsync.t - Checks that the $VERSION is the same in all bin/* and *.pm files. This test is pointless after release, since it's already been tested before release

This one you are wrong on. It's important to have this enabled in the distribution. The reason is the following.

Imagine you add a new module, or remove a module. For various reasons (often involving things like Class::Autouse recursive loading or Module::Pluggable or similar things) you can in some cases accidentally load a module from an old version of the dist installed somewhere else in @INC.

versionsync.t (or various other implementations of it) is not only testing that the versions within the dist are synced, but that in loading your module you aren't ACCIDENTALLY loading something else you shouldn't be.

I've had it happen 2 or three times in real life now on things like PPI (which had a huge number of classes which moved a number of times) and the Email::Send problem that only got fixed a few days ado.

* pod.t - Checks POD validity. This test is pointless after release, since it's already been tested before release * pod-coverage.t - Checks POD completeness. This test is pointless after release, since it's already been tested before release

and one I have not yet employed:
* coverage.t - Ensures that Devel::Cover totals are higher than some threshold

There is some value in running these in some contexts.

If you look at the way the make/Build system works, you can see it's designed to encourage free software and distributed development.

Otherwise why would you have a Makefile for everyone that installs a module that is also capable of doing a new release.

Now personally, with the exception of pod.t I don't even include the files in my distribution. Those sorts of tests are done by my release tool.

But I'm starting to think that might be wrong...

TEST_AUTHOR or TEST_RELEASE seems like a good idea to me. It doesn't add anything to the CPAN release infrastructure, and it's easy to implement.

That said, you'd have to manually turn it on when you were releasing, and then turn if off when installing other people's modules... :/

But I don't know that I like disttest autodetection. I quite like being able to run the additional tests manually if needed, and not be limited to only during the disttest process.

Adam K

Reply via email to