You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2013/02/15 13:08:54 UTC
svn commit: r1446548 -
/subversion/trunk/subversion/tests/cmdline/update_tests.py
Author: philip
Date: Fri Feb 15 12:08:54 2013
New Revision: 1446548
URL: http://svn.apache.org/r1446548
Log:
This test was updating 'A/E' but that path never exists, I think the
path should be 'A/B/E' based on the rest of the test. The test is
still XFAIL as for some reason the update reports two conflicts on
'A', otherwise the test would PASS.
* subversion/tests/cmdline/update_tests.py
(update_moved_away): Change the update target, tweak expectations.
Modified:
subversion/trunk/subversion/tests/cmdline/update_tests.py
Modified: subversion/trunk/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/update_tests.py?rev=1446548&r1=1446547&r2=1446548&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/update_tests.py Fri Feb 15 12:08:54 2013
@@ -6589,7 +6589,7 @@ def windows_update_backslash(sbox):
@XFail()
def update_moved_away(sbox):
- "switch a moved away directory"
+ "update subtree of moved away"
sbox.build()
wc_dir = sbox.wc_dir
@@ -6599,17 +6599,21 @@ def update_moved_away(sbox):
sbox.simple_move('A', 'A_moved')
+ # Adding prev_status=' ' and prev_treeconflict='C' to A will make
+ # the test PASS but why are we getting two conflicts?
expected_output = svntest.wc.State(wc_dir, {
+ 'A' : Item(status=' ', treeconflict='C'),
})
expected_disk = None
- expected_status = expected_output = svntest.wc.State(wc_dir, {
+ expected_status = svntest.wc.State(wc_dir, {
'' : Item(status=' ', wc_rev='1'),
- 'A' : Item(status='D ', wc_rev='1', moved_to='A_moved'),
+ 'A' : Item(status='D ', wc_rev='1', moved_to='A_moved',
+ treeconflict='C'),
'A/B' : Item(status='D ', wc_rev='1'),
- 'A/B/E' : Item(status='D ', wc_rev='1'),
- 'A/B/E/beta' : Item(status='D ', wc_rev='1'),
- 'A/B/E/alpha' : Item(status='D ', wc_rev='1'),
+ 'A/B/E' : Item(status='D ', wc_rev='2'),
+ 'A/B/E/beta' : Item(status='D ', wc_rev='2'),
+ 'A/B/E/alpha' : Item(status='D ', wc_rev='2'),
'A/B/F' : Item(status='D ', wc_rev='1'),
'A/B/lambda' : Item(status='D ', wc_rev='1'),
'A/D' : Item(status='D ', wc_rev='1'),
@@ -6624,7 +6628,8 @@ def update_moved_away(sbox):
'A/D/gamma' : Item(status='D ', wc_rev='1'),
'A/C' : Item(status='D ', wc_rev='1'),
'A/mu' : Item(status='D ', wc_rev='1'),
- 'A_moved' : Item(status='A ', copied='+', moved_from='A'),
+ 'A_moved' : Item(status='A ', copied='+', wc_rev='-',
+ moved_from='A'),
'A_moved/D' : Item(status=' ', copied='+', wc_rev='-'),
'A_moved/D/G' : Item(status=' ', copied='+', wc_rev='-'),
'A_moved/D/G/rho' : Item(status=' ', copied='+', wc_rev='-'),
@@ -6636,7 +6641,7 @@ def update_moved_away(sbox):
'A_moved/D/H/chi' : Item(status=' ', copied='+', wc_rev='-'),
'A_moved/D/gamma' : Item(status=' ', copied='+', wc_rev='-'),
'A_moved/B' : Item(status=' ', copied='+', wc_rev='-'),
- 'A_moved/B/E' : Item(status='A ', copied='+', wc_rev='-'),
+ 'A_moved/B/E' : Item(status=' ', copied='+', wc_rev='-'),
'A_moved/B/E/beta' : Item(status=' ', copied='+', wc_rev='-'),
'A_moved/B/E/alpha' : Item(status=' ', copied='+', wc_rev='-'),
'A_moved/B/lambda' : Item(status=' ', copied='+', wc_rev='-'),
@@ -6647,11 +6652,9 @@ def update_moved_away(sbox):
'new' : Item(status=' ', wc_rev='2'),
})
- # This update currently breaks the moved status away from the
- # original location.
-
- # Either this update should fail (error/skip), or the moved from
- # information should stay in sync. (A/E should be its own op-depth)
+ # This update raises a tree-conflict on A. The conflict cannot be
+ # resolved to update the move destination because the move source is
+ # mixed rev.
# Note that this same scenario doesn't apply to switch as we don't
# allow switches with as root a shadowed node.
@@ -6661,7 +6664,7 @@ def update_moved_away(sbox):
expected_status,
None, None, None,
None, None, None,
- sbox.ospath('A/E'))
+ sbox.ospath('A/B/E'))
#######################################################################
Re: svn commit: r1446548 - /subversion/trunk/subversion/tests/cmdline/update_tests.py
Posted by Philip Martin <ph...@wandisco.com>.
"Bert Huijben" <be...@qqmail.nl> writes:
>> + # This update raises a tree-conflict on A. The conflict cannot be
>> + # resolved to update the move destination because the move source is
>> + # mixed rev.
>
> Is it easy to test that resolving fails?
It is already tested in op-depth-test.c:finite_move_update_bump.
> Run 'svn resolve --accept something' and verify the error?
We could do that as well.
--
Certified & Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download
Re: svn commit: r1446548 - /subversion/trunk/subversion/tests/cmdline/update_tests.py
Posted by Philip Martin <ph...@wandisco.com>.
"Bert Huijben" <be...@qqmail.nl> writes:
>> + # Adding prev_status=' ' and prev_treeconflict='C' to A will make
>> + # the test PASS but why are we getting two conflicts?
>> expected_output = svntest.wc.State(wc_dir, {
>> + 'A' : Item(status=' ', treeconflict='C'),
>> })
>
> Thanks for tweaking...
>
> Yes, this looks strange. We had one conflict before your work
> (standard shadowed update). Is the other one caused by the revision
> bump?
Yes. There is a comment /* ### Look for existing conflict? */.
Obviously I was mistaken but I was under the impression that the update
code didn't raise a tree-conflict when simply bumping a subtree of a
delete. Perhaps that changed recently?
--
Certified & Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download
RE: svn commit: r1446548 - /subversion/trunk/subversion/tests/cmdline/update_tests.py
Posted by Bert Huijben <be...@qqmail.nl>.
> -----Original Message-----
> From: philip@apache.org [mailto:philip@apache.org]
> Sent: vrijdag 15 februari 2013 13:09
> To: commits@subversion.apache.org
> Subject: svn commit: r1446548 -
> /subversion/trunk/subversion/tests/cmdline/update_tests.py
>
> Author: philip
> Date: Fri Feb 15 12:08:54 2013
> New Revision: 1446548
>
> URL: http://svn.apache.org/r1446548
> Log:
> This test was updating 'A/E' but that path never exists, I think the
> path should be 'A/B/E' based on the rest of the test. The test is
> still XFAIL as for some reason the update reports two conflicts on
> 'A', otherwise the test would PASS.
>
> * subversion/tests/cmdline/update_tests.py
> (update_moved_away): Change the update target, tweak expectations.
>
> Modified:
> subversion/trunk/subversion/tests/cmdline/update_tests.py
>
> Modified: subversion/trunk/subversion/tests/cmdline/update_tests.py
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/
> update_tests.py?rev=1446548&r1=1446547&r2=1446548&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/tests/cmdline/update_tests.py (original)
> +++ subversion/trunk/subversion/tests/cmdline/update_tests.py Fri Feb 15
> 12:08:54 2013
> @@ -6589,7 +6589,7 @@ def windows_update_backslash(sbox):
>
> @XFail()
> def update_moved_away(sbox):
> - "switch a moved away directory"
> + "update subtree of moved away"
>
> sbox.build()
> wc_dir = sbox.wc_dir
> @@ -6599,17 +6599,21 @@ def update_moved_away(sbox):
>
> sbox.simple_move('A', 'A_moved')
>
> + # Adding prev_status=' ' and prev_treeconflict='C' to A will make
> + # the test PASS but why are we getting two conflicts?
> expected_output = svntest.wc.State(wc_dir, {
> + 'A' : Item(status=' ', treeconflict='C'),
> })
Thanks for tweaking...
Yes, this looks strange. We had one conflict before your work (standard shadowed update). Is the other one caused by the revision bump?
>
> expected_disk = None
> - expected_status = expected_output = svntest.wc.State(wc_dir, {
> + expected_status = svntest.wc.State(wc_dir, {
> '' : Item(status=' ', wc_rev='1'),
> - 'A' : Item(status='D ', wc_rev='1', moved_to='A_moved'),
> + 'A' : Item(status='D ', wc_rev='1', moved_to='A_moved',
> + treeconflict='C'),
> 'A/B' : Item(status='D ', wc_rev='1'),
> - 'A/B/E' : Item(status='D ', wc_rev='1'),
> - 'A/B/E/beta' : Item(status='D ', wc_rev='1'),
> - 'A/B/E/alpha' : Item(status='D ', wc_rev='1'),
> + 'A/B/E' : Item(status='D ', wc_rev='2'),
> + 'A/B/E/beta' : Item(status='D ', wc_rev='2'),
> + 'A/B/E/alpha' : Item(status='D ', wc_rev='2'),
> 'A/B/F' : Item(status='D ', wc_rev='1'),
> 'A/B/lambda' : Item(status='D ', wc_rev='1'),
> 'A/D' : Item(status='D ', wc_rev='1'),
> @@ -6624,7 +6628,8 @@ def update_moved_away(sbox):
> 'A/D/gamma' : Item(status='D ', wc_rev='1'),
> 'A/C' : Item(status='D ', wc_rev='1'),
> 'A/mu' : Item(status='D ', wc_rev='1'),
> - 'A_moved' : Item(status='A ', copied='+', moved_from='A'),
> + 'A_moved' : Item(status='A ', copied='+', wc_rev='-',
> + moved_from='A'),
> 'A_moved/D' : Item(status=' ', copied='+', wc_rev='-'),
> 'A_moved/D/G' : Item(status=' ', copied='+', wc_rev='-'),
> 'A_moved/D/G/rho' : Item(status=' ', copied='+', wc_rev='-'),
> @@ -6636,7 +6641,7 @@ def update_moved_away(sbox):
> 'A_moved/D/H/chi' : Item(status=' ', copied='+', wc_rev='-'),
> 'A_moved/D/gamma' : Item(status=' ', copied='+', wc_rev='-'),
> 'A_moved/B' : Item(status=' ', copied='+', wc_rev='-'),
> - 'A_moved/B/E' : Item(status='A ', copied='+', wc_rev='-'),
> + 'A_moved/B/E' : Item(status=' ', copied='+', wc_rev='-'),
I added this one, to make sure we don't just accidentally upgrade the original revision of the descendants only, without adding an additional op-root.
I think this part should be covered in an additional test that tries to resolve the tree conflict.
> 'A_moved/B/E/beta' : Item(status=' ', copied='+', wc_rev='-'),
> 'A_moved/B/E/alpha' : Item(status=' ', copied='+', wc_rev='-'),
> 'A_moved/B/lambda' : Item(status=' ', copied='+', wc_rev='-'),
> @@ -6647,11 +6652,9 @@ def update_moved_away(sbox):
> 'new' : Item(status=' ', wc_rev='2'),
> })
>
> - # This update currently breaks the moved status away from the
> - # original location.
> -
> - # Either this update should fail (error/skip), or the moved from
> - # information should stay in sync. (A/E should be its own op-depth)
> + # This update raises a tree-conflict on A. The conflict cannot be
> + # resolved to update the move destination because the move source is
> + # mixed rev.
Is it easy to test that resolving fails?
Run 'svn resolve --accept something' and verify the error?
(Away from my pc... spending time with my sons)
Bert