wrap_parallel.t (1913B)
1 # 2 # Check that calling citrun_inst in parallel doesn't cause any obviously bad 3 # things to happen. 4 # 5 use File::Which; 6 use Modern::Perl; 7 use Test::Cmd; 8 use Test::Differences; 9 use Test::More; 10 11 plan skip_all => 'make not found' unless (which 'make'); 12 plan tests => 15; 13 14 15 my $wrap = Test::Cmd->new( prog => 'bin/citrun_wrap', workdir => '' ); 16 17 $wrap->write( 'main1.c', 'int main(void) { return 0; }' ); 18 $wrap->write( 'main2.c', 'int main(void) { return 0; }' ); 19 $wrap->write( 'main3.c', 'int main(void) { return 0; }' ); 20 $wrap->write( 'main4.c', 'int main(void) { return 0; }' ); 21 $wrap->write( 'Makefile', <<'EOF' ); 22 all: program1 program2 program3 program4 23 24 program1: main1.o 25 cc -o program1 main1.o 26 program2: main2.o 27 cc -o program2 main2.o 28 program3: main3.o 29 cc -o program3 main3.o 30 program4: main4.o 31 cc -o program4 main4.o 32 EOF 33 34 $wrap->run( args => 'make -j4', chdir => $wrap->curdir ); 35 print $wrap->stdout; 36 is( $wrap->stderr, '', 'citrun_wrap make stderr silent' ); 37 is( $? >> 8, 0, 'citrun_wrap make exit code 0' ); 38 39 my $report_good = <<EOF; 40 Summary: 41 8 Rewrite tool runs 42 4 Source files used as input 43 4 Application link commands 44 4 Successful modified source compiles 45 46 Totals: 47 4 Lines of source code 48 4 Function definitions 49 4 Return statement values 50 12 Total statements 51 EOF 52 53 $wrap->run( prog => 'bin/citrun_report', args => 'citrun.log', 54 chdir => $wrap->curdir ); 55 my $report_out = $wrap->stdout; 56 $report_out =~ s/^.*Milliseconds spent rewriting.*\n//gm; 57 eq_or_diff( $report_out, $report_good, 'citrun_report stdout identical', 58 { context => 3 } ); 59 60 for (1..4) { 61 $wrap->run( prog => $wrap->workdir . "/program$_", 62 chdir => $wrap->curdir ); 63 is( $wrap->stdout, '', "inst program$_ stdout silent" ); 64 isnt( $wrap->stderr, '', "inst program$_ stderr not silent" ); 65 is( $? >> 8, 0, "inst program$_ exit code 0" ); 66 unlink "/tmp/citrun.out"; 67 }