Test-Version-1.002004000755001750001750 012243367155 17165 5ustar00xenoterracidexenoterracide000000000000README100644001750001750 646712243367155 20143 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004NAME Test::Version - Check to see that version's in modules are sane VERSION version 1.002004 SYNOPSIS use Test::More; use Test::Version 1.001001 qw( version_all_ok ), { is_strict => 0, has_version => 1, }; # test blib or lib by default version_all_ok(); done_testing; DESCRIPTION This module's goal is to be a one stop shop for checking to see that your versions across your dist are sane. Please ensure that you use version 0.04 or later only, as earlier versions are old code and may not work correctly. Current feature list: module has a version Tests to insure that all modules checked have a VERSION defined, Can replace Test::HasVersion module has a valid version Tests to insure that all versions are valid, according to the rules of version method "is_lax". To quote: *The lax criteria corresponds to what is currently allowed by the version parser. All of the following formats are acceptable for dotted-decimal formats strings:* v1.2 1.2345.6 v1.23_4 1.2345 1.2345_01 *If you want to limit yourself to a much more narrow definition of what a version string constitutes, is_strict() is limited to version strings like the following list:* v1.234.5 2.3456 you can cause your tests to fail if not strict by setting is_strict to 1 FUNCTIONS version_ok version_ok( $filename, [ $name ] ); Test a single ".pm" file by passing a path to the function. Checks if the module has a version, and that it is valid with "is_lax". version_all_ok version_all_ok( [ $directory, [ $name ]] ); Test all modules in a directory with "version_ok". By default it will check "blib" or "lib" if you haven't passed it a directory. CONFIGURATION AND ENVIRONMENT has_version use Test::Version qw( version_all_ok ), { has_version => 0 }; Allows disabling whether a module has to have a version. If set to 0 version tests will be skipped in any module where no version is found. really doesn't make sense to use with just version_ok is_strict use Test::Version { is_strict => 1 }; this allows enabling of versions "is_strict" checks to ensure that your version is strict. SEE ALSO The goal is to have the functionality of all of these. Test::HasVersion Test::ConsistentVersion Test::GreaterVersion BUGS Please report any bugs or feature requests on the bugtracker website https://github.com/xenoterracide/test-version/issues When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. CONTRIBUTORS * Graham Ollis * Michael G. Schwern * Mike Doherty * particle AUTHOR Caleb Cushing COPYRIGHT AND LICENSE This software is Copyright (c) 2013 by Caleb Cushing. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible) Changes100644001750001750 531612243367155 20546 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004Revision history for Test-Version 1.002004 2013-11-21 - fix bugs in argument handling - fix whitespace 1.002003 2013-10-14 - fix misgithap - more dist.ini updates 1.002002 2013-10-14 - fix synopsis GH #6, #7 ( plicease ) - change Dist::Zilla Plugins - remove old documentation that no longer applies 1.002001 2012-03-14 - fix metadata caused by a bug in DZP::GitHub after asking repo to be unlinked from gitpan. 1.002000 2012-01-09 - use Module::Metadata - allow disabling of 'has_version' - require at least 1 version - allow for checking that a module is_strict 1.001003 2011-12-01 - use Module::Metadata apparently it's closer to how Perl works than Module::Extract::VERSION 1.001002 2011-11-02 - fix some issues in the pod 1.001001 2011-11-01 - provide is_strict setting to replace STRICTNESS - provide has_version setting to disable that a module must always have a version - use perl decimal style semantic versioning because of bugs in EUMM with vstring versions v1.1.0 2011-08-14 - check if versions are strict - provide STRICTNESS settings to decide what to do if they aren't strict 1.0.0 2011-07-01 - Change to Semantic Versioning - Consider API Stable - No real changes since version 0.11 0.11 2011-06-18 - correct the version of version.pm that we need to depend on. is_lax was not properly exported until version 0.86 0.10 2011-06-08 - fix warning on bad api call #1 - make diagnostics human readable #1 - remove diagnostics from pod #1 - change return values #1 - improve tests #1 0.09 2011-06-07 - Test for FILE_NOT_DEFINED was not actually included in the last release. Add it. 0.08 2011-06-04 - test NO_FILE and FILE_NOT_DEFINED - document only use 0.04 or later - fix 04-all.t test that compares the arrays 0.07 2011-05-29 - more documentation - don't use diag for VERSION_OK status 0.06 2011-05-28 - update diag messages - check that $file exists - switch to Test::Tester exclusively - fix 04-all.t from failing due to array order being random 0.05 2011-05-27 - switch to Test::Tester for some tests. - update changelog for 0.04 due to leaving featurelist out 0.04 2011-05-26 - Release new codebase as a trial version - Ability to iterate through a directory checking versions with version_all_ok() - validate versions with is_lax 0.03 2011-05-26 - Maintainership passed to Caleb Cushing - Deprecate "expected" parameter to version_ok - Switch to Dist::Zilla for release management 0.02 2002-11-18 - removed rogue 'plan' statement in Version.pm, which was causing test failure 0.01 2002-11-17 - original version; created by h2xs 1.21 with options -AX Test::Version t000755001750001750 012243367155 17351 5ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004all.t100644001750001750 77012243367155 20432 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::Tester; use Test::Version qw( version_all_ok ); use Test::More; my ( $premature, @results ) = run_tests( sub { version_all_ok('corpus'); } ); is( scalar(@results), 5, 'correct number of results' ); my @oks; foreach my $result ( @results ) { push @oks, $result->{ok}; } my $sorted = [ sort @oks ]; my $expected = [ ( 0, 0, 1, 1, 1 ) ]; note( 'unsorted oks: ', @oks ); is_deeply( $sorted, $expected, 'oks are ok' ); done_testing; LICENSE100644001750001750 2152212243367155 20275 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004This software is Copyright (c) 2013 by Caleb Cushing. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible) The Artistic License 2.0 Copyright (c) 2000-2006, The Perl Foundation. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. Definitions "Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package. "Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. "You" and "your" means any person who would like to copy, distribute, or modify the Package. "Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. "Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. "Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. "Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. "Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. "Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. "Source" form means the source code, documentation source, and configuration files for the Package. "Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. Permission for Use and Modification Without Distribution (1) You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. Permissions for Redistribution of the Standard Version (2) You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. (3) You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. Distribution of Modified Versions of the Package as Source (4) You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: (a) make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. (b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under (i) the Original License or (ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source (5) You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. (6) You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. Aggregating or Linking the Package (7) You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. (8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. Items That are Not Considered Part of a Modified Version (9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. General Provisions (10) Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. (11) If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. (12) This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. (13) This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. pass.t100644001750001750 55112243367155 20625 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::Tester tests => 8; use Test::More; use Test::Version qw( version_ok ); my $ret; check_test( sub { $ret = version_ok( 'corpus/pass/Foo.pm' ); }, { ok => 1, name => q[check version in 'corpus/pass/Foo.pm'], diag => '', }, 'version ok' ); ok $ret, "version_ok() returned true on pass"; fail.t100644001750001750 70112243367155 20567 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::Tester tests => 8; use Test::More; use Test::Version qw( version_ok ); my $ret; check_test( sub { $ret = version_ok( 'corpus/fail/FooBarBaz.pm' ); }, { ok => 0, name => q[check version in 'corpus/fail/FooBarBaz.pm'], diag => qq[The version 'v.Inf' found in 'corpus/fail/FooBarBaz.pm' is invalid.], }, 'version invalid' ); ok !$ret, "version_ok() returned false on fail"; META.yml100644001750001750 231612243367155 20521 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004--- abstract: "Check to see that version's in modules are sane" author: - 'Caleb Cushing ' build_requires: File::Spec: 0 IO::Handle: 0 IPC::Open3: 0 Test::Exception: 0 Test::More: 0.88 Test::Tester: 0 configure_requires: ExtUtils::MakeMaker: 6.30 dynamic_config: 0 generated_by: 'Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830' license: artistic_2 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Test-Version no_index: directory: - corpus file: - perlcritic.rc provides: Test::Version: file: lib/Test/Version.pm version: 1.002004 requires: Carp: 0 Exporter: 0 File::Find::Rule::Perl: 0 Module::Metadata: 0 Test::Builder: 0 Test::More: 0.88 parent: 0 perl: 5.006 strict: 0 version: 0.86 warnings: 0 resources: bugtracker: https://github.com/xenoterracide/test-version/issues homepage: https://metacpan.org/dist/Test-Version repository: git://github.com/xenoterracide/test-version.git version: 1.002004 x_contributors: - 'Graham Ollis ' - 'Michael G. Schwern ' - 'Mike Doherty ' - 'particle ' MANIFEST100644001750001750 137112243367155 20401 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004CONTRIBUTING Changes LICENSE MANIFEST META.json META.yml Makefile.PL README corpus/fail/FooBarBaz.pm corpus/not_strict/NotStrict.pm corpus/noversion/FooBar.pm corpus/pass/Foo.pm lib/Test/Version.pm perlcritic.rc t/00-compile.t t/000-report-versions-tiny.t t/all-has-version-false.t t/all.t t/at-least-one-version.t t/author-critic.t t/author-pod-spell.t t/author-test-eol.t t/fail.t t/file-not-defined.t t/no-file.t t/noversion.t t/pass.t t/release-cpan-changes.t t/release-dist-manifest.t t/release-distmeta.t t/release-meta-json.t t/release-minimum-version.t t/release-mojibake.t t/release-pod-coverage.t t/release-pod-linkcheck.t t/release-pod-syntax.t t/release-portability.t t/release-synopsis.t t/release-test-version.t t/release-unused-vars.t t/strict.t META.json100644001750001750 461012243367155 20670 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004{ "abstract" : "Check to see that version's in modules are sane", "author" : [ "Caleb Cushing " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830", "license" : [ "artistic_2" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "Test-Version", "no_index" : { "directory" : [ "corpus" ], "file" : [ "perlcritic.rc" ] }, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "6.30" } }, "develop" : { "requires" : { "Pod::Coverage::TrustPod" : "0", "Test::CPAN::Changes" : "0.19", "Test::CPAN::Meta" : "0", "Test::Pod" : "1.41", "Test::Pod::Coverage" : "1.08", "version" : "0.9901" } }, "runtime" : { "requires" : { "Carp" : "0", "Exporter" : "0", "File::Find::Rule::Perl" : "0", "Module::Metadata" : "0", "Test::Builder" : "0", "Test::More" : "0.88", "parent" : "0", "perl" : "5.006", "strict" : "0", "version" : "0.86", "warnings" : "0" } }, "test" : { "requires" : { "File::Spec" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", "Test::Exception" : "0", "Test::More" : "0.88", "Test::Tester" : "0" } } }, "provides" : { "Test::Version" : { "file" : "lib/Test/Version.pm", "version" : "1.002004" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/xenoterracide/test-version/issues" }, "homepage" : "https://metacpan.org/dist/Test-Version", "repository" : { "type" : "git", "url" : "git://github.com/xenoterracide/test-version.git", "web" : "https://github.com/xenoterracide/test-version" } }, "version" : "1.002004", "x_contributors" : [ "Graham Ollis ", "Michael G. Schwern ", "Mike Doherty ", "particle " ] } strict.t100644001750001750 74212243367155 21171 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::Tester; use Test::More; use Test::Version qw( version_ok ), { is_strict => 1 }; my $ret; check_test( sub { $ret = version_ok( 'corpus/not_strict/NotStrict.pm' ); }, { ok => 0, name => q[check version in 'corpus/not_strict/NotStrict.pm'], diag => qq[The version '0.1.0' found in 'corpus/not_strict/NotStrict.pm' is not strict.], }, ); is $ret, 0, "version_ok() returns false unless strict"; done_testing; no-file.t100644001750001750 36712243367155 21215 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::More; use Test::Exception; use Test::Version qw( version_ok ); dies_ok { version_ok( 'corpus/nofile/nofile.pm' ) } 'file "corpus/nofile/nofile.pm" does not exist' ; done_testing; Makefile.PL100644001750001750 315712243367155 21226 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004 use strict; use warnings; use 5.006; use ExtUtils::MakeMaker 6.30; my %WriteMakefileArgs = ( "ABSTRACT" => "Check to see that version's in modules are sane", "AUTHOR" => "Caleb Cushing ", "BUILD_REQUIRES" => {}, "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => "6.30" }, "DISTNAME" => "Test-Version", "EXE_FILES" => [], "LICENSE" => "artistic_2", "NAME" => "Test::Version", "PREREQ_PM" => { "Carp" => 0, "Exporter" => 0, "File::Find::Rule::Perl" => 0, "Module::Metadata" => 0, "Test::Builder" => 0, "Test::More" => "0.88", "parent" => 0, "strict" => 0, "version" => "0.86", "warnings" => 0 }, "TEST_REQUIRES" => { "File::Spec" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Test::Exception" => 0, "Test::More" => "0.88", "Test::Tester" => 0 }, "VERSION" => "1.002004", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "Carp" => 0, "Exporter" => 0, "File::Find::Rule::Perl" => 0, "File::Spec" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Module::Metadata" => 0, "Test::Builder" => 0, "Test::Exception" => 0, "Test::More" => "0.88", "Test::Tester" => 0, "parent" => 0, "strict" => 0, "version" => "0.86", "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); CONTRIBUTING100644001750001750 2220212243367155 21116 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004Checklist (and a short version for the impatient): Commits: * make sure your work applies cleanly to branch master, it is not the default branch. `git checkout * master`, you are welcome to run tests from build/master to avoid needing Dist::Zilla * make commits of logical units * check for unnecessary whitespace with "git diff --check" before committing * do not check in commented out code or unneeded files * the first line of the commit message should be a short description and should skip the full stop * the body should provide a meaningful commit message, which: * uses the imperative, present tense: "change", not "changed" or "changes". * includes motivation for the change, and contrasts its implementation with previous behaviour * if you want your work included in the main repository, add a "Signed-off-by: Your Name " line to the commit message (or just use the option "-s" when committing) to confirm that you agree to the Developer's Certificate of Origin * make sure that you have tests for the bug you are fixing * make sure that the test suite passes after your commit. This distribution is built with Dist::Zilla ensure that running `dzil test` passes. You are responsible for ensuring that generated, hand written and author tests pass. Patch: * if you change, add, or remove any features or make some other user interface change, the associated documentation should be updated as well. * if your name is not writable in ASCII, make sure that you send the patch in the correct encoding. Long version: I started reading over the SubmittingPatches document for git, primarily because I wanted to have a document similar to it for my projects to make sure people understand what they are doing when they write "Signed-off-by" line. But the patch submission requirements are a lot more relaxed here on the technical/contents front, because my projects are thousand times smaller ;-). So here is only the relevant bits. (0) Decide what to base your work on. In general, always base your work on the oldest branch that your change is relevant to. * A bugfix should be based on 'maint' in general. If the bug is not present in 'maint', base it on 'master'. For a bug that's not yet in 'master', find the topic that introduces the regression, and base your work on the tip of the topic. If a 'maint' branch is not present base it on master. * A new feature should be based on 'master' in general. If the new feature depends on a topic that is in 'pu', but not in 'master', base your work on the tip of that topic. * Corrections and enhancements to a topic not yet in 'master' should be based on the tip of that topic. If the topic has not been merged to 'next', it's alright to add a note to squash minor corrections into the series. * In the exceptional case that a new feature depends on several topics not in 'master', start working on 'next' or 'pu' privately and send out patches for discussion. Before the final merge, you may have to wait until some of the dependent topics graduate to 'master', and rebase your work. To find the tip of a topic branch, run "git log --first-parent master..pu" and look for the merge commit. The second parent of this commit is the tip of the topic branch. (1) Make separate commits for logically separate changes. Unless your patch is really trivial, you should not be sending out a patch that was generated between your working tree and your commit head. Instead, always make a commit with complete commit message and generate a series of patches from your repository. It is a good discipline. Describe the technical detail of the change(s). If your description starts to get too long, that's a sign that you probably need to split up your commit to finer grained pieces. That being said, patches which plainly describe the things that help reviewers check the patch, and future maintainers understand the code, are the most beautiful patches. Descriptions that summarise the point in the subject well, and describe the motivation for the change, the approach taken by the change, and if relevant how this differs substantially from the prior version, can be found on Usenet archives back into the late 80's. Consider it like good Netiquette, but for code. Oh, another thing. I am picky about whitespaces. Make sure your changes do not trigger errors with the sample pre-commit hook shipped in templates/hooks--pre-commit. To help ensure this does not happen, run git diff --check on your changes before you commit. (2) Generate your patch using git tools out of your commits. git based diff tools (git, Cogito, and StGIT included) generate unidiff which is the preferred format. You do not have to be afraid to use -M option to "git diff" or "git format-patch", if your patch involves file renames. The receiving end can handle them just fine. Please make sure your patch does not include any extra files which do not belong in a patch submission. Make sure to review your patch after generating it, to ensure accuracy. Before sending out, please make sure it cleanly applies to the "master" branch head. If you are preparing a work based on "next" branch, that is fine, but please mark it as such. (4) Sign your work To improve tracking of who did what, we've borrowed the "sign-off" procedure from the Linux kernel project on patches that are being emailed around. Although this project is a lot smaller it is a good discipline to follow it. The sign-off is a simple line at the end of the explanation for the patch, which certifies that you wrote it or otherwise have the right to pass it on as a open-source patch. The rules are pretty simple: if you can certify the below: Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. then you just add a line saying Signed-off-by: Random J Developer This line can be automatically added by git if you run the git-commit command with the -s option. Notice that you can place your own Signed-off-by: line when forwarding somebody else's patch with the above rules for D-C-O. Indeed you are encouraged to do so. Also notice that a real name is used in the Signed-off-by: line. Please don't hide your real name. Some people also put extra tags at the end. "Acked-by:" says that the patch was reviewed by the person who is more familiar with the issues and the area the patch attempts to modify. "Tested-by:" says the patch was tested by the person and found to have the desired effect. An ideal patch flow Here is an ideal patch flow for this project the current maintainer suggests to the contributors: 0. You come up with an itch. You code it up. 1. Send it to the bug tracker and cc people who may need to know about the change. The people who may need to know are the ones whose code you are butchering. These people happen to be the ones who are most likely to be knowledgeable enough to help you, but they have no obligation to help you (i.e. you ask for help, don't demand). "git log -p -- $area_you_are_modifying" would help you find out who they are. 2. You get comments and suggestions for improvements. You may even get them in a "on top of your change" patch form. 3. Polish, refine, and re-send to the the people who spend their time to improve your patch. Go back to step (2). 4. A topic branch is created with the patch and is merged to 'next', and cooked further and eventually graduates to 'master'. In any time between the (2)-(3) cycle, the maintainer may pick it up from the list and queue it to 'pu', in order to make it easier for people play with it without having to pick up and apply the patch to their trees themselves. Know the status of your patch after submission * You can use Git itself to find out when your patch is merged in master. 'git pull --rebase' will automatically skip already-applied patches, and will let you know. This works only if you rebase on top of the branch in which your patch has been merged (i.e. it will not tell you if your patch is merged in pu if you rebase on top of master). perlcritic.rc100644001750001750 3212243367155 21667 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004severity = 3 verbose = 9 noversion.t100644001750001750 53712243367155 21705 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::Tester tests => 7; use Test::Version qw( version_ok ); check_test( sub { version_ok( 'corpus/noversion/FooBar.pm' ); }, { ok => 0, name => q[check version in 'corpus/noversion/FooBar.pm'], diag => q[No version was found in 'corpus/noversion/FooBar.pm'.], }, 'no version' ); 00-compile.t100644001750001750 171112243367155 21543 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/tuse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.037 use Test::More tests => 1 + ($ENV{AUTHOR_TESTING} ? 1 : 0); my @module_files = ( 'Test/Version.pm' ); # no fake home requested my $inc_switch = -d 'blib' ? '-Mblib' : '-Ilib'; use File::Spec; use IPC::Open3; use IO::Handle; my @warnings; for my $lib (@module_files) { # see L open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!"; my $stderr = IO::Handle->new; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]"); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$lib loaded ok"); if (@_warnings) { warn @_warnings; push @warnings, @_warnings; } } is(scalar(@warnings), 0, 'no warnings found') if $ENV{AUTHOR_TESTING}; author-critic.t100644001750001750 66612243367155 22443 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use strict; use warnings; use Test::More; use English qw(-no_match_vars); eval "use Test::Perl::Critic"; plan skip_all => 'Test::Perl::Critic required to criticise code' if $@; Test::Perl::Critic->import( -profile => "perlcritic.rc" ) if -e "perlcritic.rc"; all_critic_ok(); pass000755001750001750 012243367155 21367 5ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/corpusFoo.pm100644001750001750 6112243367155 22545 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/corpus/passpackage Foo; BEGIN { our $VERSION = '1.0'; } 1; Test000755001750001750 012243367155 20573 5ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/libVersion.pm100644001750001750 1374012243367155 22743 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/lib/Testpackage Test::Version; use 5.006; use strict; use warnings; use Carp; our $VERSION = '1.002004'; # VERSION use parent 'Exporter'; use Test::Builder; use version 0.86 qw( is_lax is_strict ); use File::Find::Rule::Perl; use Test::More; use Module::Metadata; our @EXPORT = qw( version_all_ok ); ## no critic (Modules::ProhibitAutomaticExportation) our @EXPORT_OK = qw( version_ok ); my $cfg; sub import { ## no critic qw( Subroutines::RequireArgUnpacking Subroutines::RequireFinalReturn ) my @exports; foreach my $param ( @_ ) { unless ( ref( $param ) eq 'HASH' ) { push @exports, $param; } else { $cfg = $param } } $cfg->{is_strict} = defined $cfg->{is_strict} ? $cfg->{is_strict} : 0 ; $cfg->{has_version} = defined $cfg->{has_version} ? $cfg->{has_version} : 1 ; __PACKAGE__->export_to_level( 1, @exports ); } my $version_counter = 0; sub _get_version { my $pm = shift; my $info = Module::Metadata->new_from_file( $pm ); return $info->version; } my $test = Test::Builder->new; sub version_ok { my ( $file, $name ) = @_; $file ||= ''; $name ||= "check version in '$file'"; croak 'No file passed to version_ok().' unless $file; croak "'$file' doesn't exist." unless -e $file; my $version = _get_version( $file ); if ( not $version and not $cfg->{has_version} ) { $test->skip( 'No version was found in "' . $file . '" and has_version is false' ) ; return 1; } else { $version_counter++; } unless ( $version ) { $test->ok( 0 , $name ); $test->diag( "No version was found in '$file'." ); return 0; } unless ( is_lax( $version ) ) { $test->ok( 0, $name ); $test->diag( "The version '$version' found in '$file' is invalid." ); return 0; } if ( $cfg->{is_strict} ) { unless ( is_strict( $version ) ) { $test->ok( 0, $name ); $test->diag( "The version '$version' found in '$file' is not strict." ); return 0; } } $test->ok( 1, $name ); return 1; } sub version_all_ok { my ( $dir, $name ) = @_; $dir = defined $dir ? $dir : -d 'blib' ? 'blib' : 'lib' ; croak $dir . ' does not exist, or is not a directory' unless -d $dir; # Report failure location correctly - GH #1 local $Test::Builder::Level = $Test::Builder::Level + 1; ## no critic (Variables::ProhibitPackageVars) $name ||= "all modules in $dir have valid versions"; my @files = File::Find::Rule->perl_module->in( $dir ); foreach my $file ( @files ) { version_ok( $file ); } # has at least 1 version in the dist if ( not $cfg->{has_version} and $version_counter < 1 ) { $test->ok( 0, $name ); $test->diag( 'Your dist has no valid versions defined. ' . 'Must have at least one version' ); } else { $test->ok( 1, $name ); } return; } 1; # ABSTRACT: Check to see that version's in modules are sane __END__ =pod =encoding UTF-8 =head1 NAME Test::Version - Check to see that version's in modules are sane =head1 VERSION version 1.002004 =head1 SYNOPSIS use Test::More; use Test::Version 1.001001 qw( version_all_ok ), { is_strict => 0, has_version => 1, }; # test blib or lib by default version_all_ok(); done_testing; =head1 DESCRIPTION This module's goal is to be a one stop shop for checking to see that your versions across your dist are sane. Please ensure that you use version C<0.04> or later only, as earlier versions are old code and may not work correctly. Current feature list: =over =item module has a version Tests to insure that all modules checked have a VERSION defined, Can replace L =item module has a valid version Tests to insure that all versions are valid, according to the rules of L method C. To quote: I v1.2 1.2345.6 v1.23_4 1.2345 1.2345_01 I v1.234.5 2.3456 you can cause your tests to fail if not strict by setting L to C<1> =back =head1 FUNCTIONS =head2 version_ok version_ok( $filename, [ $name ] ); Test a single C<.pm> file by passing a path to the function. Checks if the module has a version, and that it is valid with C. =head2 version_all_ok version_all_ok( [ $directory, [ $name ]] ); Test all modules in a directory with C. By default it will check C or C if you haven't passed it a directory. =head1 CONFIGURATION AND ENVIRONMENT =head2 has_version use Test::Version qw( version_all_ok ), { has_version => 0 }; Allows disabling whether a module has to have a version. If set to 0 version tests will be skipped in any module where no version is found. really doesn't make sense to use with just L =head2 is_strict use Test::Version { is_strict => 1 }; this allows enabling of Ls C checks to ensure that your version is strict. =head1 SEE ALSO The goal is to have the functionality of all of these. =over =item L =item L =item L =back =head1 BUGS Please report any bugs or feature requests on the bugtracker website https://github.com/xenoterracide/test-version/issues When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. =head1 CONTRIBUTORS =over 4 =item * Graham Ollis =item * Michael G. Schwern =item * Mike Doherty =item * particle =back =head1 AUTHOR Caleb Cushing =head1 COPYRIGHT AND LICENSE This software is Copyright (c) 2013 by Caleb Cushing. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible) =cut author-test-eol.t100644001750001750 47012243367155 22713 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use strict; use warnings; use Test::More; # generated by Dist::Zilla::Plugin::Test::EOL 0.08 use Test::EOL; all_perl_files_ok({ trailing_whitespace => 1 }); file-not-defined.t100644001750001750 27712243367155 22775 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::More; use Test::Exception; use Test::Version qw( version_ok ); dies_ok { version_ok; } 'croak on bad api call'; done_testing; release-synopsis.t100644001750001750 45612243367155 23170 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use Test::More; eval "use Test::Synopsis"; plan skip_all => "Test::Synopsis required for testing synopses" if $@; all_synopsis_ok(); author-pod-spell.t100644001750001750 76312243367155 23063 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use strict; use warnings; use Test::More; # generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006001 use Test::Spelling 0.12; use Pod::Wordlist; add_stopwords(); all_pod_files_spelling_ok( qw( bin lib ) ); __DATA__ Caleb Cushing xenoterracide Graham Ollis perl Michael Schwern schwern Mike Doherty doherty particle lib Test Version release-distmeta.t100644001750001750 45512243367155 23112 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use Test::More; eval "use Test::CPAN::Meta"; plan skip_all => "Test::CPAN::Meta required for testing META.yml" if $@; meta_yaml_ok(); release-mojibake.t100644001750001750 64412243367155 23061 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use strict; use warnings qw(all); use Test::More; ## no critic (ProhibitStringyEval, RequireCheckingReturnValueOfEval) eval q(use Test::Mojibake); plan skip_all => q(Test::Mojibake required for source encoding testing) if $@; all_files_encoding_ok(); release-meta-json.t100644001750001750 47112243367155 23173 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use Test::More; eval 'use Test::CPAN::Meta::JSON'; plan skip_all => 'Test::CPAN::Meta::JSON required for testing META.json' if $@; meta_json_ok(); release-pod-syntax.t100644001750001750 45012243367155 23401 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use Test::More; eval "use Test::Pod 1.41"; plan skip_all => "Test::Pod 1.41 required for testing POD" if $@; all_pod_files_ok(); release-unused-vars.t100644001750001750 44512243367155 23553 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use Test::More; eval "use Test::Vars"; plan skip_all => "Test::Vars required for testing unused vars" if $@; all_vars_ok(); release-portability.t100644001750001750 53412243367155 23640 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use strict; use warnings; use Test::More; eval 'use Test::Portability::Files'; plan skip_all => 'Test::Portability::Files required for testing portability' if $@; run_tests(); fail000755001750001750 012243367155 21334 5ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/corpusFooBarBaz.pm100644001750001750 11012243367155 23607 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/corpus/failpackage FooBarBaz; BEGIN { our $VERSION = 'v9223372036854775807'; } 1; at-least-one-version.t100644001750001750 101712243367155 23651 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::Tester; use Test::More; use Test::Version qw( version_all_ok ), { has_version => 0 }; my ( $premature, @results ) = run_tests( sub { version_all_ok('corpus/noversion'); } ); is( scalar(@results), 2, 'correct number of results' ); my @oks; foreach my $result ( @results ) { push @oks, $result->{ok}; } my $sorted = [ sort @oks ]; my $expected = [ ( 0, 1 ) ]; note( 'unsorted oks: ', @oks ); is_deeply( $sorted, $expected, 'oks are ok' ); done_testing; release-pod-coverage.t100644001750001750 76512243367155 23657 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use Test::More; eval "use Test::Pod::Coverage 1.08"; plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage" if $@; eval "use Pod::Coverage::TrustPod"; plan skip_all => "Pod::Coverage::TrustPod required for testing POD coverage" if $@; all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); release-test-version.t100644001750001750 110112243367155 23747 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use strict; use warnings; use Test::More; # generated by Dist::Zilla::Plugin::Test::Version 0.002004 BEGIN { eval "use Test::Version; 1;" or die $@; } my @imports = ( 'version_all_ok' ); my $params = { is_strict => 0, has_version => 1, }; push @imports, $params if version->parse( $Test::Version::VERSION ) >= version->parse('1.002'); Test::Version->import(@imports); version_all_ok; done_testing; release-cpan-changes.t100644001750001750 52112243367155 23621 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use strict; use warnings; use Test::More 0.96 tests => 2; use_ok('Test::CPAN::Changes'); subtest 'changes_ok' => sub { changes_file_ok('Changes'); }; done_testing(); all-has-version-false.t100644001750001750 101612243367155 23770 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!/usr/bin/perl use 5.006; use strict; use warnings; use Test::Tester; use Test::More; use Test::Version qw( version_all_ok ), { has_version => 0 }; my ( $premature, @results ) = run_tests( sub { version_all_ok('corpus'); } ); is( scalar(@results), 5, 'correct number of results' ); my @oks; foreach my $result ( @results ) { push @oks, $result->{ok}; } my $sorted = [ sort @oks ]; my $expected = [ ( 0, 1, 1, 1, 1 ) ]; note( 'unsorted oks: ', @oks ); is_deeply( $sorted, $expected, 'oks are ok' ); done_testing; release-pod-linkcheck.t100644001750001750 77512243367155 24020 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use strict; use warnings; use Test::More; foreach my $env_skip ( qw( SKIP_POD_LINKCHECK ) ){ plan skip_all => "\$ENV{$env_skip} is set, skipping" if $ENV{$env_skip}; } eval "use Test::Pod::LinkCheck"; if ( $@ ) { plan skip_all => 'Test::Pod::LinkCheck required for testing POD'; } else { Test::Pod::LinkCheck->new->all_pod_ok; } release-dist-manifest.t100644001750001750 46612243367155 24051 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use Test::More; eval "use Test::DistManifest"; plan skip_all => "Test::DistManifest required for testing the manifest" if $@; manifest_ok(); noversion000755001750001750 012243367155 22443 5ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/corpusFooBar.pm100644001750001750 2312243367155 24244 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/corpus/noversionpackage FooBar; 1; release-minimum-version.t100644001750001750 52612243367155 24435 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/t#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use Test::More; eval "use Test::MinimumVersion"; plan skip_all => "Test::MinimumVersion required for testing minimum versions" if $@; all_minimum_version_from_metayml_ok(); 000-report-versions-tiny.t100644001750001750 515412243367155 24342 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/tuse strict; use warnings; use Test::More 0.88; # This is a relatively nice way to avoid Test::NoWarnings breaking our # expectations by adding extra tests, without using no_plan. It also helps # avoid any other test module that feels introducing random tests, or even # test plans, is a nice idea. our $success = 0; END { $success && done_testing; } # List our own version used to generate this my $v = "\nGenerated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.10\n"; eval { # no excuses! # report our Perl details my $want = '5.006'; $v .= "perl: $] (wanted $want) on $^O from $^X\n\n"; }; defined($@) and diag("$@"); # Now, our module version dependencies: sub pmver { my ($module, $wanted) = @_; $wanted = " (want $wanted)"; my $pmver; eval "require $module;"; if ($@) { if ($@ =~ m/Can't locate .* in \@INC/) { $pmver = 'module not found.'; } else { diag("${module}: $@"); $pmver = 'died during require.'; } } else { my $version; eval { $version = $module->VERSION; }; if ($@) { diag("${module}: $@"); $pmver = 'died during VERSION check.'; } elsif (defined $version) { $pmver = "$version"; } else { $pmver = ''; } } # So, we should be good, right? return sprintf('%-45s => %-10s%-15s%s', $module, $pmver, $wanted, "\n"); } eval { $v .= pmver('Carp','any version') }; eval { $v .= pmver('Exporter','any version') }; eval { $v .= pmver('ExtUtils::MakeMaker','6.30') }; eval { $v .= pmver('File::Find::Rule::Perl','any version') }; eval { $v .= pmver('File::Spec','any version') }; eval { $v .= pmver('IO::Handle','any version') }; eval { $v .= pmver('IPC::Open3','any version') }; eval { $v .= pmver('Module::Metadata','any version') }; eval { $v .= pmver('Test::Builder','any version') }; eval { $v .= pmver('Test::Exception','any version') }; eval { $v .= pmver('Test::More','0.88') }; eval { $v .= pmver('Test::Tester','any version') }; eval { $v .= pmver('parent','any version') }; eval { $v .= pmver('strict','any version') }; eval { $v .= pmver('version','0.86') }; eval { $v .= pmver('warnings','any version') }; # All done. $v .= <<'EOT'; Thanks for using my code. I hope it works for you. If not, please try and include this output in the bug report. That will help me reproduce the issue and solve your problem. EOT diag($v); ok(1, "we really didn't test anything, just reporting data"); $success = 1; # Work around another nasty module on CPAN. :/ no warnings 'once'; $Template::Test::NO_FLUSH = 1; exit 0; not_strict000755001750001750 012243367155 22611 5ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/corpusNotStrict.pm100644001750001750 7412243367155 25201 0ustar00xenoterracidexenoterracide000000000000Test-Version-1.002004/corpus/not_strictpackage NotStrict; BEGIN { our $VERSION = '0.1.0'; } 1;