From 9b7dbed58ebd3aeee16b044fdffda6b39e90643e Mon Sep 17 00:00:00 2001 From: Mikhail Date: Thu, 9 Mar 2017 09:32:43 -0400 Subject: [PATCH 1/1] 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 --- configure | 3 +++ test/README | 11 +++++++++++ test/test-lib-FREEBSD.sh | 9 +++++++++ test/test-lib-common.sh | 5 +++++ 4 files changed, 28 insertions(+) create mode 100644 test/test-lib-FREEBSD.sh 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 () { -- 2.43.0