[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Test failures with subversion 1.7.2

From: Elias Pipping <pipping_at_lavabit.com>
Date: Wed, 28 Dec 2011 00:29:25 +0100

Hello,

I get a couple of test failures with subversion 1.7.2; using the trunk
instead does not help.

Here are the test failures:

Running tests in db-test [7/85]FAILURE
Running tests in entries-compat-test [10/85]FAILURE
Running tests in op-depth-test [17/85]FAILURE
Running tests in pristine-store-test [21/85]FAILURE
Running tests in tree-conflict-data-test [34/85]FAILURE
Running tests in authz_tests.py [37/85][SKIPPED] Python sqlite3 module required

Let me take just one of those tests, db-test:

% python ./build/run_tests.py --config-file ./subversion/tests/tests.conf . . subversion/tests/libsvn_wc/db-test
Running tests in db-test [1/1]FAILURE
At least one test FAILED, checking /home/pipping/subversion-1.7.2/tests.log
FAIL: db-test: Unknown test failure; see tests.log.
Summary of test results:
  1 test FAILED
%

A look at the log file reveals:

% < tests.log
START: db-test
/home/pipping/subversion-1.7.2/subversion/tests/libsvn_wc/.libs/db-test: symbol lookup error: /home/pipping/subversion
-1.7.2/subversion/tests/libsvn_wc/.libs/db-test: undefined symbol: svn_io_remove_file2
FAIL: db-test: Unknown test failure; see tests.log.
END: db-test
ELAPSED: db-test 0:00:00.106494

%

And indeed, running the test manually yields:

 % libtool --mode execute ./subversion/tests/libsvn_wc/db-test
/home/pipping/subversion-1.7.2/subversion/tests/libsvn_wc/.libs/db-test: symbol lookup error: /home/pipping/subversion-1.7.2/subversion/tests/libsvn_wc/.libs/db-test: undefined symbol: svn_io_remove_file2
%

That symbol is there, however.

This happens if I set the LD_LIBRARY_PATH correctly (the way libtool
--mode execute should):

% LD_LIBRARY_PATH=./subversion/libsvn_wc/.libs/:./subversion/libsvn_subr/.libs:./subversion/tests/.libs ./subversion/tests/libsvn_wc/.libs/db-test
PASS: db-test 1: get information from wc.db
PASS: db-test 2: insert different nodes into wc.db
PASS: db-test 3: getting the list of BASE or WORKING children
PASS: db-test 4: reading information about the WORKING tree
PASS: db-test 5: creation of per-directory handles
PASS: db-test 6: scanning added working nodes
PASS: db-test 7: deletion introspection functions
PASS: db-test 8: relocating a node
PASS: db-test 9: work queue processing
PASS: db-test 10: externals store
%

Here's what libtool sets LD_LIBRARY_PATH to:

% grep LD_LIBRARY_PATH=\" ./subversion/tests/libsvn_wc/db-test
    LD_LIBRARY_PATH="/home/pipping/subversion-1.7.2/subversion/libsvn_client/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_wc/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_ra/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_ra_local/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_ra_svn/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_ra_neon/.libs:/usr/lib64:/home/pipping/subversion-1.7.2/subversion/tests/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_repos/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_fs/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_fs_fs/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_fs_util/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_delta/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_diff/.libs:/home/pipping/subversion-1.7.2/subversion/libsvn_subr/.libs:$LD_LIBRARY_PATH"
%

Given how hard to read that is, here's that string again with colons
replaced by newlines:

/home/pipping/subversion-1.7.2/subversion/libsvn_client/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_wc/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_ra/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_ra_local/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_ra_svn/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_ra_neon/.libs
/usr/lib64
/home/pipping/subversion-1.7.2/subversion/tests/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_repos/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_fs/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_fs_fs/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_fs_util/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_delta/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_diff/.libs
/home/pipping/subversion-1.7.2/subversion/libsvn_subr/.libs
$LD_LIBRARY_PATH

The problem is with /usr/lib64. That is where an old version of
subversion (1.6.17) lives. Removing /usr/lib64 from that string makes
the db-test pass. Consequently, the aforementioned problem occurs if an
old version of subversion is installed and vanishes immediately once
that version is uninstalled.

This is clearly not desirable -- had I had e.g. subversion 1.7.1
installed instead of 1.6.17, I take it the tests would've passed,
fooling me into thinking what I had built had passed its tests when in
fact they'd never been run.

Best regards,

Elias Pipping
Received on 2011-12-28 00:30:02 CET

This is an archived mail posted to the Subversion Dev mailing list.