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/04 18:00:16 UTC
svn commit: r1442177 -
/subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c
Author: philip
Date: Mon Feb 4 17:00:16 2013
New Revision: 1442177
URL: http://svn.apache.org/viewvc?rev=1442177&view=rev
Log:
Layered moved-to doesn't work yet.
* subversion/tests/libsvn_wc/op-depth-test.c
(layered_moved_to): Extend.
(test_funcs): Mark layered_moved_to XFAIL.
Modified:
subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c
Modified: subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c?rev=1442177&r1=1442176&r2=1442177&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c Mon Feb 4 17:00:16 2013
@@ -6035,40 +6035,52 @@ layered_moved_to(const svn_test_opts_t *
SVN_ERR(sbox_wc_mkdir(&b, "A"));
SVN_ERR(sbox_wc_mkdir(&b, "A/B"));
SVN_ERR(sbox_wc_mkdir(&b, "A/B/C"));
- SVN_ERR(sbox_wc_mkdir(&b, "B"));
- SVN_ERR(sbox_wc_mkdir(&b, "B/C"));
+ SVN_ERR(sbox_wc_mkdir(&b, "A/B/C/D"));
+ SVN_ERR(sbox_wc_mkdir(&b, "A/B/C/D/E"));
+ SVN_ERR(sbox_wc_mkdir(&b, "C"));
+ SVN_ERR(sbox_wc_mkdir(&b, "C/D"));
+ SVN_ERR(sbox_wc_mkdir(&b, "C/D/E"));
SVN_ERR(sbox_wc_commit(&b, ""));
- SVN_ERR(sbox_wc_propset(&b, "property", "value", "A/B/C"));
- SVN_ERR(sbox_wc_propset(&b, "property", "value", "B/C"));
+ SVN_ERR(sbox_wc_propset(&b, "property", "value", "A/B/C/D/E"));
+ SVN_ERR(sbox_wc_propset(&b, "property", "value", "C/D/E"));
SVN_ERR(sbox_wc_commit(&b, ""));
SVN_ERR(sbox_wc_update(&b, "", 1));
SVN_ERR(sbox_wc_move(&b, "A", "X"));
- SVN_ERR(sbox_wc_move(&b, "X/B/C", "C2"));
- SVN_ERR(sbox_wc_delete(&b, "X/B"));
- SVN_ERR(sbox_wc_move(&b, "B", "X/B"));
- SVN_ERR(sbox_wc_move(&b, "X/B/C", "C3"));
+ SVN_ERR(sbox_wc_move(&b, "X/B/C/D/E", "E2"));
+ SVN_ERR(sbox_wc_delete(&b, "X/B/C"));
+ SVN_ERR(sbox_wc_move(&b, "C", "X/B/C"));
+ SVN_ERR(sbox_wc_move(&b, "X/B/C/D/E", "E3"));
{
nodes_row_t nodes[] = {
- {0, "", "normal", 1, ""},
- {0, "A", "normal", 1, "A"},
- {0, "A/B", "normal", 1, "A/B"},
- {0, "A/B/C", "normal", 1, "A/B/C"},
- {0, "B", "normal", 1, "B"},
- {0, "B/C", "normal", 1, "B/C"},
- {1, "A", "base-deleted", NO_COPY_FROM, "X"},
- {1, "A/B", "base-deleted", NO_COPY_FROM},
- {1, "A/B/C", "base-deleted", NO_COPY_FROM},
- {1, "B", "base-deleted", NO_COPY_FROM, "X/B"},
- {1, "B/C", "base-deleted", NO_COPY_FROM},
- {1, "X", "normal", 1, "A", MOVED_HERE},
- {1, "X/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "X/B/C", "normal", 1, "A/B/C", MOVED_HERE},
- {2, "X/B", "normal", 1, "B", MOVED_HERE},
- {2, "X/B/C", "normal", 1, "B/C", FALSE, "C2", TRUE},
- {3, "X/B/C", "base-deleted", NO_COPY_FROM, "C3"},
- {1, "C2", "normal", 1, "A/B/C", MOVED_HERE},
- {1, "C3", "normal", 1, "B/C", MOVED_HERE},
+ {0, "", "normal", 1, ""},
+ {0, "A", "normal", 1, "A"},
+ {0, "A/B", "normal", 1, "A/B"},
+ {0, "A/B/C", "normal", 1, "A/B/C"},
+ {0, "A/B/C/D", "normal", 1, "A/B/C/D"},
+ {0, "A/B/C/D/E", "normal", 1, "A/B/C/D/E"},
+ {0, "C", "normal", 1, "C"},
+ {0, "C/D", "normal", 1, "C/D"},
+ {0, "C/D/E", "normal", 1, "C/D/E"},
+ {1, "A", "base-deleted", NO_COPY_FROM, "X"},
+ {1, "A/B", "base-deleted", NO_COPY_FROM},
+ {1, "A/B/C", "base-deleted", NO_COPY_FROM},
+ {1, "A/B/C/D", "base-deleted", NO_COPY_FROM},
+ {1, "A/B/C/D/E", "base-deleted", NO_COPY_FROM},
+ {1, "C", "base-deleted", NO_COPY_FROM, "X/B/C"},
+ {1, "C/D", "base-deleted", NO_COPY_FROM},
+ {1, "C/D/E", "base-deleted", NO_COPY_FROM},
+ {1, "X", "normal", 1, "A", MOVED_HERE},
+ {1, "X/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "X/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "X/B/C/D", "normal", 1, "A/B/C/D", MOVED_HERE},
+ {1, "X/B/C/D/E", "normal", 1, "A/B/C/D/E", MOVED_HERE},
+ {3, "X/B/C", "normal", 1, "C", MOVED_HERE},
+ {3, "X/B/C/D", "normal", 1, "C/D", MOVED_HERE},
+ {3, "X/B/C/D/E", "normal", 1, "C/D/E", FALSE, "E2", TRUE},
+ {5, "X/B/C/D/E", "base-deleted", NO_COPY_FROM, "E3"},
+ {1, "E2", "normal", 1, "A/B/C/D/E", MOVED_HERE},
+ {1, "E3", "normal", 1, "C/D/E", MOVED_HERE},
{0}
};
SVN_ERR(check_db_rows(&b, "", nodes));
@@ -6076,29 +6088,39 @@ layered_moved_to(const svn_test_opts_t *
SVN_ERR(sbox_wc_update(&b, "A", 2));
SVN_ERR(sbox_wc_resolve(&b, "A", svn_wc_conflict_choose_mine_conflict));
- SVN_ERR(sbox_wc_resolve(&b, "X/B", svn_wc_conflict_choose_merged));
- SVN_ERR(sbox_wc_resolve(&b, "X/B/C", svn_wc_conflict_choose_mine_conflict));
+ SVN_ERR(sbox_wc_resolve(&b, "X/B/C", svn_wc_conflict_choose_merged));
+ SVN_ERR(sbox_wc_resolve(&b, "X/B/C/D/E",
+ svn_wc_conflict_choose_mine_conflict));
{
nodes_row_t nodes[] = {
- {0, "", "normal", 1, ""},
- {0, "A", "normal", 2, "A"},
- {0, "A/B", "normal", 2, "A/B"},
- {0, "A/B/C", "normal", 2, "A/B/C"},
- {0, "B", "normal", 1, "B"},
- {0, "B/C", "normal", 1, "B/C"},
- {1, "A", "base-deleted", NO_COPY_FROM, "X"},
- {1, "A/B", "base-deleted", NO_COPY_FROM},
- {1, "A/B/C", "base-deleted", NO_COPY_FROM},
- {1, "B", "base-deleted", NO_COPY_FROM, "X/B"},
- {1, "B/C", "base-deleted", NO_COPY_FROM},
- {1, "X", "normal", 2, "A", MOVED_HERE},
- {1, "X/B", "normal", 2, "A/B", MOVED_HERE},
- {1, "X/B/C", "normal", 2, "A/B/C", MOVED_HERE},
- {2, "X/B", "normal", 1, "B", MOVED_HERE},
- {2, "X/B/C", "normal", 1, "B/C", FALSE, "C2", TRUE},
- {3, "X/B/C", "base-deleted", NO_COPY_FROM, "C3"},
- {1, "C2", "normal", 2, "A/B/C", MOVED_HERE},
- {1, "C3", "normal", 1, "B/C", MOVED_HERE},
+ {0, "", "normal", 1, ""},
+ {0, "A", "normal", 2, "A"},
+ {0, "A/B", "normal", 2, "A/B"},
+ {0, "A/B/C", "normal", 2, "A/B/C"},
+ {0, "A/B/C/D", "normal", 2, "A/B/C/D"},
+ {0, "A/B/C/D/E", "normal", 2, "A/B/C/D/E"},
+ {0, "C", "normal", 1, "C"},
+ {0, "C/D", "normal", 1, "C/D"},
+ {0, "C/D/E", "normal", 1, "C/D/E"},
+ {1, "A", "base-deleted", NO_COPY_FROM, "X"},
+ {1, "A/B", "base-deleted", NO_COPY_FROM},
+ {1, "A/B/C", "base-deleted", NO_COPY_FROM},
+ {1, "A/B/C/D", "base-deleted", NO_COPY_FROM},
+ {1, "A/B/C/D/E", "base-deleted", NO_COPY_FROM},
+ {1, "C", "base-deleted", NO_COPY_FROM, "X/B/C"},
+ {1, "C/D", "base-deleted", NO_COPY_FROM},
+ {1, "C/D/E", "base-deleted", NO_COPY_FROM},
+ {1, "X", "normal", 2, "A", MOVED_HERE},
+ {1, "X/B", "normal", 2, "A/B", MOVED_HERE},
+ {1, "X/B/C", "normal", 2, "A/B/C", MOVED_HERE},
+ {1, "X/B/C/D", "normal", 2, "A/B/C/D", MOVED_HERE},
+ {1, "X/B/C/D/E", "normal", 2, "A/B/C/D/E", MOVED_HERE},
+ {3, "X/B/C", "normal", 1, "C", MOVED_HERE},
+ {3, "X/B/C/D", "normal", 1, "C/D", MOVED_HERE},
+ {3, "X/B/C/D/E", "normal", 1, "C/D/E", FALSE, "E2", TRUE},
+ {5, "X/B/C/D/E", "base-deleted", NO_COPY_FROM, "E3"},
+ {1, "E2", "normal", 2, "A/B/C/D/E", MOVED_HERE},
+ {1, "E3", "normal", 1, "C/D/E", MOVED_HERE},
{0}
};
SVN_ERR(check_db_rows(&b, "", nodes));
@@ -6223,7 +6245,7 @@ struct svn_test_descriptor_t test_funcs[
"switch_move"),
SVN_TEST_OPTS_PASS(move_replace,
"move_replace"),
- SVN_TEST_OPTS_PASS(layered_moved_to,
+ SVN_TEST_OPTS_XFAIL(layered_moved_to,
"layered_moved_to"),
SVN_TEST_NULL
};
Re: svn commit: r1442177 -
/subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c
Posted by Stefan Sperling <st...@elego.de>.
On Mon, Feb 04, 2013 at 05:23:52PM +0000, Philip Martin wrote:
> The test reaches a state with a delete-edit tree-conflict on X/B/C as a
> result of the update following some of the moves. This conflict has to
> be resolved to state 'working' which will remove the tree-conflict on
> X/B/C and raise a move-edit tree-conflict on X/B/C/D/E. Resolving that
> new move-edit tree-conflict to state 'mine-conflict' will update E2 and
> allow the test to pass. However when the resolver is invoked on X/B/C
> it automatically proceeds to resolve the new tree-conflict on X/B/C/D/E
> and that causes the test to fail.
>
> Having the resolver raise new tree-conflicts is new behaviour. Having
> the resolver code use the status walker is also new behaviour. To make
> this work I need the resolver to avoid resolving the newly raised
> tree-conflict but I'm not sure how best to do this. Sometimes resolving
> newly raised tree-conflicts is helpful to the user.
As far as I can see the only problem here is that you'd like to resolve
the conflict on 'X/B/C' to 'choose merged', but because the test ends
up passing depth infinity to svn_wc__resolve_conflicts() it also
resolves 'X/B/C/D/E' to 'choose_merged', while you want to resolve
that node to 'mine_conflict' instead.
I haven't tried, but you could probably change the test to pass a
depth != infinity to svn_wc__resolve_conflicts() when resolving
on 'X/B/C'. Would that help?
Re: svn commit: r1442177 - /subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c
Posted by Philip Martin <ph...@wandisco.com>.
philip@apache.org writes:
> Author: philip
> Date: Mon Feb 4 17:00:16 2013
> New Revision: 1442177
>
> URL: http://svn.apache.org/viewvc?rev=1442177&view=rev
> Log:
> Layered moved-to doesn't work yet.
>
> * subversion/tests/libsvn_wc/op-depth-test.c
> (layered_moved_to): Extend.
> (test_funcs): Mark layered_moved_to XFAIL.
This test starts with A/B/C/D/E, several moves result in E moved to E2
and then a parent of E gets replaced producing a new E that gets moved
to E3. An update of A then has to follow the moves to update E2. This
test currently fails due to the way the conflict resolver works.
The test reaches a state with a delete-edit tree-conflict on X/B/C as a
result of the update following some of the moves. This conflict has to
be resolved to state 'working' which will remove the tree-conflict on
X/B/C and raise a move-edit tree-conflict on X/B/C/D/E. Resolving that
new move-edit tree-conflict to state 'mine-conflict' will update E2 and
allow the test to pass. However when the resolver is invoked on X/B/C
it automatically proceeds to resolve the new tree-conflict on X/B/C/D/E
and that causes the test to fail.
Having the resolver raise new tree-conflicts is new behaviour. Having
the resolver code use the status walker is also new behaviour. To make
this work I need the resolver to avoid resolving the newly raised
tree-conflict but I'm not sure how best to do this. Sometimes resolving
newly raised tree-conflicts is helpful to the user.
--
Certified & Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download