citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

commit f028fb7b122b35cb5a134a9b2a34772c3a863531
parent 0578a1d7a3a96c2ce74dc99c379db2d2ee150b1b
Author: Kyle Milz <kyle@windows.krwm.net>
Date:   Wed,  4 Jan 2017 22:08:14 -0800

t: move program back into utils.pm

Diffstat:
Dt/program/Makefile | 2--
Dt/program/fib.c | 10----------
Dt/program/main.c | 19-------------------
Dt/program/print.c | 8--------
Mt/utils.pm | 71++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
5 files changed, 60 insertions(+), 50 deletions(-)

diff --git a/t/program/Makefile b/t/program/Makefile @@ -1,2 +0,0 @@ -program: main.o fib.o print.o - cc -o program main.o fib.o print.o diff --git a/t/program/fib.c b/t/program/fib.c @@ -1,10 +0,0 @@ -long long -fib(long long n) -{ - if (n == 0) - return 0; - else if (n == 1) - return 1; - - return fib(n - 1) + fib(n - 2); -} diff --git a/t/program/main.c b/t/program/main.c @@ -1,19 +0,0 @@ -#include <err.h> -#include <stdlib.h> - -long long fib(long long); -void print_output(long long); - -int -main(int argc, char *argv[]) -{ - long long n; - - if (argc != 2) - errx(1, "argc != 2"); - - n = atoi(argv[1]); - - print_output(fib(n)); - return 0; -} diff --git a/t/program/print.c b/t/program/print.c @@ -1,8 +0,0 @@ -#include <stdio.h> - -void -print_output(long long n) -{ - fprintf(stderr, "%lli", n); - return; -} diff --git a/t/utils.pm b/t/utils.pm @@ -5,6 +5,7 @@ use Test::Differences; use Test::More; unified_diff; # For Test::Differences diffs + sub clean_citrun_log { my ($log) = @_; @@ -16,21 +17,69 @@ sub clean_citrun_log { return $log; } -package t::tmpdir; -use Cwd; -use File::Copy; -use File::Temp qw( tempdir ); +sub make_testcmd { -sub new { - my $tmp_dir = tempdir( CLEANUP => 1 ); + my $wrap = Test::Cmd->new( prog => 'citrun_wrap', workdir => '' ); + #$ENV{CITRUN_PROCDIR} = $wrap->workdir . "\\procdir\\"; + + $wrap->write( 'main.c', <<EOF); +#include <stdio.h> +#include <stdlib.h> + +long long fib(long long); +void print_output(long long); + +int +main(int argc, char *argv[]) +{ + long long n; + + if (argc != 2) { + fprintf(stderr, "argc != 2"); + exit(1); + } + + n = atoi(argv[1]); + + print_output(fib(n)); + return 0; +} +EOF + + $wrap->write( 'print.c', <<EOF ); +#include <stdio.h> + +void +print_output(long long n) +{ + fprintf(stderr, "%lli", n); + return; +} +EOF + + $wrap->write( 'fib.c', <<EOF ); +long long +fib(long long n) +{ + if (n == 0) + return 0; + else if (n == 1) + return 1; + + return fib(n - 1) + fib(n - 2); +} +EOF + + $wrap->write( 'Jamfile', <<EOF ); +Main program : main.c fib.c print.c ; +EOF - $ENV{CITRUN_PROCDIR} = "$tmp_dir/procdir/"; - $ENV{PATH} = getcwd . "/compilers:$ENV{PATH}"; + $wrap->run( args => 'jam', chdir => $wrap->curdir ); - copy($_, $tmp_dir) while (<t/program/*>); - system("make -C $tmp_dir"); + is( $wrap->stderr, '', 'is citrun_wrap jam stderr empty' ); + is( $? >> 8, 0, 'is citrun_wrap jam exit code 0' ); - return $tmp_dir; + return $wrap; } package t::shm;