The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/perl -T

use strict;
use warnings;

package Object;
sub live {undef};


package Foo;
use Test::More;
use base qw(Test::Class);

sub todo_test : Test  {
	local $TODO = "unimplemented";
	ok(Object->live, "object live");
};

package main;
use Test::Builder::Tester tests => 2;
use Test::More;
$ENV{TEST_VERBOSE}=0;

my $filename = sub { return (caller)[1] }->();

my $test_more_version = eval($Test::More::VERSION);
diag "Test::More: $test_more_version";

test_out( "not ok 1 - object live # TODO unimplemented" );
if ($test_more_version >= 0.9501) {
    # Test-Simple-0.95_01 or later output TODO message to output handle.
    # see http://cpansearch.perl.org/src/MSCHWERN/Test-Simple-0.95_01/Changes
    #    Test::Builder::Tester now sets $tb->todo_output to the output handle and
    #    not the error handle (to be in accordance with the default behaviour of
    #    Test::Builder and allow for testing TODO test behaviour).
    test_out( "#     Failed (TODO) test ($filename at line 16)" );
    test_out( "#   (in Foo->todo_test)" );
} else {
    test_err( "#     Failed (TODO) test ($filename at line 16)" );
    test_err( "#   (in Foo->todo_test)" );
}
Foo->runtests;
test_test("todo tests work");

package Foo;
is( Foo->num_method_tests('todo_test'), 1, 'todo_test should run 1 test' );