Hello everyone,
I'm having a bit of trouble with subversion-1.8.0-rc2 on my Ubuntu Lucid
(x86_64) machine. "make check" or "./diff_tests.py 60" (in directory
subversion/tests/cmdline) fails with:
---
W: =============================================================
Expected '3449_spurious' and actual '3449_spurious' in status tree are
different!
=============================================================
EXPECTED NODE TO BE:
=============================================================
* Node name: 3449_spurious
Path: svn-test-work/working_copies/diff_tests-60/3449_spurious
Contents: None
Properties: {}
Attributes: {'status': 'M ', 'wc_rev': '2'}
Children: None (node is probably a file)
=============================================================
ACTUAL NODE FOUND:
=============================================================
* Node name: 3449_spurious
Path: svn-test-work/working_copies/diff_tests-60/3449_spurious
Contents: None
Properties: {}
Attributes: {'status': ' ', 'wc_rev': '2'}
Children: None (node is probably a file)
W: ACTUAL STATUS TREE:
svntest.wc.State(wc_dir, {
'' : Item(status=' M', wc_rev='2'),
'A' : Item(status=' ', wc_rev='2'),
'A/B' : Item(status=' ', wc_rev='2'),
'A/B/F' : Item(status=' ', wc_rev='2'),
'A/B/E' : Item(status=' ', wc_rev='2'),
'A/B/E/alpha' : Item(status=' ', wc_rev='2'),
'A/B/E/beta' : Item(status=' ', wc_rev='2'),
'A/B/lambda' : Item(status=' ', wc_rev='2'),
'A/D' : Item(status=' ', wc_rev='2'),
'A/D/H' : Item(status=' ', wc_rev='2'),
'A/D/H/omega' : Item(status=' ', wc_rev='2'),
'A/D/H/psi' : Item(status=' ', wc_rev='2'),
'A/D/H/chi' : Item(status=' ', wc_rev='2'),
'A/D/gamma' : Item(status=' ', wc_rev='2'),
'A/D/G' : Item(status=' ', wc_rev='2'),
'A/D/G/tau' : Item(status=' ', wc_rev='2'),
'A/D/G/pi' : Item(status=' ', wc_rev='2'),
'A/D/G/rho' : Item(status=' ', wc_rev='2'),
'A/C' : Item(status=' ', wc_rev='2'),
'A/mu' : Item(status=' ', wc_rev='2'),
'3449_spurious' : Item(status=' ', wc_rev='2'),
'iota' : Item(status=' ', wc_rev='2'),
})
W: CWD: [...]/subversion-1.8.0-rc2/subversion/tests/cmdline
W: EXCEPTION: SVNTreeUnequal
Traceback (most recent call last):
File
"[...]/subversion-1.8.0-rc2/subversion/tests/cmdline/svntest/main.py",
line 1550, in run
rc = self.pred.run(sandbox)
File
"[...]/subversion-1.8.0-rc2/subversion/tests/cmdline/svntest/testcase.py",
line 176, in run
return self.func(sandbox)
File "./diff_tests.py", line 3878, in no_spurious_conflict
svntest.actions.run_and_verify_status(wc_dir, expected_status)
File
"[...]/subversion-1.8.0-rc2/subversion/tests/cmdline/svntest/actions.py", line
1479, in run_and_verify_status
status_tree.compare_and_display('status', actual_status)
File
"[...]/subversion-1.8.0-rc2/subversion/tests/cmdline/svntest/wc.py",
line 344, in compare_and_display
raise svntest.tree.SVNTreeUnequal
SVNTreeUnequal
FAIL: diff_tests.py 60: no spurious conflict on update
---
It seems that the test fails to prepare the working copy for the actual
test. The "merge -c4 ^/" does not work as expected. Instead of merging
the changes of file 3449_spurious into the working copy, only a
svn:mergeinfo property is added to the working copy root.
Revision 4 itself seems fine in the repository.
"[...]/subversion/svn/svn diff -c4 ^/" appears to show the correct
changes in 3449_spurious.
Once the test fails, the incomplete merge is repeatable in directory
subversion/tests/cmdline/svn-test-work/working_copies/diff_tests-60 by
executing "[...]/subversion/svn/svn revert -R ." and then the merge
again. The merge fails to update file 3449_spurious every time, no
matter whether the last argument of the merge is "^/",
"^/3449_spurious",
"file://[...]/repositories/diff_tests-60/3449_spurious", or
"file://[...]/repositories/diff_tests-60/3449_spurious". If the last
argument refers to 3449_spurious, then a svn:mergeinfo property is added
to file 3449_spurious in the working copy, otherwise the property is
added to the root directory of the working copy. But the contents of
file 3449_spurious are never changed :-(. (The file's timestamp doesn't
change either.)
However, once I execute "[...]/svn revert -R .", "[...]/svn update", and
"[...]/svn update -r2" in the working copy, the merge works just fine
afterwards. And that "update -r2" is exactly what no_spurious_conflict
in diff_tests.py does before the faulty merge, if I'm reading the code
correctly.
Anyone else having this problem?
Ideas are welcome... :-)
Kind regards,
Tobias