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:
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;