1use strict;
2use warnings;
3use Test::More 0.88;
4
5use CPAN::Meta;
6use CPAN::Meta::Validator;
7use CPAN::Meta::Converter;
8use File::Spec;
9use IO::Dir;
10use Parse::CPAN::Meta;
11
12delete $ENV{PERL_YAML_BACKEND};
13delete $ENV{PERL_JSON_BACKEND};
14delete $ENV{CPAN_META_JSON_BACKEND};
15delete $ENV{CPAN_META_JSON_DECODER};
16
17my $data_dir = IO::Dir->new( 't/data-fail' );
18my @files = sort grep { /^\w/ } $data_dir->read;
19
20*_spec_version = \&CPAN::Meta::Converter::_extract_spec_version;
21
22use Data::Dumper;
23
24for my $f ( reverse sort @files ) {
25  my $path = File::Spec->catfile('t','data-fail',$f);
26  my $original = Parse::CPAN::Meta->load_file( $path  );
27  ok( $original, "loaded invalid $f" );
28  my $original_v = _spec_version($original);
29  # UPCONVERSION
30  if ( $original_v lt '2' ) {
31    my $cmc = CPAN::Meta::Converter->new( $original );
32    my $fixed = eval { $cmc->convert( version => 2 ) };
33    ok ( $@, "error thrown up converting" );
34  }
35  # DOWNCONVERSION
36  if ( $original_v gt '1.0' ) {
37    my $cmc = CPAN::Meta::Converter->new( $original );
38    my $fixed = eval { $cmc->convert( version => '1.0' ) };
39    ok ( $@, "error thrown down converting" );
40  }
41}
42
43done_testing;
44# vim: ts=2 sts=2 sw=2 et :
45