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

Reply via email to