xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/Util.t (revision f3efcd0145415b7d44d9da97e0ad5c21b186ac61)
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