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