The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/env perl

use strict;
use warnings;

use Test::More;

use Tapper::TAP::Harness;
use File::Slurp 'slurp';
use Data::Dumper;
use TAP::DOM;

my $tap = slurp ("t/tap-archive-1.tgz");

# ============================================================

my $harness = Tapper::TAP::Harness->new( tap => $tap, tap_is_archive => 1 );

$harness->evaluate_report();
#diag(Dumper($harness->parsed_report->{tap_sections}));

is(scalar @{$harness->parsed_report->{tap_sections}}, 4, "count sections");

my $first_section = $harness->parsed_report->{tap_sections}->[0];

# ============================================================

#diag Dumper();
my $dom = TAP::DOM->new( tap => "TAP Version 13\n".$harness->parsed_report->{tap_sections}->[3]->{raw} );
#diag(Dumper($dom));
is($dom->{tests_run}, 3, "section 3 tests run");
ok($dom->{is_good_plan}, "section 3 good plan");

# ============================================================

is($harness->parsed_report->{report_meta}{'suite-name'},    'Tapper-Test',       "report meta suite name");
is($harness->parsed_report->{report_meta}{'suite-version'}, '2.010012',           "report meta suite version");
is($harness->parsed_report->{report_meta}{'suite-type'},    'software',           "report meta suite type");
is($harness->parsed_report->{report_meta}{'machine-name'},  'ss5-netbook',        "report meta machine name");
is($harness->parsed_report->{report_meta}{'starttime-test-program'}, 'Thu, 28 Oct 2010 16:13:27 +0200', "report meta starttime test program");

is($first_section->{section_name},'t/00-tapper-meta.t', "first section name");

is($first_section->{section_meta}{'suite-name'},             'Tapper-Test',                                                            "report meta suite name");
is($first_section->{section_meta}{'suite-version'},          '2.010012',                                                           "report meta suite version");
is($first_section->{section_meta}{'suite-type'},             'software',                                                           "report meta suite type");
is($first_section->{section_meta}{'language-description'},   'Perl 5.012001, /home/ss5/perl5/perlbrew/perls/perl-5.12.1/bin/perl', "report meta language description");
is($first_section->{section_meta}{'uname'}, 'Linux ss5-netbook 2.6.31-21-generic #59-Ubuntu SMP Wed Mar 24 07:28:56 UTC 2010 i686 GNU/Linux', "report meta uname");
is($first_section->{section_meta}{'osname'},                 'Ubuntu 10.10',                                                       "report meta osname");
is($first_section->{section_meta}{'cpuinfo'},                '2 cores [Intel(R) Atom(TM) CPU N270   @ 1.60GHz]',                   "report meta cpuinfo");
is($first_section->{section_meta}{'ram'},                    '993MB',                                                              "report meta ram");

is($first_section->{db_section_meta}{'language_description'},   'Perl 5.012001, /home/ss5/perl5/perlbrew/perls/perl-5.12.1/bin/perl', "db meta language description");
is($first_section->{db_section_meta}{'uname'},                  'Linux ss5-netbook 2.6.31-21-generic #59-Ubuntu SMP Wed Mar 24 07:28:56 UTC 2010 i686 GNU/Linux', "db meta uname");
is($first_section->{db_section_meta}{'osname'},                 'Ubuntu 10.10',                                                       "db meta osname");
is($first_section->{db_section_meta}{'cpuinfo'},                '2 cores [Intel(R) Atom(TM) CPU N270   @ 1.60GHz]',                   "db meta cpuinfo");
is($first_section->{db_section_meta}{'ram'},                    '993MB',                                                              "db meta ram");

my $html = $harness->generate_html;
is(scalar @{$harness->parsed_report->{tap_sections}}, 4, "count sections"); # check to trigger preparation errors

# ============================================================

$tap = slurp ("t/tap-archive-2.tgz");

# ============================================================

$harness = Tapper::TAP::Harness->new( tap => $tap, tap_is_archive => 1 );

$harness->evaluate_report();
#diag(Dumper($harness->parsed_report->{tap_sections}));

is(scalar @{$harness->parsed_report->{tap_sections}}, 4, "autotest / count sections");

$first_section = $harness->parsed_report->{tap_sections}->[0];

# ============================================================

#diag Dumper();
$dom = TAP::DOM->new( tap => "TAP Version 13\n".$harness->parsed_report->{tap_sections}->[1]->{raw} );
# diag(Dumper($dom));
is($dom->{tests_run}, 2, "autotest / section 1 tests run");
ok($dom->{is_good_plan}, "autotest / section 1 good plan");
is($dom->{lines}[3]{_children}[0]{data}{"sysinfo-memtotal-in-kb"}, "3951176", "autotest / section 1 TAPv13 yaml data");
# ============================================================


done_testing;