Hi

I will test it in the next days.

It is sufficent to run the patch against the source in the tarball?

The test for pspp arealready changed in $RUNNER pspp after a change by
John. This patch doesn't interfere with that?

Have fun


2016-03-24 5:41 GMT+01:00 Ben Pfaff <[email protected]>:

> Here's something to try.
>
> --8<--------------------------cut here-------------------------->8--
>
> commit f9a7e150e875a23646c4d1b07697e37059c8a088
> Author: Ben Pfaff <[email protected]>
> Date:   Wed Mar 23 21:41:00 2016 -0700
>
>     tests: Add support for generic wrapper.
>
>     With this change, "make check RUNNER='...'" runs all of the binaries
> that
>     PSPP builds under the supervision of $RUNNER, so that, for example, the
>     "pspp" binary is run as "$RUNNER pspp".  This is useful for wrapping
>     programs with, for example, "wine", for cross-compiling.
>
> diff --git a/tests/automake.mk b/tests/automake.mk
> index 9284b93..dbbb3d3 100644
> --- a/tests/automake.mk
> +++ b/tests/automake.mk
> @@ -406,7 +406,8 @@ DISTCLEANFILES += tests/atconfig tests/atlocal
> $(TESTSUITE)
>  AUTOTEST_PATH =
> tests/data:tests/language/lexer:tests/libpspp:tests/output:src/ui/terminal:utilities
>
>  $(srcdir)/tests/testsuite.at: tests/testsuite.in tests/automake.mk
> -       $(AM_V_GEN)cp $< $@
> +       $(AM_V_GEN)printf '\043 Generated automatically -- do not modify!
>   -*- buffer-read-only: t -*-\n' > $@
> +       $(AM_V_at)cat $< >> $@
>         $(AM_V_at)for t in $(TESTSUITE_AT); do \
>           echo "m4_include([$$t])" >> $@ ;\
>         done
> @@ -414,7 +415,7 @@ EXTRA_DIST += tests/testsuite.at
>
>  CHECK_LOCAL += tests_check
>  tests_check: tests/atconfig tests/atlocal $(TESTSUITE) $(check_PROGRAMS)
> -       XTERM_LOCALE='' $(SHELL) '$(TESTSUITE)' -C tests
> AUTOTEST_PATH=$(AUTOTEST_PATH) $(TESTSUITEFLAGS)
> +       XTERM_LOCALE='' $(SHELL) '$(TESTSUITE)' -C tests
> AUTOTEST_PATH=$(AUTOTEST_PATH) RUNNER='$(RUNNER)' $(TESTSUITEFLAGS)
>
>  CLEAN_LOCAL += tests_clean
>  tests_clean:
> @@ -437,51 +438,9 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac
>           echo 'm4_define([AT_PACKAGE_BUGREPORT], [$(PACKAGE_BUGREPORT)])'
> && \
>           echo 'm4_define([AT_PACKAGE_URL],       [$(PACKAGE_URL)])'; \
>         } >'$(srcdir)/package.m4'
> -
> -# valgrind support for Autotest testsuite
> -
> -valgrind_wrappers = \
> -       tests/valgrind/datasheet-test \
> -       tests/valgrind/command-name-test \
> -       tests/valgrind/scan-test \
> -       tests/valgrind/segment-test \
> -       tests/valgrind/abt-test \
> -       tests/valgrind/bt-test \
> -       tests/valgrind/encoding-guesser-test \
> -       tests/valgrind/heap-test \
> -       tests/valgrind/hmap-test \
> -       tests/valgrind/hmapx-test \
> -       tests/valgrind/i18n-test \
> -       tests/valgrind/ll-test \
> -       tests/valgrind/llx-test \
> -       tests/valgrind/range-map-test \
> -       tests/valgrind/range-set-test \
> -       tests/valgrind/range-tower-test \
> -       tests/valgrind/sparse-array-test \
> -       tests/valgrind/sparse-xarray-test \
> -       tests/valgrind/str-test \
> -       tests/valgrind/string-map-test \
> -       tests/valgrind/stringi-map-test \
> -       tests/valgrind/string-set-test \
> -       tests/valgrind/stringi-set-test \
> -       tests/valgrind/tower-test \
> -       tests/valgrind/u8-istream-test \
> -       tests/valgrind/render-test \
> -       tests/valgrind/pspp-convert \
> -       tests/valgrind/pspp
> -
> -$(valgrind_wrappers): tests/valgrind-wrapper.in
> -       @$(MKDIR_P) tests/valgrind
> -       $(AM_V_GEN)$(SED) -e 's,[@]wrap_program[@],$@,' \
> -               $(top_srcdir)/tests/valgrind-wrapper.in > [email protected]
> -       $(AM_V_at)chmod +x [email protected]
> -       $(AM_V_at)mv [email protected] $@
> -CLEANFILES += $(valgrind_wrappers)
> -EXTRA_DIST += tests/valgrind-wrapper.in
>
> -VALGRIND = $(SHELL) $(abs_top_builddir)/libtool --mode=execute valgrind
> --log-file=valgrind.%p --leak-check=full --num-callers=20
> -check-valgrind: all tests/atconfig tests/atlocal $(TESTSUITE)
> $(valgrind_wrappers)
> -       XTERM_LOCALE='' $(SHELL) '$(TESTSUITE)' -C tests
> VALGRIND='$(VALGRIND)' AUTOTEST_PATH='tests/valgrind:$(AUTOTEST_PATH)' -d
> $(TESTSUITEFLAGS)
> +check-valgrind:
> +       $(MAKE) check RUNNER='$(SHELL) $(abs_top_builddir)/libtool
> --mode=execute valgrind --log-file=valgrind.%p --leak-check=full
> --num-callers=20' TESTSUITEFLAGS='$(TESTSUITEFLAGS) -d'
>         @echo
>         @echo '--------------------------------'
>         @echo 'Valgrind output is in:'
> diff --git a/tests/testsuite.in b/tests/testsuite.in
> index 738ffea..95673dc 100644
> --- a/tests/testsuite.in
> +++ b/tests/testsuite.in
> @@ -6,3 +6,41 @@ m4_ifndef([AT_SKIP_IF],
>       [AT_CHECK([($1) \
>  && exit 77 || exit 0], [0], [ignore], [ignore])])])
>
> +m4_divert_text([PREPARE_TESTS], [dnl
> +if test X"$RUNNER" != X; then
> +    wrapper_dir=`pwd`/wrappers
> +    rm "$wrapper_dir"/*
> +    test -d "$wrapper_dir" || mkdir "$wrapper_dir"
> +
> +    wrap_dir () {
> +        test -d "$1" || return
> +       for file in "$1"/*; do
> +            if test -x "$file" && test -f "$file"; then
> +               base=`basename $file`
> +               wrapper=$wrapper_dir/$base
> +               if test ! -e "$wrapper"; then
> +                   echo "exec $RUNNER $file \"\$@\"" > $wrapper
> +                   chmod +x $wrapper
> +               fi
> +           fi
> +       done
> +    }
> +
> +    save_IFS=$IFS; IFS=$PATH_SEPARATOR
> +    for dir in $AUTOTEST_PATH; do
> +        IFS=$save_IFS
> +        test X"$dir" = X && dir=.
> +       case $dir in
> +            [\\/]* | ?:[\\/]*)
> +                wrap_dir "$dir"
> +               ;;
> +            *)
> +               wrap_dir "$abs_top_builddir/$dir"
> +               wrap_dir "$abs_top_srcdir/$dir"
> +               ;;
> +       esac
> +    done
> +    IFS=$save_IFS
> +    PATH=$wrapper_dir:$PATH
> +fi
> +])
> diff --git a/tests/valgrind-wrapper.in b/tests/valgrind-wrapper.in
> deleted file mode 100755
> index a60cd9e..0000000
> --- a/tests/valgrind-wrapper.in
> +++ /dev/null
> @@ -1,38 +0,0 @@
> -#! /bin/sh
> -
> -program=`basename "$0"`
> -
> -new_PATH=
> -save_IFS=$IFS
> -IFS=:
> -found=no
> -for dir in $PATH; do
> -    IFS=$save_IFS
> -    if test "X$dir" = X; then
> -       dir=.
> -    fi
> -    if test -x "$dir/$program"; then
> -       if test $found = no; then
> -           found=yes
> -           continue
> -       else
> -           if test "X$next_program" = X; then
> -               next_program=$dir/$program
> -           fi
> -       fi
> -    fi
> -done
> -IFS=$save_IFS
> -
> -if test $found = no; then
> -    echo "$0: $program not found in PATH ($PATH)" >&2
> -    exit 1
> -elif test "X$next_program" = X; then
> -    echo "$0: $program found only once in PATH ($PATH)" >&2
> -    exit 1
> -fi
> -
> -: ${VALGRIND:=libtool --mode=execute valgrind --log-file=valgrind.%p
> --leak-check=full --num-callers=20}
> -exec $VALGRIND $next_program "$@"
> -echo "$0: $VALGRIND $wrap_program $* failed" >&2
> -exit 1
>
_______________________________________________
pspp-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/pspp-dev

Reply via email to