Devel-StatProfiler
view release on metacpan or search on metacpan
t/lib/Test.pm view on Meta::CPAN
package t::lib::Test;
use 5.12.0;
use warnings;
use parent 'Test::Builder::Module';
use Test::More;
use Test::Differences;
use Time::HiRes qw(usleep);
use File::Temp ();
use File::Spec;
use Capture::Tiny qw(capture);
use Pod::Usage;
use Scalar::Util qw(reftype);
use Config;
use if $Config{usethreads}, 'threads';
require feature;
our @EXPORT = (
@Test::More::EXPORT,
@Test::Differences::EXPORT,
qw(
get_process_id
get_traces
get_samples
get_sources
numify
precision_factor
run_ctests
spawn
get_process_tree
get_childs
take_sample
temp_profile_dir
temp_profile_file
visual_test
sub_at_line
$TEST_PM
$SLOWOPS_PM
%Config
)
);
our ($TAKE_SAMPLE_LINE, $SPAWN_LINE);
our $TEST_PM = $INC{'t/lib/Test.pm'};
our $SLOWOPS_PM; # assigned in Slowops.pm
sub import {
unshift @INC, 't/lib';
strict->import;
warnings->import;
feature->import(':5.12');
if ((grep /^:fork$/, @_) && !$Config{d_fork}) {
__PACKAGE__->builder->skip_all("fork() not available");
}
if ((grep /^:threads$/, @_) && !$Config{usethreads}) {
__PACKAGE__->builder->skip_all("threads not available");
}
if ((grep /^:spawn$/, @_) && !$Config{usethreads} && !$Config{d_fork}) {
__PACKAGE__->builder->skip_all("neither fork nor threads available");
}
if ((grep /^:visual$/, @_) && (!@ARGV || $ARGV[0] ne '-visual')) {
__PACKAGE__->builder->skip_all("run with perl -Mblib $0 -visual");
}
@_ = grep !/^:(?:fork|threads|spawn|visual)$/, @_;
goto &Test::Builder::Module::import;
}
sub temp_profile_file {
state $debugging = $ENV{DEBUG};
state $tmpdir = File::Temp::tempdir(CLEANUP => !$debugging);
my $file = File::Temp::mktemp(File::Spec->catfile($tmpdir, "tprof.outXXXXXXXX"));
if ($debugging) {
say "# Temporary profiling output file: '$file'";
}
return $file;
}
( run in 2.618 seconds using v1.01-cache-2.11-cpan-98e64b0badf )