App-Prove-Plugin-Metrics

 view release on metacpan or  search on metacpan

t/app/prove/plugin/metrics.t  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;
use App::Prove;
use Test::More tests=>6;

my $sbackup = {};
sub steal_stderr {
    my ($sref) = @_;
    if (!defined($$sbackup{stderr})) {
        open($$sbackup{stderr}, '>&STDERR');
        close(STDERR);
    }
    $$sref = undef;
    open(STDERR, '>', $sref);
}
sub return_stderr {
    if (defined($$sbackup{stderr})) {
        close(STDERR);
        open(STDERR, '>&', $$sbackup{stderr});
        delete($$sbackup{stderr});
    }
}

subtest 'stderr, all data'=>sub {
	plan tests=>16;
	my $prove=App::Prove->new();
	$prove->process_args('-PMetrics=stderr,prefix,PRE,sep, SEP ,subdepth,-1,label,1,rollup,0',glob('t/tests/simple-*.tt'));
	my $serr; steal_stderr(\$serr);
	$prove->run();
	return_stderr();
	my %seen=map {$_=>1} map {s/\s+/ /gr} grep {/^METRIC:/} split(/\n/,$serr);
	foreach my $expect (
		['simple-0-1',     1,'PRE SEP t/tests/simple-0-1.tt SEP okA'],
		['simple-1-1-1',   1,'PRE SEP t/tests/simple-1-1.tt SEP Level1 SEP okA'],
		['simple-1-1-0',   1,'PRE SEP t/tests/simple-1-1.tt SEP Level1'],
		['simple-2-1-2',   1,'PRE SEP t/tests/simple-2-1.tt SEP Level1 SEP Level2 SEP okA'],
		['simple-2-1-1',   1,'PRE SEP t/tests/simple-2-1.tt SEP Level1 SEP Level2'],
		['simple-2-1-0',   1,'PRE SEP t/tests/simple-2-1.tt SEP Level1'],
		['simple-0-0',     0,'PRE SEP t/tests/simple-0-0.tt SEP failA'],
		['simple-1-0-1',   0,'PRE SEP t/tests/simple-1-0.tt SEP Level1 SEP failA'],
		['simple-1-0-0',   0,'PRE SEP t/tests/simple-1-0.tt SEP Level1'],
		['simple-2-0-2',   0,'PRE SEP t/tests/simple-2-0.tt SEP Level1 SEP Level2 SEP failA'],
		['simple-2-0-1',   0,'PRE SEP t/tests/simple-2-0.tt SEP Level1 SEP Level2'],
		['simple-2-0-0',   0,'PRE SEP t/tests/simple-2-0.tt SEP Level1'],
		['simple-1-0-n-0', 0,'PRE SEP t/tests/simple-1-0-n.tt SEP Level1'],
		['simple-1-0-ul-1',0,'PRE SEP t/tests/simple-1-0-ul.tt SEP Level1 SEP '],
		['simple-1-0-ul-0',0,'PRE SEP t/tests/simple-1-0-ul.tt SEP Level1'],
	) {
		ok($seen{"METRIC: $$expect[1] $$expect[2]"},$$expect[0]);
	}
	#
	is(scalar(keys %seen),15,'Pigeonhole');
};

subtest 'stderr, all data, no label'=>sub {
	plan tests=>17;
	my $prove=App::Prove->new();
	$prove->process_args('-PMetrics=stderr,prefix,PRE,sep, SEP ,subdepth,-1,label,0,rollup,0',glob('t/tests/simple-*.tt'));
	my $serr; steal_stderr(\$serr);
	$prove->run();
	return_stderr();
	my %seen=map {$_=>1} map {s/\s+/ /gr} grep {/^METRIC:/} split(/\n/,$serr);
	foreach my $expect (
		['simple-0-1',     1,'PRE SEP t/tests/simple-0-1.tt'],
		['simple-1-1-1',   1,'PRE SEP t/tests/simple-1-1.tt SEP Level1'],
		['simple-1-1-0',   1,'PRE SEP t/tests/simple-1-1.tt'],
		['simple-2-1-2',   1,'PRE SEP t/tests/simple-2-1.tt SEP Level1 SEP Level2'],
		['simple-2-1-1',   1,'PRE SEP t/tests/simple-2-1.tt SEP Level1'],
		['simple-2-1-0',   1,'PRE SEP t/tests/simple-2-1.tt'],
		['simple-0-0',     0,'PRE SEP t/tests/simple-0-0.tt'],
		['simple-1-0-1',   0,'PRE SEP t/tests/simple-1-0.tt SEP Level1'],
		['simple-1-0-0',   0,'PRE SEP t/tests/simple-1-0.tt'],
		['simple-2-0-2',   0,'PRE SEP t/tests/simple-2-0.tt SEP Level1 SEP Level2'],
		['simple-2-0-1',   0,'PRE SEP t/tests/simple-2-0.tt SEP Level1'],
		['simple-2-0-0',   0,'PRE SEP t/tests/simple-2-0.tt'],
		['simple-1-0-n-1', 0,'PRE SEP t/tests/simple-1-0-n.tt SEP Level1'],
		['simple-1-0-n-0', 0,'PRE SEP t/tests/simple-1-0-n.tt'],
		['simple-1-0-ul-1',0,'PRE SEP t/tests/simple-1-0-ul.tt SEP Level1'],
		['simple-1-0-ul-0',0,'PRE SEP t/tests/simple-1-0-ul.tt'],
	) {



( run in 0.570 second using v1.01-cache-2.11-cpan-bbb979687b5 )