Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

RFC: Confirming module being tested

by RonW (Vicar)
on Jul 31, 2017 at 23:33 UTC ( #1196388=perlmeditation: print w/replies, xml ) Need Help??

In #p5p finds your lack of failing tests disturbing, there was discussion about Perl no longer including the current directory in @INC and how this would affect modules that load other files. In the referenced post, http://www.nntp.perl.org/group/perl.perl5.porters/2017/03/msg243722.html, the author, Mr Fredric, seems concerned that testing environments, such as Test::More may not be working correctly.

From that, it occurred to me that it might be wise for tests to confirm that the module being tested is the one the test expects.

Today, the noderep ticker "reminded" me about this concern, so I wrote a first draft of a version confirmation test:

use 5.006; use strict; use warnings FATAL => 'all'; use Parse::CPAN::Meta; use File::Spec::Functions qw(catfile); use Test::More tests => 2; BEGIN { diag( "Testing My::Module" ); use_ok( 'My::Module' ); } my $loaded_ver = $My::Module::VERSION; my @metafiles = qw( META.json META.yaml ); my $md; for (@metafiles) { my $mf = catfile('..', $_); next unless (-f $mf); $md = Parse::CPAN::Meta->load_file($mf); next unless (defined $md); if ($md->{version} == $loaded_ver) { pass('version check'); } else { BAIL_OUT('Expected ver ' . $md->{version} . ", got ver $loaded +_ver"); } } BAIL_OUT('Missing META.json and META.yaml') unless (defined $md);

Edit: Corrected typo in title.

Update: Use catfile()

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://1196388]
Approved by Athanasius
Front-paged by Arunbear
help
Chatterbox?
and cookies bake in the oven...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (6)
As of 2017-10-21 03:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My fridge is mostly full of:

















    Results (269 votes). Check out past polls.

    Notices?