use strict; my $x; my $demo = $ENV{DEMO}; eval <<'PRELOAD' ? eval <<'TEST' : ( $x = $@, eval <<'FALLBACK' ); use Test::More; 1; PRELOAD use Test::Differences; plan tests => 3 ; print "#\n# This test misuses TODO:", " these TODOs are actually real tests.\n#\n" unless $demo; TODO: { local $TODO = "testing failure, not really a TODO" unless $demo; my @docs = ( join( "", map "this is line $_\n", qw( 1 2 3 ) ), join( "", map "this is line $_\n", qw( 1 b 3 ) ) ); eq_or_diff @docs, "differences in text"; @docs = ( ( " indented\n" x 3 ) x 2 ); $docs[1] =~ s/(^..*?^)\s+/$1\t/ms or die "Can't subst \\t for ' '"; eq_or_diff @docs, "differences in whitespace"; eq_or_diff( Test::Builder->new, [ "Dry, humorless message" ] ); } TEST use Test; plan tests => 1; skip $x, "" ; FALLBACK die $@ if $@ ;