15759b3d2Safresh1use strict; 25759b3d2Safresh1use warnings; 35759b3d2Safresh1 4*f3efcd01Safresh1our $TIME; 5*f3efcd01Safresh1BEGIN { 6*f3efcd01Safresh1 *CORE::GLOBAL::time = sub() { 7*f3efcd01Safresh1 return CORE::time() unless defined $TIME; 8*f3efcd01Safresh1 return $TIME; 9*f3efcd01Safresh1 }; 10*f3efcd01Safresh1} 11*f3efcd01Safresh1 125759b3d2Safresh1use Config qw/%Config/; 135759b3d2Safresh1 145759b3d2Safresh1use Test2::Tools::Tiny; 155759b3d2Safresh1use Test2::Util qw/ 165759b3d2Safresh1 try 175759b3d2Safresh1 185759b3d2Safresh1 get_tid USE_THREADS 195759b3d2Safresh1 205759b3d2Safresh1 pkg_to_file 215759b3d2Safresh1 225759b3d2Safresh1 CAN_FORK 235759b3d2Safresh1 CAN_THREAD 245759b3d2Safresh1 CAN_REALLY_FORK 255759b3d2Safresh1 26*f3efcd01Safresh1 ipc_separator 27*f3efcd01Safresh1 gen_uid 28*f3efcd01Safresh1 295759b3d2Safresh1 CAN_SIGSYS 305759b3d2Safresh1 315759b3d2Safresh1 IS_WIN32 325759b3d2Safresh1 335759b3d2Safresh1 clone_io 345759b3d2Safresh1/; 355759b3d2Safresh1 365759b3d2Safresh1BEGIN { 375759b3d2Safresh1 if ($] lt "5.008") { 385759b3d2Safresh1 require Test::Builder::IO::Scalar; 395759b3d2Safresh1 } 405759b3d2Safresh1} 415759b3d2Safresh1 425759b3d2Safresh1{ 435759b3d2Safresh1 for my $try (\&try, Test2::Util->can('_manual_try'), Test2::Util->can('_local_try')) { 445759b3d2Safresh1 my ($ok, $err) = $try->(sub { die "xxx" }); 455759b3d2Safresh1 ok(!$ok, "cought exception"); 465759b3d2Safresh1 like($err, qr/xxx/, "expected exception"); 475759b3d2Safresh1 485759b3d2Safresh1 ($ok, $err) = $try->(sub { 0 }); 495759b3d2Safresh1 ok($ok, "Success"); 505759b3d2Safresh1 ok(!$err, "no error"); 515759b3d2Safresh1 } 525759b3d2Safresh1} 535759b3d2Safresh1 545759b3d2Safresh1is(pkg_to_file('A::Package::Name'), 'A/Package/Name.pm', "Converted package to file"); 555759b3d2Safresh1 565759b3d2Safresh1# Make sure running them does not die 575759b3d2Safresh1# We cannot really do much to test these. 585759b3d2Safresh1CAN_THREAD(); 595759b3d2Safresh1CAN_FORK(); 605759b3d2Safresh1CAN_REALLY_FORK(); 615759b3d2Safresh1IS_WIN32(); 625759b3d2Safresh1 635759b3d2Safresh1is(IS_WIN32(), ($^O eq 'MSWin32') ? 1 : 0, "IS_WIN32 is correct ($^O)"); 645759b3d2Safresh1 655759b3d2Safresh1my %sigs = map {$_ => 1} split /\s+/, $Config{sig_name}; 665759b3d2Safresh1if ($sigs{SYS}) { 675759b3d2Safresh1 ok(CAN_SIGSYS, "System has SIGSYS"); 685759b3d2Safresh1} 695759b3d2Safresh1else { 705759b3d2Safresh1 ok(!CAN_SIGSYS, "System lacks SIGSYS"); 715759b3d2Safresh1} 725759b3d2Safresh1 735759b3d2Safresh1my $check_for_sig_sys = Test2::Util->can('_check_for_sig_sys'); 745759b3d2Safresh1ok($check_for_sig_sys->("FOO SYS BAR"), "Found SIGSYS in the middle"); 755759b3d2Safresh1ok($check_for_sig_sys->("SYS FOO BAR"), "Found SIGSYS at start"); 765759b3d2Safresh1ok($check_for_sig_sys->("FOO BAR SYS"), "Found SIGSYS at end"); 775759b3d2Safresh1ok(!$check_for_sig_sys->("FOO SYSX BAR"), "SYSX is not SYS"); 785759b3d2Safresh1ok(!$check_for_sig_sys->("FOO XSYS BAR"), "XSYS is not SYS"); 795759b3d2Safresh1 805759b3d2Safresh1my $io = clone_io(\*STDOUT); 815759b3d2Safresh1ok($io, "Cloned the filehandle"); 825759b3d2Safresh1close($io); 835759b3d2Safresh1 845759b3d2Safresh1my $fh; 855759b3d2Safresh1my $out = ''; 865759b3d2Safresh1if ($] ge "5.008") { 875759b3d2Safresh1 open($fh, '>', \$out) or die "Could not open filehandle"; 885759b3d2Safresh1} else { 895759b3d2Safresh1 $fh = Test::Builder::IO::Scalar->new(\$out) or die "Could not open filehandle"; 905759b3d2Safresh1} 915759b3d2Safresh1 925759b3d2Safresh1$io = clone_io($fh); 935759b3d2Safresh1is($io, $fh, "For a scalar handle we simply return the original handle, no other choice"); 945759b3d2Safresh1print $io "Test\n"; 955759b3d2Safresh1 965759b3d2Safresh1is($out, "Test\n", "wrote to the scalar handle"); 975759b3d2Safresh1 98*f3efcd01Safresh1is(ipc_separator(), '~', "Got ipc_separator"); 99*f3efcd01Safresh1 100*f3efcd01Safresh1{ 101*f3efcd01Safresh1 local $TIME = time; 102*f3efcd01Safresh1 my $id1 = gen_uid(); 103*f3efcd01Safresh1 my $id2 = gen_uid(); 104*f3efcd01Safresh1 105*f3efcd01Safresh1 like($id1, qr/^\Q$$~0~$TIME~\E\d+$/, "Got a UID ($id1)"); 106*f3efcd01Safresh1 my ($inc) = ($id1 =~ m/(\d+)$/g); 107*f3efcd01Safresh1 $inc++; 108*f3efcd01Safresh1 is($id2, "$$~0~$TIME~$inc", "Next id is next in sequence ($id2)"); 109*f3efcd01Safresh1} 1105759b3d2Safresh1 1115759b3d2Safresh1done_testing; 112