X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Fperl-module.at;h=f3f393cc2c97a35d380be921996e7b1a51fc8006;hb=a12aeb43c5edf27b0ef2be5c2d7db30214a31a2b;hp=cbe2a0dd33175ef9aa4b30dcf00f94bb2ebfa65e;hpb=5cab4cf3322f29c0ed7134d23740e07382914f20;p=pspp diff --git a/tests/perl-module.at b/tests/perl-module.at index cbe2a0dd33..f3f393cc2c 100644 --- a/tests/perl-module.at +++ b/tests/perl-module.at @@ -16,20 +16,31 @@ dnl along with this program. If not, see . dnl AT_BANNER([Perl module tests]) +m4_divert_push([PREPARE_TESTS]) +# Find the Address Sanitizer library that PSPP is linked against, if any. +# If it exists, it needs to be preloaded when we run Perl. +asan_lib=$($abs_top_builddir/libtool --mode=execute ldd \ + $abs_top_builddir/src/ui/terminal/pspp 2>/dev/null \ + | grep asan \ + | awk '{print $3}') +if test ! -e "$asan_lib"; then + asan_lib= +fi + dnl This command can be used to run with the PSPP Perl module after it has been dnl built (with "make") but before it has been installed. The -I options are dnl equivalent to "use ExtUtils::testlib;" inside the Perl program, but it does dnl not need to be run with the perl-module build directory as the current dnl working directory. -dnl -dnl XXX "libtool --mode=execute" is probably better than setting -dnl LD_LIBRARY_PATH. -m4_define([RUN_PERL_MODULE], - [LD_LIBRARY_PATH=$abs_top_builddir/src/.libs \ - LD_PRELOAD=/usr/lib/i386-linux-gnu/libasan.so.4 \ - DYLD_LIBRARY_PATH=$abs_top_builddir/src/.libs \ - $PERL -I$abs_top_builddir/perl-module/blib/arch \ - -I$abs_top_builddir/perl-module/blib/lib]) +run_perl_module () { + LD_PRELOAD=$asan_lib:$LD_PRELOAD \ + LD_LIBRARY_PATH=$abs_top_builddir/src/.libs \ + DYLD_LIBRARY_PATH=$abs_top_builddir/src/.libs \ + ASAN_OPTIONS="$ASAN_OPTIONS detect_leaks=false" \ + $PERL -I$abs_top_builddir/perl-module/blib/arch \ + -I$abs_top_builddir/perl-module/blib/lib "$@" +} +m4_divert_pop([PREPARE_TESTS]) AT_SETUP([Perl create system file]) AT_SKIP_IF([test "$WITH_PERL_MODULE" = no]) @@ -68,7 +79,7 @@ AT_DATA([test.pl], $sysfile->close (); ]) -AT_CHECK([RUN_PERL_MODULE test.pl]) +AT_CHECK([run_perl_module test.pl]) AT_DATA([dump-dict.sps], [GET FILE='testfile.sav'. DISPLAY FILE LABEL. @@ -140,7 +151,7 @@ AT_DATA([test.pl], # Don't close. We want to test that the destructor does that. ]]) -AT_CHECK([RUN_PERL_MODULE test.pl]) +AT_CHECK([run_perl_module test.pl]) AT_DATA([dump-dicts.sps], [GET FILE='testfile.sav'. DISPLAY DICTIONARY. @@ -232,7 +243,7 @@ AT_DATA([test.pl], $sysfile->close (); ]]) -AT_CHECK([RUN_PERL_MODULE test.pl], [0], [], [stderr]) +AT_CHECK([run_perl_module test.pl], [0], [], [stderr]) cat stderr AT_DATA([dump-dict.sps], [GET FILE='testfile.sav'. @@ -282,7 +293,7 @@ my $sysfile ; my $res = $sysfile->append_case ([3]); print "Dictionary survives sysfile\n" if $res; ]]) -AT_CHECK([RUN_PERL_MODULE test.pl], [0], +AT_CHECK([run_perl_module test.pl], [0], [Dictionary survives sysfile ]) AT_CLEANUP @@ -360,7 +371,7 @@ AT_DATA([test.pl], print "\n"; } ]]) -AT_CHECK([RUN_PERL_MODULE test.pl], [0], +AT_CHECK([run_perl_module test.pl], [0], [Variable 0 is "string", label is "A Short String Variable" Value Labels: 1111 => ones @@ -438,7 +449,7 @@ AT_DATA([test.pl], $output->close (); ]]) -AT_CHECK([RUN_PERL_MODULE test.pl]) +AT_CHECK([run_perl_module test.pl]) AT_DATA([dump-dicts.sps], [GET FILE='sample.sav'. DISPLAY DICTIONARY. @@ -560,7 +571,7 @@ AT_DATA([test.pl], print "Formatted string is \"$formatted\"\n"; print "Perl representation is \"$str\"\n"; ]]) -AT_CHECK([RUN_PERL_MODULE test.pl], [0], +AT_CHECK([run_perl_module test.pl], [0], [[Formatted string is "11-SEP-2001 08:20" Perl representation is "Tue Sep 11 08:20:00 2001" ]]) @@ -578,7 +589,7 @@ AT_DATA([test.pl], die "Returns undef on opening failure" if ref $sf; print $PSPP::errstr, "\n"; ]]) -AT_CHECK([RUN_PERL_MODULE test.pl], [0], +AT_CHECK([run_perl_module test.pl], [0], [[An error occurred while opening `no-such-file.sav': No such file or directory. ]], [[Name "PSPP::errstr" used only once: possible typo at test.pl line 8. @@ -628,7 +639,7 @@ AT_DATA([test.pl], die "Missing Value Positive Num" if !PSPP::value_is_missing ($val, $numericvar); ]]) -AT_CHECK([RUN_PERL_MODULE test.pl]) +AT_CHECK([run_perl_module test.pl]) AT_CLEANUP AT_SETUP([Perl custom attributes]) @@ -654,7 +665,7 @@ AT_DATA([test.pl], print map "$_\n", join ', ', @$ll; } ]]) -AT_CHECK([RUN_PERL_MODULE test.pl], [0], +AT_CHECK([run_perl_module test.pl], [0], [[$@Role =>0 colour =>blue, pink, violet nationality =>foreign @@ -666,7 +677,7 @@ AT_SETUP([Perl Pspp.t]) AT_SKIP_IF([test "$WITH_PERL_MODULE" = no]) # Skip this test if Perl's Text::Diff module is not installed. AT_CHECK([perl -MText::Diff -e '' || exit 77]) -AT_CHECK([RUN_PERL_MODULE $abs_top_builddir/perl-module/t/Pspp.t], [0], +AT_CHECK([run_perl_module $abs_top_builddir/perl-module/t/Pspp.t], [0], [[1..37 ok 1 - use PSPP; ok 2 - Dictionary Creation