From: Mikhail Date: Thu, 9 Mar 2017 13:32:43 +0000 (-0400) Subject: tests: add compatibility layer X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=9b7dbed58ebd3aeee16b044fdffda6b39e90643e;p=notmuch.git tests: add compatibility layer Make test-lib-common.sh load test-lib-<$PLATFORM>.sh to create additional shim for platform specifics. Use test-lib-FREEBSD.sh to call GNU utilities instead of native ones. - amended by db following Tomi's suggestions --- diff --git a/configure b/configure index 6c782e16..03131275 100755 --- a/configure +++ b/configure @@ -1199,6 +1199,9 @@ NOTMUCH_PYTHON=${python} # Are the ruby development files (and ruby) available? If not skip # building/testing ruby bindings. NOTMUCH_HAVE_RUBY_DEV=${have_ruby_dev} + +# Platform we are run on +PLATFORM=${platform} EOF # Finally, after everything configured, inform the user how to continue. diff --git a/test/README b/test/README index dcd05237..f2499bce 100644 --- a/test/README +++ b/test/README @@ -33,6 +33,17 @@ chosen directory to your PATH before running the tests. e.g. env PATH=/opt/gnu/bin:$PATH make test +For FreeBSD you need to install latest gdb from ports or packages and +provide path to it in TEST_GDB environment variable before executing +the tests, native FreeBSD gdb does not not work. If you install +coreutils, which provides GNU versions of basic utils like 'date' and +'base64' on FreeBSD, the test suite will use these instead of the +native ones. This provides robustness against portability issues with +these system tools. Most often the tests are written, reviewed and +tested on Linux system so such portability issues arise from time to +time. + + Running Tests ------------- The easiest way to run tests is to say "make test", (or simply run the diff --git a/test/test-lib-FREEBSD.sh b/test/test-lib-FREEBSD.sh new file mode 100644 index 00000000..d1840b56 --- /dev/null +++ b/test/test-lib-FREEBSD.sh @@ -0,0 +1,9 @@ +# If present, use GNU Coreutils instead of a native BSD utils +if command -v gdate >/dev/null + then + date () { gdate "$@"; } + base64 () { gbase64 "$@"; } + wc () { gwc "$@"; } + sed () { gsed "$@"; } + sha256sum () { gsha256sum "$@"; } + fi diff --git a/test/test-lib-common.sh b/test/test-lib-common.sh index a96cfbeb..ef409171 100644 --- a/test/test-lib-common.sh +++ b/test/test-lib-common.sh @@ -66,6 +66,11 @@ export LD_LIBRARY_PATH # configure output . $notmuch_path/sh.config || exit 1 +# load OS specifics +if [ -e ./test-lib-$PLATFORM.sh ]; then + . ./test-lib-$PLATFORM.sh || exit 1 +fi + if test -n "$valgrind" then make_symlink () {