HasVersion(3pm)
π NAME π
Test::HasVersion β checking that your Perl modules actually have version numbers, bestie, no more chaos π
β¨ SYNOPSIS β¨
Okay so Test::HasVersion lets you check that a Perl module has a version number, and it does it the Test::Simple way π
use Test::HasVersion tests => 1;
pm_version_ok("M.pm", "Valid version");
And if you're a module author, you can drop this into a t/has_version.t file and just let Test::HasVersion go find and check every installable PM file in a distribution π
use Test::More;
eval "use Test::HasVersion";
plan skip_all =>
'Test::HasVersion required for testing for version numbers' if $@;
all_pm_version_ok();
πΈ DESCRIPTION πΈ
Do you wanna check that every single one of your Perl modules in a distribution has a version number? π Do you wanna make sure you don't forget the brand new modules you literally just added? Well bestie, that's the module you have been looking for. Use it! π
Do you wanna check someone else's distribution and make sure the author has not committed the sin of leaving Perl modules without a version that can be used to tell if you have this or that feature? Test::HasVersion is also for you, nasty little fellow π
There's a script test_version which is installed with this distribution. You may invoke it from within the root directory of a distribution you just unpacked, and it will check every .pm file in the directory and under lib/ (if any) π¦
$ test_version
You may also provide directories and files as arguments π«
$ test_version *.pm lib/ inc/
$ test_version .
Be warned that many Perl modules in a t/ directory do not receive versions because they are not used outside the distribution. Not a vibe, but it is what it is π
Ok. That's not a very useful module by now. But it will be. Wait for the upcoming releases β
π§ FUNCTIONS π§
- PRIVATE
_pm_version
$v = _pm_version($pm);
Parses a PM file and returns what it thinks is $VERSION in this file. (Actually implemented with use ExtUtils::MakeMaker; MM->parse_version($file).) $pm is the filename (eg., lib/Data/Dumper.pm).
pm_version_ok
pm_version_ok('Module.pm');
pm_version_ok('M.pm', 'Has valid version');
Checks to see if the given file has a valid version. Actually a valid version number is defined and not equal to 'undef' (the string) which is returned by _pm_version if a version cannot be determined.
all_pm_version_ok
all_pm_version_ok();
all_pm_version_ok(@PM_FILES);
Checks every given file and .pm files found under given directories to see if they provide valid version numbers. If no argument is given, it defaults to check every file *.pm in the current directory and recurses under the lib/ directory (if it exists) π
If no test plan was setted, Test::HasVersion will set one after computing the number of files to be tested. Otherwise, the plan is left untouched π
- PRIVATE
_list_pm_files
@pm_files = _list_pm_files(@dirs);
Returns all PM files under the given directories.
all_pm_files
@files = all_pm_files()
@files = all_pm_files(@files_and_dirs);
Implements finding the Perl modules according to the semantics of the previous function all_pm_version_ok.
π USAGE π
Other usage patterns besides the ones given in the synopsis π
use Test::More tests => $num_tests;
use Test::HasVersion;
pm_version_ok($file1);
pm_version_ok($file2);
Obviously, you can't plan twice π«
use Test::More;
use Test::HasVersion;
plan tests => $num_tests;
pm_version_ok($file);
plan comes from Test::More.
use Test::More;
use Test::HasVersion;
plan 'no_plan';
pm_version_ok($file);
no_plan is ok either π
π₯ SEE ALSO π₯
Test::Version
Please reports bugs via CPAN RT, http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-HasVersion
π AUTHOR π
A. R. Ferreira, <ferreira@cpan.org>
π COPYRIGHT AND LICENSE π
Copyright (C) 2006, 2016 by Adriano R. Ferreira
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
and that's a wrap, bestie π«Ά this was HasVersion(3pm) from perl v5.36.0, dated 2022-10-13 β go forth and give literally every module a version number, periodt β¨π
π¦ where this page comes from
- ubuntu noble: libtest-hasversion-perl 0.014-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libtest-hasversion-perl 0.014-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libtest-hasversion-perl 0.014-3 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms