Commit | Line | Data |
---|---|---|
c05760c6 DG |
1 | use strict; |
2 | use warnings; | |
3 | use Test::More 0.88; | |
4 | ||
5 | use CPAN::Meta; | |
6 | use CPAN::Meta::Validator; | |
7 | use CPAN::Meta::Converter; | |
8 | use File::Spec; | |
9 | use IO::Dir; | |
10 | use Parse::CPAN::Meta 1.4400; | |
11 | ||
a808a03d SL |
12 | delete $ENV{$_} for qw/PERL_JSON_BACKEND PERL_YAML_BACKEND/; # use defaults |
13 | ||
229563a9 SH |
14 | my @data_dirs = qw( t/data-valid t/data-fixable ); |
15 | my @files = sort map { | |
16 | my $d = $_; | |
17 | map { "$d/$_" } grep { substr($_,0,1) ne '.' } IO::Dir->new($d)->read | |
18 | } @data_dirs; | |
c05760c6 | 19 | |
229563a9 | 20 | *_spec_version = \&CPAN::Meta::Converter::_extract_spec_version; |
c05760c6 DG |
21 | |
22 | #use Data::Dumper; | |
23 | ||
24 | for my $f ( reverse sort @files ) { | |
229563a9 | 25 | my $path = File::Spec->catfile($f); |
c05760c6 DG |
26 | my $original = Parse::CPAN::Meta->load_file( $path ); |
27 | ok( $original, "loaded $f" ); | |
28 | my $original_v = _spec_version($original); | |
29 | # UPCONVERSION | |
229563a9 | 30 | if ( $original_v lt '2' ) { |
c05760c6 DG |
31 | my $cmc = CPAN::Meta::Converter->new( $original ); |
32 | my $converted = $cmc->convert( version => 2 ); | |
33 | is ( _spec_version($converted), 2, "up converted spec version $original_v to spec version 2"); | |
34 | my $cmv = CPAN::Meta::Validator->new( $converted ); | |
35 | ok ( $cmv->is_valid, "up converted META is valid" ) | |
36 | or diag( "ERRORS:\n" . join( "\n", $cmv->errors ) | |
37 | # . "\nMETA:\n" . Dumper($converted) | |
38 | ); | |
39 | } | |
40 | # UPCONVERSION - partial | |
229563a9 | 41 | if ( $original_v lt '1.4' ) { |
c05760c6 DG |
42 | my $cmc = CPAN::Meta::Converter->new( $original ); |
43 | my $converted = $cmc->convert( version => '1.4' ); | |
44 | is ( _spec_version($converted), 1.4, "up converted spec version $original_v to spec version 1.4"); | |
45 | my $cmv = CPAN::Meta::Validator->new( $converted ); | |
46 | ok ( $cmv->is_valid, "up converted META is valid" ) | |
47 | or diag( "ERRORS:\n" . join( "\n", $cmv->errors ) | |
48 | # . "\nMETA:\n" . Dumper($converted) | |
49 | ); | |
50 | } | |
51 | # DOWNCONVERSION - partial | |
229563a9 | 52 | if ( $original_v gt '1.2' ) { |
c05760c6 DG |
53 | my $cmc = CPAN::Meta::Converter->new( $original ); |
54 | my $converted = $cmc->convert( version => '1.2' ); | |
55 | is ( _spec_version($converted), '1.2', "down converted spec version $original_v to spec version 1.2"); | |
56 | my $cmv = CPAN::Meta::Validator->new( $converted ); | |
57 | ok ( $cmv->is_valid, "down converted META is valid" ) | |
58 | or diag( "ERRORS:\n" . join( "\n", $cmv->errors ) | |
59 | # . "\nMETA:\n" . Dumper($converted) | |
60 | ); | |
61 | } | |
62 | # DOWNCONVERSION | |
229563a9 | 63 | if ( $original_v gt '1.0' ) { |
c05760c6 DG |
64 | my $cmc = CPAN::Meta::Converter->new( $original ); |
65 | my $converted = $cmc->convert( version => '1.0' ); | |
66 | is ( _spec_version($converted), '1.0', "down converted spec version $original_v to spec version 1.0"); | |
67 | my $cmv = CPAN::Meta::Validator->new( $converted ); | |
68 | ok ( $cmv->is_valid, "down converted META is valid" ) | |
69 | or diag( "ERRORS:\n" . join( "\n", $cmv->errors ) | |
70 | # . "\nMETA:\n" . Dumper($converted) | |
71 | ); | |
72 | } | |
73 | } | |
74 | ||
75 | done_testing; | |
76 |