1use strict;
2use warnings;
3use Test::More 0.88;
4
5use CPAN::Meta;
6use CPAN::Meta::Validator;
7use File::Spec;
8use IO::Dir;
9use Parse::CPAN::Meta;
10
11delete $ENV{PERL_YAML_BACKEND};
12delete $ENV{PERL_JSON_BACKEND};
13delete $ENV{CPAN_META_JSON_BACKEND};
14delete $ENV{CPAN_META_JSON_DECODER};
15
16{
17  my @data_dirs = qw( t/data-test t/data-valid );
18  my @files = sort map {
19        my $d = $_;
20        map { "$d/$_" } grep { substr($_,0,1) ne '.' } IO::Dir->new($d)->read
21  } @data_dirs;
22
23  for my $f ( @files ) {
24    my $meta = Parse::CPAN::Meta->load_file( File::Spec->catfile($f) );
25    my $cmv = CPAN::Meta::Validator->new({%$meta});
26    ok( $cmv->is_valid, "$f validates" )
27      or diag( "ERRORS:\n" . join( "\n", $cmv->errors ) );
28  }
29}
30
31{
32  my @data_dirs = qw( t/data-fail t/data-fixable );
33  my @files = sort map {
34        my $d = $_;
35        map { "$d/$_" } grep { substr($_,0,1) ne '.' } IO::Dir->new($d)->read
36  } @data_dirs;
37
38  for my $f ( @files ) {
39    my $meta = Parse::CPAN::Meta->load_file( File::Spec->catfile($f) );
40    my $cmv = CPAN::Meta::Validator->new({%$meta});
41    ok( ! $cmv->is_valid, "$f shouldn't validate" );
42    note 'validation error: ', $_ foreach $cmv->errors;
43  }
44}
45
46done_testing;
47# vim: ts=2 sts=2 sw=2 et :
48