citrun

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

commit 40ce9dd06bbdddcdf1915fcdc2f079ae33c3442d
parent 2ba6b0d34c964b6bb3fa85353d47fd73b884c0ef
Author: kyle <kyle@0x30.net>
Date:   Wed, 23 Nov 2016 19:47:40 -0700

t: add explicit tests for cmake, jam, make, and ninja

Diffstat:
At/wrap_cmake.sh | 50++++++++++++++++++++++++++++++++++++++++++++++++++
At/wrap_jam.sh | 46++++++++++++++++++++++++++++++++++++++++++++++
At/wrap_make.sh | 47+++++++++++++++++++++++++++++++++++++++++++++++
At/wrap_ninja.sh | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 197 insertions(+), 0 deletions(-)

diff --git a/t/wrap_cmake.sh b/t/wrap_cmake.sh @@ -0,0 +1,50 @@ +#!/bin/sh -u +# +# Test that wrapping the 'cmake' build system produces instrumented binaries. +# +. t/libtap.subr +. t/utils.subr +plan 7 + +modify_PATH +enter_tmpdir + +cat <<EOF > main.c +int +main(void) +{ + return 0; +} +EOF + +cat <<EOF > CMakeLists.txt +cmake_minimum_required (VERSION 2.6) +project (program) +add_executable(program main.c) +EOF + +ok "is cmake successful" citrun-wrap cmake . +ok "is make (from cmake) successful" citrun-wrap make +ok "is citrun-check successful" citrun-check -o check.out + +cat <<EOF > check.good +Summary: + 3 Source files used as input + 3 Application link commands + 3 Rewrite successes + 3 Rewritten source compile successes + +Totals: + 1085 Lines of source code + 3 Function definitions + 3 Return statement values + 101 Total statements + 9 Binary operators +EOF + +strip_millis check.out +ok "is citrun-check output identical" diff -u check.good check.out + +export CITRUN_PROCFILE="procfile.shm" +ok "does compiled program run" program +ok "is runtime shared memory file created" test -f procfile.shm diff --git a/t/wrap_jam.sh b/t/wrap_jam.sh @@ -0,0 +1,46 @@ +#!/bin/sh -u +# +# Test that wrapping the 'jam' build system produces instrumented binaries. +# +. t/libtap.subr +. t/utils.subr +plan 6 + +modify_PATH +enter_tmpdir + +cat <<EOF > main.c +int +main(void) +{ + return 0; +} +EOF + +cat <<EOF > Jamfile +Main program : main.c ; +EOF + +ok "is jam successful" citrun-wrap jam +ok "is citrun-check successful" citrun-check -o check.out + +cat <<EOF > check.good +Summary: + 1 Source files used as input + 1 Application link commands + 1 Rewrite successes + 1 Rewritten source compile successes + +Totals: + 6 Lines of source code + 1 Function definitions + 1 Return statement values + 3 Total statements +EOF + +strip_millis check.out +ok "is citrun-check output identical" diff -u check.good check.out + +export CITRUN_PROCFILE="procfile.shm" +ok "does compiled program run" program +ok "is runtime shared memory file created" test -f procfile.shm diff --git a/t/wrap_make.sh b/t/wrap_make.sh @@ -0,0 +1,47 @@ +#!/bin/sh -u +# +# Test that wrapping the 'make' build system produces instrumented binaries. +# +. t/libtap.subr +. t/utils.subr +plan 6 + +modify_PATH +enter_tmpdir + +cat <<EOF > main.c +int +main(void) +{ + return 0; +} +EOF + +cat <<EOF > Makefile +program: main.o + cc -o program main.o +EOF + +ok "is make successful" citrun-wrap make +ok "is citrun-check successful" citrun-check -o check.out + +cat <<EOF > check.good +Summary: + 1 Source files used as input + 1 Application link commands + 1 Rewrite successes + 1 Rewritten source compile successes + +Totals: + 6 Lines of source code + 1 Function definitions + 1 Return statement values + 3 Total statements +EOF + +strip_millis check.out +ok "is citrun-check output identical" diff -u check.good check.out + +export CITRUN_PROCFILE="procfile.shm" +ok "does compiled program run" program +ok "is runtime shared memory file created" test -f procfile.shm diff --git a/t/wrap_ninja.sh b/t/wrap_ninja.sh @@ -0,0 +1,54 @@ +#!/bin/sh -u +# +# Test that wrapping the 'ninja' build system produces instrumented binaries. +# +. t/libtap.subr +. t/utils.subr +plan 6 + +modify_PATH +enter_tmpdir + +cat <<EOF > main.c +int +main(void) +{ + return 0; +} +EOF + +# Quote the here-doc so that '$' does not get substituted. +cat <<'EOF' > build.ninja +rule cc + command = gcc $cflags -c $in -o $out + +rule link + command = gcc $in -o $out + +build main.o: cc main.c +build program: link main.o +EOF + +ok "is ninja successful" citrun-wrap ninja +ok "is citrun-check successful" citrun-check -o check.out + +cat <<EOF > check.good +Summary: + 1 Source files used as input + 1 Application link commands + 1 Rewrite successes + 1 Rewritten source compile successes + +Totals: + 6 Lines of source code + 1 Function definitions + 1 Return statement values + 3 Total statements +EOF + +strip_millis check.out +ok "is citrun-check output identical" diff -u check.good check.out + +export CITRUN_PROCFILE="procfile.shm" +ok "does compiled program run" program +ok "is runtime shared memory file created" test -f procfile.shm