use Test; BEGIN { $| = 1; plan(tests => 53); chdir 't' if -d 't'; } require 'savelogs.pl'; use vars qw( $tar @dirs $log1 %contents ); $tar = `which gtar 2>/dev/null | grep -v 'no '`; chomp $tar; unless( $tar ) { $tar = `which tar 2>/dev/null | grep -v 'no '`; chomp $tar; } unless( $tar ) { die "No tar or gtar found.\n"; } ## test many log files in a common directory in a single archive for my $i ( 1..5 ) { $log1 = make_log( 1024, "test_log.$i" ); system( "$savelogs --home=. --process=archive --archive='test_log.tar' $log1" ); unlink( $log1 ); } ok( -f 'test_log.tar' ); ok( -s _ > 5120 ); ## check the contents %contents = map { chomp; $_ => 8 } `$tar -tf test_log.tar`; ok( scalar(keys %contents), 5 ); for my $i ( 1..5 ) { ok( $contents{"test_log.$i"}, 8 ); } ok( unlink( 'test_log.tar' ) ); ## test many logs in disjoint directory hierarchies with unique names @dirs = qw( foo bar baz ); system( 'mkdir', '-p', @dirs ); for my $dir ( @dirs ) { for my $i ( 1..5 ) { $log1 = make_log( 1024, "$dir/test_log.$dir.$i" ); system( "$savelogs --home=. --process=archive --archive='./test_log.tar' $log1" ); unlink( $log1 ); } ok( system( 'rm', '-r', $dir ), 0 ); } ok( -f 'test_log.tar' ); ok( -s _ > 15360 ); ## check the contents %contents = map { chomp; $_ => 4 } `$tar -tf test_log.tar`; ok( scalar(keys %contents), (scalar(@dirs)*5) ); for my $dir ( @dirs ) { for my $i ( 1..5 ) { ok( $contents{"test_log.$dir.$i"}, 4 ); } } ok( unlink( 'test_log.tar' ) ); ## test many logs in disjoint directory hierarchies with common names @dirs = qw( foo bar baz ); system( 'mkdir', '-p', @dirs ); for my $dir ( @dirs ) { for my $i ( 1..5 ) { $log1 = make_log( 1024, "$dir/test_log.$i" ); system( "$savelogs --home=. --process=archive --archive='./test_log.tar' --full-path $log1" ); unlink( $log1 ); } ok( system( 'rm', '-r', $dir ), 0 ); } ok( -f 'test_log.tar' ); ok( -s _ > 15360 ); ## check the contents %contents = map { chomp; $_ => 2 } `$tar -tf test_log.tar`; ok( scalar(keys %contents), (scalar(@dirs)*5) ); for my $dir ( @dirs ) { for my $i ( 1..5 ) { ok( $contents{"$dir/test_log.$i"}, 2 ); } } ok( unlink( 'test_log.tar' ) ); exit;