HasVersion(3)

πŸ“¦
version 0.014 Β· 3 versions
, in epel 10

okay bestie, welcome to HasVersion(3) β€” the User Contributed Perl Documentation page for Test::HasVersion. The group chat is now in session, and yes, we're checking version numbers. 🫢

✨ NAME ✨

Test::HasVersion β€” Check Perl modules have version numbers. That's the assignment, and she ate. πŸ’…

🌸 SYNOPSIS 🌸

Test::HasVersion lets you check a Perl module has a version number in a Test::Simple fashion. Slay.

use Test::HasVersion tests => 1;
pm_version_ok("M.pm", "Valid version");

Module authors can include the following in a t/has_version.t file and let Test::HasVersion find and check all installable PM files in a distribution. iykyk:

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 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 just added? Well, bestie, that's the module you have been looking for. Use it! ✨

Do you wanna check someone else's distribution to make sure the author have 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.

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 return 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 _pm_version returns 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. She said what she said. πŸ’€

πŸ‘‘ AUTHOR πŸ‘‘

A. R. Ferreira, <ferreira@cpan.org>

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.


πŸ’– That's the whole vibe: HasVersion(3) from the User Contributed Perl Documentation, version perl v5.40.0, dated 2024-09-06. Bye bestie β€” go check those version numbers. Periodt. 🫢

πŸ“¦ where this page comes from