From a56aa4e37936ff7b237bfffe99708e696c1ca48f Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Sat, 1 Feb 2025 17:09:39 +0100 Subject: [PATCH] normalize package names to use :: package names extracted by PAUSE or Parse::PMFile are normalized to use double colons rather than apostrophe. Module::Metadata does not. Add the normalization to the output of Module::Metadata when we index files so that the module names will match what exists in 02packages. --- lib/MetaCPAN/Model/Release.pm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index ecbd1916d..d805563ae 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -545,9 +545,15 @@ sub _modules_from_files { # Ignore packages that people cannot claim. # https://github.com/andk/pause/blob/master/lib/PAUSE/pmfile.pm#L236 - for my $pkg ( grep { $_ ne 'main' && $_ ne 'DB' } - $info->packages_inside ) - { + # + # Parse::PMFile and PAUSE translate apostrophes to double colons, + # but Module::Metadata does not. + my @packages + = map s{'}{::}gr, + grep { $_ ne 'main' && $_ ne 'DB' } + $info->packages_inside; + + for my $pkg (@packages) { my $version = $info->version($pkg); $file->add_module( { name => $pkg,