citrun

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

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:
Dt/inst_src_ext.sh | 38--------------------------------------
At/inst_srcext.t | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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" );