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

use strict;
use warnings;

use File::Spec;

use Test::More tests => 7;

my $test_file = File::Spec->catfile( 't', 'tracer.pl' );
my $test_log  = File::Spec->catfile( 't', 'trace.log' );
my $test_path = File::Spec->catdir(  't', 'lib'       );

unlink $test_log if -e $test_log;

system( $^X, '-Mblib', "-I$test_path", $test_file, $test_log );

my @trace = do { local @ARGV = $test_log; <> };

like( $trace[0], qr/Modules used from $test_file/,
	'trace output should include name of program' );

like( $trace[1], qr/^  Parent, line 15/, '... then first dependency in order' );
unlike( $trace[2], qr/strict/,           '... but not preloaded modules' );

like( $trace[2],   qr/^    Child, line 3/, '... then its dependencies' );
unlike( $trace[3], qr/Parent/,             '... but not preloaded modules' );

like( $trace[3],   qr/^      Sibling, line 6/, '... then its dependencies' );
is( @trace, 4, '... and that is all' );

END { 1 while unlink $test_log }