#!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 }