From 5d22622b97e90a7b1bc9bd770288d55cd0033d23 Mon Sep 17 00:00:00 2001 From: Kenichi Ishigaki Date: Thu, 27 Apr 2023 20:52:05 +0900 Subject: Support class NAME VERSION and role NAME VERSION (for the latest perl/Object::Pad) --- MANIFEST | 3 +++ lib/Parse/PMFile.pm | 2 +- t/42_class_versions.t | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ t/43_role_versions.t | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 t/42_class_versions.t create mode 100644 t/43_role_versions.t diff --git a/MANIFEST b/MANIFEST index 41fb567..cc7e8c7 100644 --- a/MANIFEST +++ b/MANIFEST @@ -14,6 +14,9 @@ t/34_math_version.t t/35_scoped_our_version.t t/36_long_version.t t/40_package_versions.t +t/41_multiple_packages.t +t/42_class_versions.t +t/43_role_versions.t t/50_no_index.t t/60_permissions.t t/70_vpp.t diff --git a/lib/Parse/PMFile.pm b/lib/Parse/PMFile.pm index cb4cb58..c7571ff 100644 --- a/lib/Parse/PMFile.pm +++ b/lib/Parse/PMFile.pm @@ -382,7 +382,7 @@ sub _packages_per_pmfile { # (.*) # takes too much time if $pline is long #(?newdir(CLEANUP => 1); +plan skip_all => "tmpdir is not ready" unless -e $tmpdir && -w $tmpdir; + +test('class '.'Parse::PMFile::Test', <<'TEST'); +{ + $Parse::PMFile::Test::VERSION = "0.01"; +} +TEST + +test('class '.'Parse::PMFile::Test', <<'TEST'); +{ + $VERSION = "0.01"; +} +TEST + +test('class '.'Parse::PMFile::Test {', <<'TEST'); + $Parse::PMFile::Test::VERSION = "0.01"; +}; +TEST + +test('class '.'Parse::PMFile::Test {', <<'TEST'); + $VERSION = "0.01"; +}; +TEST + +test('class '.'Parse::PMFile::Test 0.01 {', <<'TEST'); +}; +TEST + +test('class '.'Parse::PMFile::Test 0.01 :isa(Foo) :does(Bar) {', <<'TEST'); +}; +TEST + +sub test { + my @lines = @_; + + my $pmfile = "$tmpdir/Test.pm"; + + open my $fh, '>', $pmfile or plan skip_all => "Failed to create a pmfile"; + print $fh join "\n", @lines, ""; + close $fh; + + for (0..1) { + no warnings 'once'; + local $Parse::PMFile::FORK = $_; + my $parser = Parse::PMFile->new; + my $info = $parser->parse($pmfile); + + is $info->{'Parse::PMFile::Test'}{version} => '0.01'; + # note explain $info; + } +} + +done_testing; + diff --git a/t/43_role_versions.t b/t/43_role_versions.t new file mode 100644 index 0000000..6149992 --- /dev/null +++ b/t/43_role_versions.t @@ -0,0 +1,61 @@ +use strict; +use warnings; +use Test::More; +use Parse::PMFile; +use File::Temp; + +my $tmpdir = File::Temp->newdir(CLEANUP => 1); +plan skip_all => "tmpdir is not ready" unless -e $tmpdir && -w $tmpdir; + +test('role '.'Parse::PMFile::Test', <<'TEST'); +{ + $Parse::PMFile::Test::VERSION = "0.01"; +} +TEST + +test('role '.'Parse::PMFile::Test', <<'TEST'); +{ + $VERSION = "0.01"; +} +TEST + +test('role '.'Parse::PMFile::Test {', <<'TEST'); + $Parse::PMFile::Test::VERSION = "0.01"; +}; +TEST + +test('role '.'Parse::PMFile::Test {', <<'TEST'); + $VERSION = "0.01"; +}; +TEST + +test('role '.'Parse::PMFile::Test 0.01 {', <<'TEST'); +}; +TEST + +test('role '.'Parse::PMFile::Test 0.01 :does(Bar) {', <<'TEST'); +}; +TEST + +sub test { + my @lines = @_; + + my $pmfile = "$tmpdir/Test.pm"; + + open my $fh, '>', $pmfile or plan skip_all => "Failed to create a pmfile"; + print $fh join "\n", @lines, ""; + close $fh; + + for (0..1) { + no warnings 'once'; + local $Parse::PMFile::FORK = $_; + my $parser = Parse::PMFile->new; + my $info = $parser->parse($pmfile); + + is $info->{'Parse::PMFile::Test'}{version} => '0.01'; + # note explain $info; + } +} + +done_testing; + -- cgit v1.2.3 From ea52a5625df48545e1899a15474202c54aef59a7 Mon Sep 17 00:00:00 2001 From: Kenichi Ishigaki Date: Thu, 27 Apr 2023 20:53:52 +0900 Subject: Release 0.44 --- Changes | 3 +++ lib/Parse/PMFile.pm | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Changes b/Changes index 347f90e..15712db 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ Revision history for Parse-PMFile +0.44 2023/04/27 + - Allow to parse class|role NAME VERSION + 0.43 2020/12/12 - Avoid instantiating `Safe` compartment if operating in "unsafe" mode. (GH#12; bleargh45++) diff --git a/lib/Parse/PMFile.pm b/lib/Parse/PMFile.pm index c7571ff..11736d7 100644 --- a/lib/Parse/PMFile.pm +++ b/lib/Parse/PMFile.pm @@ -10,7 +10,7 @@ use Dumpvalue; use version (); use File::Spec (); -our $VERSION = '0.43'; +our $VERSION = '0.44'; our $VERBOSE = 0; our $ALLOW_DEV_VERSION = 0; our $FORK = 0; -- cgit v1.2.3