Linux server1.hosting4iran.com 4.18.0-553.89.1.el8_10.x86_64 #1 SMP Mon Dec 8 03:53:08 EST 2025 x86_64
LiteSpeed
Server IP : 185.208.174.156 & Your IP : 216.73.216.218
Domains : 282 Domain
User : satitravel
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
doc /
perl-CPAN-Meta /
t /
Delete
Unzip
Name
Size
Permission
Date
Action
data-fail
[ DIR ]
drwxr-xr-x
2023-12-23 09:30
data-fixable
[ DIR ]
drwxr-xr-x
2023-12-23 09:30
data-test
[ DIR ]
drwxr-xr-x
2023-12-23 09:30
data-valid
[ DIR ]
drwxr-xr-x
2023-12-23 09:30
lib
[ DIR ]
drwxr-xr-x
2023-12-23 09:30
parse-cpan-meta
[ DIR ]
drwxr-xr-x
2023-12-23 09:30
00-report-prereqs.dd
7.88
KB
-rw-r--r--
2016-08-18 16:10
00-report-prereqs.t
5.46
KB
-rw-r--r--
2019-10-13 07:21
README-data.txt
622
B
-rw-r--r--
2016-08-18 16:10
converter-bad.t
2.72
KB
-rw-r--r--
2019-10-13 07:21
converter-fail.t
1.16
KB
-rw-r--r--
2019-10-13 07:21
converter-fragments.t
4
KB
-rw-r--r--
2019-10-13 07:21
converter.t
10.42
KB
-rw-r--r--
2019-10-13 07:21
load-bad.t
805
B
-rw-r--r--
2019-10-13 07:21
merge.t
5.74
KB
-rw-r--r--
2019-10-13 07:21
meta-obj.t
6.62
KB
-rw-r--r--
2019-10-13 07:21
no-index.t
1.82
KB
-rw-r--r--
2019-10-13 07:21
optional_feature-merge.t
3.2
KB
-rw-r--r--
2019-10-13 07:21
prereqs-finalize.t
2.24
KB
-rw-r--r--
2019-10-13 07:21
prereqs-merge.t
2.37
KB
-rw-r--r--
2019-10-13 07:21
prereqs.t
3.65
KB
-rw-r--r--
2019-10-13 07:21
repository.t
4.39
KB
-rw-r--r--
2019-10-13 07:21
save-load.t
3.67
KB
-rw-r--r--
2019-10-13 07:21
validator.t
1.2
KB
-rw-r--r--
2019-10-13 07:21
Save
Rename
use strict; use warnings; use Test::More; use CPAN::Meta; use CPAN::Meta::Merge; delete $ENV{PERL_YAML_BACKEND}; delete $ENV{PERL_JSON_BACKEND}; delete $ENV{CPAN_META_JSON_BACKEND}; delete $ENV{CPAN_META_JSON_DECODER}; my %base = ( abstract => 'This is a test', author => ['A.U. Thor'], generated_by => 'Myself', license => [ 'perl_5' ], resources => { license => [ 'http://dev.perl.org/licenses/' ], bugtracker => { web => 'https://rt.cpan.org/Dist/Display.html?Foo-Bar' }, }, prereqs => { runtime => { requires => { Foo => '0', }, }, }, dynamic_config => 0, provides => { Baz => { file => 'lib/Baz.pm', }, }, 'meta-spec' => { url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec", version => 2, }, ); my %first = ( author => [ 'I.M. Poster' ], generated_by => 'Some other guy', license => [ 'bsd' ], resources => { license => [ 'http://opensource.org/licenses/bsd-license.php' ], }, prereqs => { runtime => { requires => { Foo => '< 1', }, recommends => { Bar => '3.14', }, }, test => { requires => { 'Test::Bar' => 0, }, }, }, dynamic_config => 1, provides => { Quz => { file => 'lib/Quz.pm', }, }, ); my %first_expected = ( abstract => 'This is a test', author => [ 'A.U. Thor', 'I.M. Poster' ], generated_by => 'Myself, Some other guy', license => [ 'perl_5', 'bsd' ], resources => { license => [ 'http://dev.perl.org/licenses/', 'http://opensource.org/licenses/bsd-license.php' ], bugtracker => { web => 'https://rt.cpan.org/Dist/Display.html?Foo-Bar' }, }, prereqs => { runtime => { requires => { Foo => '>= 0, < 1', }, recommends => { Bar => '3.14', }, }, test => { requires => { 'Test::Bar' => 0, }, }, }, provides => { Baz => { file => 'lib/Baz.pm', }, Quz => { file => 'lib/Quz.pm', }, }, dynamic_config => 1, 'meta-spec' => { url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec", version => 2, }, ); my %provides_merge_expected = ( abstract => 'This is a test', author => ['A.U. Thor'], generated_by => 'Myself', license => [ 'perl_5' ], resources => { license => [ 'http://dev.perl.org/licenses/' ], bugtracker => { web => 'https://rt.cpan.org/Dist/Display.html?Foo-Bar' }, }, prereqs => { runtime => { requires => { Foo => '0', }, }, }, dynamic_config => 0, provides => { Baz => { file => 'lib/Baz.pm', version => '0.001', # same as %base, but for this extra key }, }, 'meta-spec' => { url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec", version => 2, }, ); my $merger = CPAN::Meta::Merge->new(default_version => '2'); my $first_result = $merger->merge(\%base, \%first); is_deeply($first_result, \%first_expected, 'First result is as expected'); is_deeply($merger->merge(\%base, { abstract => 'This is a test' }), \%base, 'Can merge in identical abstract'); is( eval { $merger->merge(\%base, { abstract => 'And now for something else' }) }, undef, 'Trying to merge different abstract gives an exception', ); like $@, qr/^Can't merge attribute abstract/, 'Exception looks right'; is( eval { $merger->merge(\%base, { resources => { bugtracker => { web => 'http://foo.com' } } } ) }, undef, 'Trying to merge a different bugtracker URL gives an exception', ); like $@, qr/^Duplication of element resources\.bugtracker\.web /, 'Exception looks right'; is( eval { $merger->merge(\%base, { provides => { Baz => { file => 'Baz.pm' } } }) }, undef, 'Trying to merge different provides.$module.file gives an exception', ); like $@, qr/^Duplication of element provides\.Baz\.file /, 'Exception looks right'; my $provides_result = $merger->merge(\%base, { provides => { Baz => { file => 'lib/Baz.pm', version => '0.001' } } }); is_deeply( $provides_result, \%provides_merge_expected, 'Trying to merge a new key for provides.$module is permitted; identical values are preserved', ); my $extra_merger = CPAN::Meta::Merge->new( default_version => '2', extra_mappings => { 'x_toolkit' => 'set_addition', 'x_meta_meta' => { name => 'identical', tags => 'set_addition', } } ); my $extra_results = $extra_merger->merge(\%base, { x_toolkit => [ 'marble' ], x_meta_meta => { name => 'Test', tags => [ 'Testing' ], } }, { x_toolkit => [ 'trike'], x_meta_meta => { name => 'Test', tags => [ 'TDD' ], } } ); my $expected_nested_extra = { name => 'Test', tags => [ 'Testing', 'TDD' ], }; is_deeply($extra_results->{x_toolkit}, [ 'marble', 'trike' ], 'Extra mapping fields are merged'); is_deeply($extra_results->{x_meta_meta}, $expected_nested_extra, 'Nested extra mapping fields are merged' ); my $adds_to = sub { my ($left, $right, $path) = @_; if ($right !~ /^\Q$left\E/) { die sprintf "Can't merge attribute %s: '%s' does not start with '%s'", join('.', @{$path}), $right, $left; } return $right; }; $extra_merger = CPAN::Meta::Merge->new(default_version => '2', extra_mappings => { 'abstract' => \&$adds_to } ); my $extra_results2 = $extra_merger->merge({ abstract => 'This is a test.'}, { abstract => 'This is a test. Includes more detail..' } ); is($extra_results2->{abstract}, 'This is a test. Includes more detail..', 'Extra mapping fields overwrite existing mappings'); my $extra_failure = eval { $extra_merger->merge({ abstract => 'This is a test.'}, { abstract => 'This is a better test.' } ) }; is($extra_failure, undef, 'Extra mapping produces a failure'); like $@, qr/does not start with/, 'Exception looks right'; # issue 67 @base{qw/name version release_status/} = qw/Foo-Bar 0.01 testing/; my $base_obj = CPAN::Meta->create(\%base); ok my $first_result_obj = $merger->merge($base_obj, \%first), 'merging CPAN::Meta objects succeeds'; done_testing(); # vim: ts=4 sts=4 sw=4 tw=78 noet :