On Tue, Mar 24 2015, David Bremner <david@tethera.net> wrote: > This is to limit the copy-pasta involved in running C tests. I decided > to keep things simple and not try to provide an actual C skeleton. > > The setting of LD_LIBRARY_PATH is to force using the built libnotmuch > rather than any potential system one. > --- > test/README | 5 +++++ > test/test-lib.sh | 15 +++++++++++++++ > 2 files changed, 20 insertions(+) > > diff --git a/test/README b/test/README > index 81a1c82..5b40474 100644 > --- a/test/README > +++ b/test/README > @@ -84,6 +84,11 @@ the tests in one of the following ways. > TEST_EMACS=my-special-emacs TEST_EMACSCLIENT=my-emacsclient ./emacs > make test TEST_EMACS=my-special-emacs TEST_EMACSCLIENT=my-emacsclient > > +Some tests may require a c compiler. You can choose the name and flags similarly > +to with emacs, e.g. > + > + make test TEST_CC=gcc TEST_CFLAGS="-g -O2" > + > Quiet Execution > --------------- > > diff --git a/test/test-lib.sh b/test/test-lib.sh > index 133fbe4..fdb84ea 100644 > --- a/test/test-lib.sh > +++ b/test/test-lib.sh > @@ -73,6 +73,8 @@ if [[ ( -n "$TEST_EMACS" && -z "$TEST_EMACSCLIENT" ) || \ > fi > TEST_EMACS=${TEST_EMACS:-${EMACS:-emacs}} > TEST_EMACSCLIENT=${TEST_EMACSCLIENT:-emacsclient} > +TEST_CC=${TEST_CC:-cc} > +TEST_CFLAGS=${TEST_CFLAGS:-"-g -O0"} > > # Protect ourselves from common misconfiguration to export > # CDPATH into the environment > @@ -1161,6 +1163,19 @@ test_python() { > | $cmd - > } > > +test_C () { > + exec_file="test${test_count}" > + test_file="${exec_file}.c" > + cat > ${test_file} > + export LD_LIBRARY_PATH=${TEST_DIRECTORY}/../lib > + ${TEST_CC} ${TEST_CFLAGS} -I${TEST_DIRECTORY}/../lib -o ${exec_file} ${test_file} -L${TEST_DIRECTORY}/../lib/ -lnotmuch -ltalloc > + echo "== stdout ==" > OUTPUT.stdout > + echo "== stderr ==" > OUTPUT.stderr > + ./${exec_file} "$@" 1>>OUTPUT.stdout 2>>OUTPUT.stderr > + sed "s,$(pwd),CWD," OUTPUT.stdout OUTPUT.stderr > OUTPUT > +} For next version you could change $(pwd) to ${PWD} -- to use shell variable instead of forking subshell and run builtin command there to get the same value. also, trailing g could be useful. i.e: sed "s,${PWD},CWD,g" OUTPUT.stdout OUTPUT.stderr > OUTPUT