commit b037c7a111d60416ff735ad57941c41bbd7a6624
parent bbc73253655830933ac9ee17a77aedcadec1555b
Author: Kyle Milz <kyle@windows.krwm.net>
Date: Tue, 3 Jan 2017 20:49:12 -0800
t: convert inst_src_ext.sh to perl
Diffstat:
2 files changed, 56 insertions(+), 38 deletions(-)
diff --git a/t/inst_src_ext.sh b/t/inst_src_ext.sh
@@ -1,38 +0,0 @@
-#!/bin/sh -u
-#
-# Check that the advertised source file extensions work.
-#
-. t/utils.subr
-plan 18
-
-cat <<EOF > check.good
-Summary:
- 1 Source files used as input
- 1 Rewrite successes
- 1 Rewritten source compile successes
-
-Totals:
- 1 Lines of source code
-EOF
-
-# Check supported extensions.
-for ext in c cc cxx cpp; do
- touch main.$ext
- ok "is extension .$ext compiled successfully" cc -c main.$ext
-
- ok "is citrun_check successful" citrun_check -o check.out
- strip_millis check.out
- ok "citrun_check diff" diff -u check.good check.out
-
- rm main.$ext citrun.log check.out main.o
-done
-
-# Check unsupported extensions.
-for ext in C; do
- touch main.$ext
-
- ok "is extension .$ext compiled successfully" cc -c main.$ext
- ok_program "is citrun_check exit code 1" 123 "" citrun_check -o check.out
-
- rm main.$ext main.o
-done
diff --git a/t/inst_srcext.t b/t/inst_srcext.t
@@ -0,0 +1,56 @@
+#
+# Check that the advertised source file extensions work.
+#
+use strict;
+use warnings;
+use Test::Cmd;
+use Test::Differences;
+use Test::More tests => 15;
+use t::utils;
+unified_diff;
+
+
+my @supported_exts = ("c", "cc", "cxx", "cpp");
+
+my $inst = Test::Cmd->new( prog => 'citrun_inst', workdir => '' );
+
+my $out_good = <<EOF;
+>> citrun_inst
+CITRUN_COMPILERS = ''
+Found source file ''
+Modified command line is ''
+Added clangtool argument ''
+Instrumentation of '' finished:
+ 1 Lines of source code
+ 1 Function definitions
+ 1 Return statement values
+ 3 Total statements
+Modified source written successfully.
+Rewriting successful.
+EOF
+
+for (@supported_exts) {
+ $inst->write( "main.$_", 'int main(void) { return 0; }' );
+ $inst->run( args => "-c main.$_", chdir => $inst->curdir );
+
+ my $out = t::utils::clean_citrun_log(scalar $inst->stdout);
+ eq_or_diff( $out, $out_good, ".$_: is citrun_inst output identical", { context => 3} );
+ is ( $inst->stderr, '', ".$_: is citrun_inst stderr silent" );
+ is( $? >> 8, 0, ".$_: is citrun_inst exit code 0" );
+}
+
+$out_good = <<EOF;
+>> citrun_inst
+CITRUN_COMPILERS = ''
+Modified command line is ''
+No source files found on command line.
+Running as citrun_inst, not calling exec()
+EOF
+
+$inst->write( "main.z", 'int main(void) { return 0; }' );
+$inst->run( args => "-c main.z", chdir => $inst->curdir );
+
+my $out = t::utils::clean_citrun_log(scalar $inst->stdout);
+eq_or_diff( $out, $out_good, ".z: is citrun_inst output identical", { context => 3} );
+is ( $inst->stderr, '', ".z: is citrun_inst stderr silent" );
+is( $? >> 8, 0, ".z: is citrun_inst exit code 1" );