The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
my $skip;
BEGIN {
    eval "use Class::Accessor";
    if ($@) { $skip = 'Class::Accessor required to run this test' }
}

use strict;
use warnings;

use Config;
use Test::More $skip ? (skip_all => $skip) : ();
use IPC::Run3;
use YAML::Syck qw(LoadFile);
use Data::Dumper;

$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys=1;

plan tests => 4;

my $script = 'script/umlclass.pl';
my @cmd = ($^X, '-Ilib', $script);
my ($stdout, $stderr);

{
    my $outfile = 'preload.yml';

    unlink $outfile if -f $outfile;
    ok run3( [@cmd, '--out', $outfile, '-E', $Config{archlibexp}, '-M', 'TestClassAccessor', '-I', 't/data'],
              \undef, \$stdout, \$stderr ),
        "umlclass -o $outfile -E $Config{archlibexp}";
    #warn $stdout;
    like $stdout, qr/TestClassAccessor/,
        "stdout ok - $outfile generated.";
    warn $stderr if $stderr;
    ok -f $outfile, "$outfile exists";
    #ok( (-s $outfile > 1000), "$outfile is nonempty" );
    if (-f $outfile) {
        my $dom = LoadFile($outfile);
        is Dumper($dom), <<'_EOC_';
$VAR1 = {
  'classes' => [
    {
      'methods' => [
        'blah'
      ],
      'name' => 'TestClassAccessor',
      'properties' => [
        'name',
        'role',
        'salary'
      ],
      'subclasses' => []
    }
  ]
};
_EOC_
    } else {
        fail "no yml file";
    }
}