
package p1;

use strict;
use warnings;

use Test::More;

sub t1 {
  local $TODO = 'not implemented yet';
print STDERR "t1-start\n";
  ok(0, q{yet to implement});
print STDERR "t1-end\n";
}


package p2;

use strict;
use warnings;

use Test::More;

sub t2 {
   ok(1, 'implemented');

}


package st;

use strict;
use warnings;

require Test::More;

sub s {
#   Test::More::subtest 's', sub {
      p1::t1();
#   };
}


package t;

use Test2::Bundle::More qw/ done_testing /;
use Test2::Tools::Compare qw/ like /;
use Test2::API qw/intercept context/;
require Test2::Formatter::TAP;




sub _test_output {
    my ($events) = @_;
    my $fmt = Test2::Formatter::TAP->new();
    open my $stdout, '>', \my $out_text;
    my $idx = 0;

    $fmt->set_handles([ $stdout, $stdout ]);
    _test_output_from_subevents($events, $fmt, \$idx);
    close $stdout;

    return $out_text;
}

sub _test_output_from_subevents {
    my ($events, $fmt, $idx) = @_;

    for my $event (@$events) {
        if ($event->{subevents}) {
            _test_output_from_subevents(
                $event->{subevents}, $fmt, $idx);
        }
        else {
            $fmt->write($event, $$idx++);
        }
    }
}





my $wc = $ENV{WC} eq 'context';


my $e = intercept {
   Test::More::subtest 's', sub {
     if ($wc) { 
       my $ctx = context();
       st::s();
       p2::t2();
       $ctx->done_testing;
       $ctx->release;
     }
     else {
       st::s();
       p2::t2();       
     }
   };
};

like( _test_output($e), qr/# TODO not implemented/);

done_testing;

