Quantcast

[PATCH] tests: add compatibility layer

classic Classic list List threaded Threaded
4 messages Options
David Bremner-2 David Bremner-2
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[PATCH] tests: add compatibility layer

From: Mikhail <[hidden email]>

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

I haven't tested this, except to verify it doesn't crash under GNU/Linux

 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 fa77eb8f..eb452a12 100755
--- a/configure
+++ b/configure
@@ -1186,6 +1186,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 104a120e..ae22d6e0 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.11.0

_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
Tomi Ollila-2 Tomi Ollila-2
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] tests: add compatibility layer

On Thu, Mar 09 2017, David Bremner <[hidden email]> wrote:

> From: Mikhail <[hidden email]>
>
> 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
> ---
>
> I haven't tested this, except to verify it doesn't crash under GNU/Linux

I cannot test as I will not pollute my purish Frisbee KVM image with
coreutils package -- I could play with second image but I', too lazy
to do so.

Anyway, it looks ok to me.

Tomi


>
>  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 fa77eb8f..eb452a12 100755
> --- a/configure
> +++ b/configure
> @@ -1186,6 +1186,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 104a120e..ae22d6e0 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.11.0
>
> _______________________________________________
> notmuch mailing list
> [hidden email]
> https://notmuchmail.org/mailman/listinfo/notmuch
_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
Mikhail Mikhail
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] tests: add compatibility layer

In reply to this post by David Bremner-2
On 16:32 09-Mar 2017 David Bremner wrote:
> From: Mikhail <[hidden email]>
>
> 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

I've tested the patch on FreeBSD and it works fine.
_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
David Bremner-2 David Bremner-2
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] tests: add compatibility layer

Mikhail <[hidden email]> writes:

> On 16:32 09-Mar 2017 David Bremner wrote:
>> From: Mikhail <[hidden email]>
>>
>> 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
>
> I've tested the patch on FreeBSD and it works fine.

Thanks for all your work on this, I've pushed the patch to master.  By
the way, I'm not sure if it's also an issue for FreeBSD, but we've
renamed libutil.a to libnotmuch_util.a to avoid a name conflict on some
BSD-ish systems.

d


_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
Loading...