Author: cmpilato
Date: Mon Nov 22 14:42:05 2010
New Revision: 1037738
URL: http://svn.apache.org/viewvc?rev=1037738&view=rev
Log:
Issue #3693 - Multi-target update output is quite confusing.
Add notifications at the start of each performed update, and a summary
at the end of the whole mess.
* subversion/svn/update-cmd.c
(print_update_summary): New helper function.
(svn_cl__update): Capture the result revisions from
svn_client_update4(), and feed them to print_update_summary().
* subversion/svn/notify.c
(struct notify_baton): Replace 'suppress_final_line' member with
'suppress_summary_lines' member.
(notify): Handle the new 'svn_wc_notify_update_started' notification.
(svn_cl__get_notifier): Replace 'suppress_final_line' parameter with
'suppress_summary_lines' parameter, used to populate the
same-named member of the notify_baton.
* subversion/include/svn_wc.h
(svn_wc_notify_action_t): Add 'svn_wc_notify_update_started' value.
* subversion/libsvn_client/update.c
(update_internal): Generate an 'svn_wc_notify_update_started' notification.
* subversion/tests/cmdline/svntest/actions.py
(exp_noop_up_out): New function.
* subversion/tests/cmdline/import_tests.py,
* subversion/tests/cmdline/mergeinfo_tests.py,
* subversion/tests/cmdline/log_tests.py,
* subversion/tests/cmdline/copy_tests.py,
* subversion/tests/cmdline/merge_reintegrate_tests.py,
* subversion/tests/cmdline/schedule_tests.py
(exp_noop_up_out): New abbreviation, now used everywhere a test was
previously expecting output of ["At revision REV.\n"]
* subversion/tests/cmdline/update_tests.py
(exp_noop_up_out): New abbreviation, now used everywhere a test was
previously expecting output of ["At revision REV.\n"]
(another_hudson_problem): Adjust expectations according to these changes.
* subversion/tests/cmdline/merge_tests.py
(exp_noop_up_out): New abbreviation, now used everywhere a test was
previously expecting output of ["At revision REV.\n"]
(merge_range_prior_to_rename_source_existence): Adjust expectations
according to these changes.
* subversion/tests/cmdline/redirect_tests.py
(redirect_update): Adjust expectations according to these changes.
Modified:
subversion/trunk/subversion/include/svn_wc.h
subversion/trunk/subversion/libsvn_client/update.c
subversion/trunk/subversion/svn/notify.c
subversion/trunk/subversion/svn/update-cmd.c
subversion/trunk/subversion/tests/cmdline/copy_tests.py
subversion/trunk/subversion/tests/cmdline/import_tests.py
subversion/trunk/subversion/tests/cmdline/log_tests.py
subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py
subversion/trunk/subversion/tests/cmdline/merge_tests.py
subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py
subversion/trunk/subversion/tests/cmdline/redirect_tests.py
subversion/trunk/subversion/tests/cmdline/schedule_tests.py
subversion/trunk/subversion/tests/cmdline/svntest/actions.py
subversion/trunk/subversion/tests/cmdline/update_tests.py
Modified: subversion/trunk/subversion/include/svn_wc.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_wc.h?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_wc.h (original)
+++ subversion/trunk/subversion/include/svn_wc.h Mon Nov 22 14:42:05 2010
@@ -1039,6 +1039,9 @@ typedef enum svn_wc_notify_action_t
* which is unable to be operated on. @since New in 1.6. */
svn_wc_notify_failed_external,
+ /** Starting an update operation. @since New in 1.7. */
+ svn_wc_notify_update_started,
+
/** An update tried to add a file or directory at path but an
* unversioned obstruction was found. @since New in 1.7. */
svn_wc_notify_update_obstruction,
Modified: subversion/trunk/subversion/libsvn_client/update.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/update.c?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/update.c (original)
+++ subversion/trunk/subversion/libsvn_client/update.c Mon Nov 22 14:42:05 2010
@@ -156,6 +156,20 @@ update_internal(svn_revnum_t *result_rev
? svn_cstring_split(preserved_exts_str, "\n\r\t\v ", FALSE, pool)
: NULL;
+ /* Let everyone know we're starting a real update (unless we're
+ asked not to). */
+ if (ctx->notify_func2 && notify_summary)
+ {
+ svn_wc_notify_t *notify
+ = svn_wc_create_notify(local_abspath, svn_wc_notify_update_started,
+ pool);
+ notify->kind = svn_node_none;
+ notify->content_state = notify->prop_state
+ = svn_wc_notify_state_inapplicable;
+ notify->lock_state = svn_wc_notify_lock_state_inapplicable;
+ (*ctx->notify_func2)(ctx->notify_baton2, notify, pool);
+ }
+
/* Open an RA session for the URL */
SVN_ERR(svn_client__open_ra_session_internal(&ra_session, &corrected_url,
anchor_url,
Modified: subversion/trunk/subversion/svn/notify.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/notify.c?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/notify.c (original)
+++ subversion/trunk/subversion/svn/notify.c Mon Nov 22 14:42:05 2010
@@ -46,7 +46,7 @@ struct notify_baton
svn_boolean_t received_some_change;
svn_boolean_t is_checkout;
svn_boolean_t is_export;
- svn_boolean_t suppress_final_line;
+ svn_boolean_t suppress_summary_lines;
svn_boolean_t sent_first_txdelta;
svn_boolean_t in_external;
svn_boolean_t had_print_error; /* Used to not keep printing error messages
@@ -547,9 +547,21 @@ notify(void *baton, const svn_wc_notify_
}
break;
+ case svn_wc_notify_update_started:
+ if (! (nb->suppress_summary_lines ||
+ nb->in_external ||
+ nb->is_checkout ||
+ nb->is_export))
+ {
+ if ((err = svn_cmdline_printf(pool, _("Updating '%s'...\n"),
+ path_local)))
+ goto print_error;
+ }
+ break;
+
case svn_wc_notify_update_completed:
{
- if (! nb->suppress_final_line)
+ if (! nb->suppress_summary_lines)
{
if (SVN_IS_VALID_REVNUM(n->revision))
{
@@ -912,7 +924,7 @@ notify(void *baton, const svn_wc_notify_
svn_error_t *
svn_cl__get_notifier(svn_wc_notify_func2_t *notify_func_p,
void **notify_baton_p,
- svn_boolean_t suppress_final_line,
+ svn_boolean_t suppress_summary_lines,
apr_pool_t *pool)
{
struct notify_baton *nb = apr_palloc(pool, sizeof(*nb));
@@ -921,7 +933,7 @@ svn_cl__get_notifier(svn_wc_notify_func2
nb->sent_first_txdelta = FALSE;
nb->is_checkout = FALSE;
nb->is_export = FALSE;
- nb->suppress_final_line = suppress_final_line;
+ nb->suppress_summary_lines = suppress_summary_lines;
nb->in_external = FALSE;
nb->had_print_error = FALSE;
nb->text_conflicts = 0;
Modified: subversion/trunk/subversion/svn/update-cmd.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/update-cmd.c?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/update-cmd.c (original)
+++ subversion/trunk/subversion/svn/update-cmd.c Mon Nov 22 14:42:05 2010
@@ -39,6 +39,42 @@
/*** Code. ***/
+/* Print an update summary when there's more than one target to report
+ about. */
+static svn_error_t *
+print_update_summary(apr_array_header_t *targets,
+ apr_array_header_t *result_revs,
+ apr_pool_t *scratch_pool)
+{
+ int i;
+
+ if (targets->nelts < 2)
+ return SVN_NO_ERROR;
+
+ SVN_ERR(svn_cmdline_printf(scratch_pool, _("Summary of updates:\n")));
+
+ for (i = 0; i < targets->nelts; i++)
+ {
+ const char *path = APR_ARRAY_IDX(targets, i, const char *);
+
+ if (i < result_revs->nelts)
+ {
+ svn_revnum_t rev = APR_ARRAY_IDX(result_revs, i, const char *);
+
+ if (SVN_IS_VALID_REVNUM(rev))
+ SVN_ERR(svn_cmdline_printf(scratch_pool,
+ _(" Updated '%s' to r%ld.\n"),
+ path, rev));
+ }
+ else
+ {
+ /* ### Notify about targets for which there's no
+ ### result_rev? Can we even get here? */
+ }
+ }
+ return SVN_NO_ERROR;
+}
+
/* This implements the `svn_opt_subcommand_t' interface. */
svn_error_t *
svn_cl__update(apr_getopt_t *os,
@@ -51,6 +87,7 @@ svn_cl__update(apr_getopt_t *os,
svn_depth_t depth;
svn_boolean_t depth_is_sticky;
struct svn_cl__check_externals_failed_notify_baton nwb;
+ apr_array_header_t *result_revs;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -92,7 +129,7 @@ svn_cl__update(apr_getopt_t *os,
ctx->notify_func2 = svn_cl__check_externals_failed_notify_wrapper;
ctx->notify_baton2 = &nwb;
- SVN_ERR(svn_client_update4(NULL, targets,
+ SVN_ERR(svn_client_update4(&result_revs, targets,
&(opt_state->start_revision),
depth, depth_is_sticky,
opt_state->ignore_externals,
@@ -100,7 +137,10 @@ svn_cl__update(apr_getopt_t *os,
ctx, scratch_pool));
if (! opt_state->quiet)
- SVN_ERR(svn_cl__print_conflict_stats(nwb.wrapped_baton, scratch_pool));
+ {
+ SVN_ERR(print_update_summary(targets, result_revs, scratch_pool));
+ SVN_ERR(svn_cl__print_conflict_stats(nwb.wrapped_baton, scratch_pool));
+ }
if (nwb.had_externals_error)
return svn_error_create(SVN_ERR_CL_ERROR_PROCESSING_EXTERNALS, NULL,
Modified: subversion/trunk/subversion/tests/cmdline/copy_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/copy_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/copy_tests.py Mon Nov 22 14:42:05
2010
@@ -38,7 +38,7 @@ SkipUnless = svntest.testcase.SkipUnless
XFail = svntest.testcase.XFail
Wimp = svntest.testcase.Wimp
Item = svntest.wc.StateItem
-
+exp_noop_up_out = svntest.actions.expected_noop_update_output
#
#----------------------------------------------------------------------
@@ -4228,7 +4228,7 @@ def reverse_merge_move(sbox):
rav_svn(None, None, [], 'co', sbox.repo_url, wc2_dir)
# Update working directory and ensure that we are at revision 1.
- rav_svn(None, ["At revision 1.\n"], [], 'up', wc_dir)
+ rav_svn(None, exp_noop_up_out(1), [], 'up', wc_dir)
# Add new folder and file, later commit
new_path = os.path.join(a_dir, 'New')
@@ -4237,12 +4237,12 @@ def reverse_merge_move(sbox):
svntest.main.file_append(first_path, 'appended first text')
svntest.main.run_svn(None, "add", new_path)
rav_svn(None, None, [], 'ci', wc_dir, '-m', 'Add new folder %s' % new_path)
- rav_svn(None, ["At revision 2.\n"], [], 'up', wc_dir)
+ rav_svn(None, exp_noop_up_out(2), [], 'up', wc_dir)
# Reverse merge to revert previous changes and commit
rav_svn(None, None, [], 'merge', '-c', '-2', a_repo_url, a_dir)
rav_svn(None, None, [], 'ci', '-m', 'Reverting svn merge -c -2.', a_dir)
- rav_svn(None, ["At revision 3.\n"], [], 'up', wc_dir)
+ rav_svn(None, exp_noop_up_out(3), [], 'up', wc_dir)
# Reverse merge again to undo last revert.
rav_svn(None, None, [], 'merge', '-c', '-3', a_repo_url, a_dir)
Modified: subversion/trunk/subversion/tests/cmdline/import_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/import_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/import_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/import_tests.py Mon Nov 22
14:42:05 2010
@@ -36,6 +36,7 @@ Skip = svntest.testcase.Skip
SkipUnless = svntest.testcase.SkipUnless
XFail = svntest.testcase.XFail
Item = wc.StateItem
+exp_noop_up_out = svntest.actions.expected_noop_update_output
######################################################################
# Tests
@@ -286,7 +287,8 @@ def import_avoid_empty_revision(sbox):
svntest.main.safe_rmtree(empty_dir)
# Verify that an empty revision has not been created
- svntest.actions.run_and_verify_svn(None, [ "At revision 1.\n"],
+ svntest.actions.run_and_verify_svn(None,
+ exp_noop_up_out(1),
[], "update",
empty_dir)
#----------------------------------------------------------------------
Modified: subversion/trunk/subversion/tests/cmdline/log_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/log_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/log_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/log_tests.py Mon Nov 22 14:42:05
2010
@@ -35,6 +35,9 @@ from svntest.main import server_has_merg
from svntest.main import SVN_PROP_MERGEINFO
from merge_tests import set_up_branch
+# (abbreviation)
+exp_noop_up_out = svntest.actions.expected_noop_update_output
+
######################################################################
#
# The Plan:
@@ -1564,7 +1567,8 @@ def merge_sensitive_log_added_mergeinfo_
# Reverse merge r3 from 'A/D/H' to 'A_COPY/D/H' and commit as r8.
# First update the wc so mergeinfo inheritance can occur. This is
# necessary so A_COPY/D/H 'knows' that r3 has been merged into it.
- svntest.actions.run_and_verify_svn(None, ["At revision 7.\n"], [],
+ svntest.actions.run_and_verify_svn(None,
+ exp_noop_up_out(7), [],
'up', wc_dir)
wc_status.tweak(wc_rev=7)
expected_output = wc.State(H_COPY_path, {
Modified: subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py
(original)
+++ subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py Mon
Nov 22 14:42:05 2010
@@ -37,6 +37,7 @@ Item = wc.StateItem
XFail = svntest.testcase.XFail
Skip = svntest.testcase.Skip
SkipUnless = svntest.testcase.SkipUnless
+exp_noop_up_out = svntest.actions.expected_noop_update_output
from svntest.main import SVN_PROP_MERGEINFO
from svntest.main import server_has_mergeinfo
@@ -1005,7 +1006,7 @@ def reintegrate_with_subtree_mergeinfo(s
# r10 - Merge r9 from A_COPY_3/D to A/D, creating explicit subtree
# mergeinfo under A. For this and every subsequent merge we update the WC
# first to allow full inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [], 'up',
wc_dir)
expected_status.tweak(wc_rev=9)
svntest.actions.run_and_verify_svn(
@@ -1032,7 +1033,7 @@ def reintegrate_with_subtree_mergeinfo(s
expected_disk.tweak('A_COPY_2/mu', contents="New content")
# r12 - Merge r11 from A_COPY_2/mu to A_COPY/mu
- svntest.actions.run_and_verify_svn(None, ["At revision 11.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(11), [], 'up',
wc_dir)
expected_status.tweak(wc_rev=11)
svntest.actions.run_and_verify_svn(
@@ -1050,7 +1051,7 @@ def reintegrate_with_subtree_mergeinfo(s
# r13 - Do a 'synch' cherry harvest merge of all available revisions
# from A to A_COPY
- svntest.actions.run_and_verify_svn(None, ["At revision 12.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(12), [], 'up',
wc_dir)
expected_status.tweak(wc_rev=12)
svntest.actions.run_and_verify_svn(
@@ -1105,7 +1106,7 @@ def reintegrate_with_subtree_mergeinfo(s
expected_disk.tweak('A_COPY/B/E/alpha', contents="New content")
# Now, reintegrate A_COPY to A. This should succeed.
- svntest.actions.run_and_verify_svn(None, ["At revision 14.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(14), [], 'up',
wc_dir)
expected_status.tweak(wc_rev=14)
expected_output = wc.State(A_path, {
@@ -1341,7 +1342,7 @@ def reintegrate_with_subtree_mergeinfo(s
# /A_COPY/D/gamma_moved:17-19
#
# shows that it is fully synched up with trunk.
- svntest.actions.run_and_verify_svn(None, ["At revision 19.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(19), [], 'up',
wc_dir)
expected_output = wc.State(A_path, {
'B/E/alpha' : Item(status='U '),
@@ -1638,7 +1639,7 @@ def reintegrate_with_self_referential_me
# r6 Copy A to A2 and then manually set some self-referential mergeinfo on
# A2/B and A2.
- svntest.actions.run_and_verify_svn(None, ["At revision 5.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(5), [],
'up', wc_dir)
svntest.actions.run_and_verify_svn(None, None, [],
'copy', A_path, A2_path)
@@ -1669,7 +1670,7 @@ def reintegrate_with_self_referential_me
# Update to uniform revision and reintegrate A2.1 back to A2.
# Note that the mergeinfo on A2/B is not changed by the reintegration
# and so is not expected to by updated to describe the merge.
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [],
'up', wc_dir)
expected_output = wc.State(A2_path, {
'mu' : Item(status='U '),
Modified: subversion/trunk/subversion/tests/cmdline/merge_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_tests.py Mon Nov 22
14:42:05 2010
@@ -38,6 +38,7 @@ XFail = svntest.testcase.XFail
Skip = svntest.testcase.Skip
SkipUnless = svntest.testcase.SkipUnless
Wimp = svntest.testcase.Wimp
+exp_noop_up_out = svntest.actions.expected_noop_update_output
from svntest.main import SVN_PROP_MERGEINFO
from svntest.main import server_has_mergeinfo
@@ -4843,7 +4844,7 @@ def mergeinfo_inheritance(sbox):
# Update the disconnected WC it so it will get the most recent mergeinfo
# from the repos when merging.
- svntest.actions.run_and_verify_svn(None, ["At revision 7.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [], 'up',
other_wc)
# Merge r5:4 into the root of the disconnected WC.
@@ -4942,7 +4943,7 @@ def mergeinfo_elision(sbox):
wc_dir)
# Update A_COPY to get all paths to the same working revision.
- svntest.actions.run_and_verify_svn(None, ["At revision 7.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [],
'up', wc_dir)
wc_status.tweak(wc_rev=7)
@@ -5406,7 +5407,7 @@ def merge_to_switched_path(sbox):
None, None, None, None, None, 1)
# Update working copy to allow elision (if any).
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [],
'up', wc_dir)
# Set some mergeinfo on a working copy parent of our switched subtree
@@ -5551,7 +5552,7 @@ def merge_to_path_with_switched_children
A_COPY_gamma_path = os.path.join(wc_dir, "A_COPY", "D", "gamma")
H_COPY_2_path = os.path.join(wc_dir, "A_COPY_2", "D", "H")
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [], 'up',
wc_dir)
wc_status.tweak(wc_rev=8)
@@ -5953,7 +5954,7 @@ def merge_to_path_with_switched_children
# Update merge target so working revisions are uniform and all
# possible elision occurs.
- svntest.actions.run_and_verify_svn(None, ["At revision 10.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(10), [],
'up', A_COPY_path)
# Do the reverse merge.
@@ -7194,7 +7195,7 @@ def merge_away_subtrees_noninheritable_r
nu_COPY_path = os.path.join(wc_dir, "A_COPY", "nu")
# Make a change to directory A/D/H and commit as r8.
- svntest.actions.run_and_verify_svn(None, ['At revision 7.\n'], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [],
'update', wc_dir)
svntest.actions.run_and_verify_svn(
@@ -7633,7 +7634,7 @@ def merge_to_sparse_directories(sbox):
wc_disk.tweak('A/mu', contents="New content")
# r8 - Add a prop to A/D and commit.
- svntest.actions.run_and_verify_svn(None, ["At revision 7.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [],
'up', wc_dir)
svntest.actions.run_and_verify_svn(None,
["property 'prop:name' set on '" +
@@ -7648,7 +7649,7 @@ def merge_to_sparse_directories(sbox):
None, wc_dir)
# r9 - Add a prop to A and commit.
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [],
'up', wc_dir)
svntest.actions.run_and_verify_svn(None,
["property 'prop:name' set on '" +
@@ -9721,7 +9722,7 @@ def new_subtrees_should_not_break_merge(
# Commit this merge as r9.
#
# Update the wc first to make setting the expected status a bit easier.
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [],
'up', wc_dir)
wc_status.tweak(wc_rev=8)
expected_output = wc.State(wc_dir, {
@@ -9740,7 +9741,7 @@ def new_subtrees_should_not_break_merge(
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
wc_status, None, wc_dir)
# Update the WC.
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [],
'up', wc_dir)
wc_status.tweak(wc_rev=9)
@@ -9832,7 +9833,7 @@ def new_subtrees_should_not_break_merge(
wc_status.tweak('A_COPY/D/G/rho', wc_rev=10)
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
wc_status, None, wc_dir)
- svntest.actions.run_and_verify_svn(None, ["At revision 10.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(10), [],
'up', wc_dir)
wc_status.tweak(wc_rev=10)
@@ -11612,7 +11613,7 @@ def subtree_merges_dont_intersect_with_t
wc_disk.tweak('A/D/H/psi', contents="Even newer content")
# Update the WC.
- svntest.actions.run_and_verify_svn(None, ['At revision 8.\n'], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [],
'update', wc_dir)
wc_status.tweak(wc_rev=8)
@@ -11685,7 +11686,7 @@ def subtree_merges_dont_intersect_with_t
wc_dir)
# Update the WC.
- svntest.actions.run_and_verify_svn(None, ['At revision 9.\n'], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [],
'update', wc_dir)
# Make sure we have mergeinfo that meets the two criteria set out above.
@@ -11941,7 +11942,7 @@ def subtree_source_missing_in_requested_
svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
'merge r6 to A_COPY',
wc_dir)
- svntest.actions.run_and_verify_svn(None, ["At revision 10.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(10), [], 'up',
wc_dir)
# r11 - Merge r8 to A_COPY.
@@ -11970,7 +11971,7 @@ def subtree_source_missing_in_requested_
svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
'merge r8 to A_COPY/D/H/omega',
wc_dir)
- svntest.actions.run_and_verify_svn(None, ["At revision 11.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(11), [], 'up',
wc_dir)
# r12 - modify A/D/H/omega yet again.
@@ -11990,7 +11991,7 @@ def subtree_source_missing_in_requested_
svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
'cherry harvest to A_COPY/D/H/omega',
wc_dir)
- svntest.actions.run_and_verify_svn(None, ["At revision 13.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(13), [], 'up',
wc_dir)
# Check that svn:mergeinfo is as expected.
@@ -12157,7 +12158,7 @@ def subtree_source_missing_in_requested_
# Update A_COPY/D/H/rho back to r13 so it's mergeinfo doesn't include
# r12. Then merge a range, -r6:12 which should delete a subtree
# (A_COPY/D/H/psi).
- svntest.actions.run_and_verify_svn(None, ["At revision 14.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(14), [], 'up',
wc_dir)
expected_output = wc.State(A_COPY_path, {
'D/H/psi' : Item(status='D '),
@@ -12375,7 +12376,7 @@ def commit_to_subtree_added_by_merge(sbo
# *did* succeed, but the wrong path ('A/D/H/nu' rather than 'A_COPY/D/H/nu')
# is affected. We can see this by running an update; since we just
# committed there shouldn't be any incoming changes.
- svntest.actions.run_and_verify_svn(None, ["At revision 5.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(5), [], 'up',
wc_dir)
@@ -12557,7 +12558,7 @@ def subtree_merges_dont_cause_spurious_c
wc_disk.tweak('A/D/G/rho', contents="Even *newer* content")
# Update the WC to allow full mergeinfo inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [], 'up',
wc_dir)
wc_status.tweak(wc_rev=8)
@@ -12653,7 +12654,7 @@ def subtree_merges_dont_cause_spurious_c
wc_status, None, wc_dir)
# Update the WC to allow full mergeinfo inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [], 'up',
wc_dir)
wc_status.tweak(wc_rev=9)
@@ -12834,7 +12835,7 @@ def merge_target_and_subtrees_need_nonin
None, wc_dir)
# Update the WC to allow full mergeinfo inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [], 'up',
wc_dir)
# Merge all available revisions from A to A_COPY, the merge logic
@@ -13078,7 +13079,7 @@ def merge_adds_mergeinfo_correctly(sbox)
D_COPY_2_path = os.path.join(wc_dir, "A_COPY_2", "D")
# Update working copy to allow full inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 7.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [],
'up', wc_dir)
wc_status.tweak(wc_rev=7)
@@ -13216,7 +13217,7 @@ def merge_adds_mergeinfo_correctly(sbox)
# the mergeinfo describing this merge '/A_COPY_2:9' should also be present
# in A_COPY's explicit mergeinfo.
# Update working copy to allow full inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [],
'up', wc_dir)
expected_output = wc.State(A_COPY_path, {
'D' : Item(status=' U'),
@@ -13437,7 +13438,7 @@ def natural_history_filtering(sbox):
# r9: Merge all available revisions from A to A_COPY. But first
# update working copy to allow full inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [],
'up', wc_dir)
wc_status.tweak(wc_rev=8)
expected_output = wc.State(A_COPY_path, {
@@ -13524,7 +13525,7 @@ def natural_history_filtering(sbox):
None, wc_dir)
# Again update the working copy to allow full inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [],
'up', wc_dir)
wc_status.tweak(wc_rev=9)
@@ -13761,7 +13762,7 @@ def no_self_referential_filtering_on_add
# r9: Merge r8 from A_COPY to A.
#
# Update first to avoid an out of date error.
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [], 'up',
wc_dir)
wc_status.tweak(wc_rev=8)
svntest.actions.run_and_verify_svn(
@@ -13934,7 +13935,7 @@ def merge_range_prior_to_rename_source_e
wc_status, None, wc_dir)
# r10 - Merge all available revisions (i.e. -r1:9) from A to A_COPY.
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [], 'up',
wc_dir)
wc_status.tweak(wc_rev=9)
svntest.actions.run_and_verify_svn(
@@ -13968,7 +13969,7 @@ def merge_range_prior_to_rename_source_e
wc_status, None, wc_dir)
# r11 - Reverse merge -r9:1 from A/B to A_COPY/B
- svntest.actions.run_and_verify_svn(None, ["At revision 10.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(10), [], 'up',
wc_dir)
wc_status.tweak(wc_rev=10)
svntest.actions.run_and_verify_svn(
@@ -13995,7 +13996,8 @@ def merge_range_prior_to_rename_source_e
sbox.repo_url + '/A/D/H/nu_moved',
'-m', 'Move nu to nu_moved')
svntest.actions.run_and_verify_svn(None,
- ["D " + nu_path + "\n",
+ ["Updating '%s'...\n" % (wc_dir),
+ "D " + nu_path + "\n",
"A " + nu_moved_path + "\n",
"Updated to revision 12.\n"],
[], 'up', wc_dir)
@@ -14092,7 +14094,7 @@ def merge_range_prior_to_rename_source_e
# Properties on 'A_COPY_2\B':
# svn:mergeinfo
# /A/B:3-13
- svntest.actions.run_and_verify_svn(None, ["At revision 13.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(13), [], 'up',
wc_dir)
svntest.actions.run_and_verify_svn(None,
None, # Don't check stdout, we test this
@@ -14105,7 +14107,7 @@ def merge_range_prior_to_rename_source_e
None, None, [], 'ci', '-m',
'Merge all from A/B to A_COPY_2/B\nMerge -r2:9 from A to A_COPY_2',
wc_dir)
- svntest.actions.run_and_verify_svn(None, ["At revision 14.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(14), [], 'up',
wc_dir)
# Now reverse merge -r13:7 from A to A_COPY_2.
@@ -14284,7 +14286,7 @@ def set_up_natural_history_gap(sbox):
# Update the WC to a uniform revision.
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
wc_status, None, wc_dir)
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [],
'up', wc_dir)
return wc_disk, wc_status
@@ -14668,7 +14670,7 @@ def noop_file_merge(sbox):
wc_dir);
# Update working copy to allow full inheritance and elision.
- svntest.actions.run_and_verify_svn(None, ["At revision 7.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [],
'up', wc_dir)
# Merge all available revisions from A/D/H/chi to A_COPY/D/H/chi.
@@ -14828,7 +14830,7 @@ def record_only_merge(sbox):
wc_dir)
# r10 - Merge r8 from A to A_COPY.
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [], 'up',
wc_dir)
svntest.actions.run_and_verify_svn(None,
expected_merge_output(
@@ -14883,7 +14885,7 @@ def record_only_merge(sbox):
'commit', '-m', 'Several subtree merges',
wc_dir)
- svntest.actions.run_and_verify_svn(None, ["At revision 11.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(11), [], 'up',
wc_dir)
# Now do a --record-only merge of r10 and r11 from A_COPY to A2.
@@ -15212,7 +15214,7 @@ def skipped_files_get_correct_mergeinfo(
#
# Issue #3440 occurred when empty mergeinfo was set on A_COPY/D/H, making
# it appear that r3 was never merged.
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [],
'up', wc_dir)
svntest.actions.run_and_verify_svn(None, None, [],
'up', '--set-depth=empty', H_COPY_path)
Modified: subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Mon Nov 22
14:42:05 2010
@@ -36,6 +36,7 @@ Item = wc.StateItem
XFail = svntest.testcase.XFail
Skip = svntest.testcase.Skip
SkipUnless = svntest.testcase.SkipUnless
+exp_noop_up_out = svntest.actions.expected_noop_update_output
from svntest.main import SVN_PROP_MERGEINFO
from svntest.main import server_has_mergeinfo
@@ -169,7 +170,7 @@ def non_inheritable_mergeinfo(sbox):
# Update the WC, then merge r4 from A to A_COPY and r6 from A to A_COPY
# at --depth empty and commit the merges as r7.
- svntest.actions.run_and_verify_svn(None, ["At revision 6.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(6), [], 'up',
wc_dir)
expected_status.tweak(wc_rev=6)
svntest.actions.run_and_verify_svn(
@@ -195,7 +196,7 @@ def non_inheritable_mergeinfo(sbox):
expected_status, None, wc_dir)
# Update the WC a last time to ensure full inheritance.
- svntest.actions.run_and_verify_svn(None, ["At revision 7.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [], 'up',
wc_dir)
# Despite being non-inheritable, r6 should still show as merged to A_COPY
@@ -248,7 +249,7 @@ def recursive_mergeinfo(sbox):
nu2_path = os.path.join(wc_dir, "A2", "C", "nu2")
# Rename A to A2 in r7.
- svntest.actions.run_and_verify_svn(None, ["At revision 6.\n"], [], 'up',
wc_dir)
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(6), [], 'up',
wc_dir)
svntest.actions.run_and_verify_svn(None, None, [],
'ren', A_path, A2_path)
svntest.actions.run_and_verify_svn(None, None, [],
@@ -264,7 +265,7 @@ def recursive_mergeinfo(sbox):
# Do several merges to create varied subtree mergeinfo
# Merge r4 from A2 to A_COPY at depth empty
- svntest.actions.run_and_verify_svn(None, ["At revision 8.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(8), [], 'up',
wc_dir)
svntest.actions.run_and_verify_svn(
None,
@@ -318,7 +319,7 @@ def recursive_mergeinfo(sbox):
# Commit everything this far as r9
svntest.actions.run_and_verify_svn(None, None, [],
'ci', wc_dir, '-m', 'Many merges')
- svntest.actions.run_and_verify_svn(None, ["At revision 9.\n"], [], 'up',
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(9), [], 'up',
wc_dir)
# Test svn mergeinfo -R / --depth infinity.
Modified: subversion/trunk/subversion/tests/cmdline/redirect_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/redirect_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/redirect_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/redirect_tests.py Mon Nov 22
14:42:05 2010
@@ -129,7 +129,9 @@ def redirected_update(sbox):
exit_code, out, err = svntest.main.run_svn(None, 'up', wc_dir)
if err:
raise svntest.Failure
- if not redirect_regex.match(out[0]):
+ if not re.match("^Updating '.*'...", out[0]):
+ raise svntest.Failure
+ if not redirect_regex.match(out[1]):
raise svntest.Failure
# Verify that we have the expected URL.
Modified: subversion/trunk/subversion/tests/cmdline/schedule_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/schedule_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/schedule_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/schedule_tests.py Mon Nov 22
14:42:05 2010
@@ -37,7 +37,7 @@ SkipUnless = svntest.testcase.SkipUnless
XFail = svntest.testcase.XFail
Wimp = svntest.testcase.Wimp
Item = svntest.wc.StateItem
-
+exp_noop_up_out = svntest.actions.expected_noop_update_output
######################################################################
# Tests
@@ -543,7 +543,7 @@ def status_add_deleted_directory(sbox):
# Update will *not* remove the entry for A despite it being marked
# deleted.
- svntest.actions.run_and_verify_svn(None, ['At revision 2.\n'], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(2), [],
'up', wc_dir)
expected_status.tweak('', 'iota', wc_rev=2)
svntest.actions.run_and_verify_status(wc_dir, expected_status)
Modified: subversion/trunk/subversion/tests/cmdline/svntest/actions.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/actions.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/actions.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/actions.py Mon Nov 22
14:42:05 2010
@@ -356,6 +356,13 @@ def load_repo(sbox, dumpfile_path = None
return dump_str
+def expected_noop_update_output(rev):
+ """Return an ExpectedOutput object describing what we'd expect to
+ see from an update to revision REV that was effectively a no-op (no
+ server changes transmitted)."""
+ return verify.createExpectedOutput("Updating '.*'...|At revision %d."
+ % (rev),
+ "no-op update")
######################################################################
# Subversion Actions
Modified: subversion/trunk/subversion/tests/cmdline/update_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/update_tests.py?rev=1037738&r1=1037737&r2=1037738&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/update_tests.py Mon Nov 22
14:42:05 2010
@@ -39,6 +39,7 @@ Skip = svntest.testcase.Skip
SkipUnless = svntest.testcase.SkipUnless
XFail = svntest.testcase.XFail
Item = svntest.wc.StateItem
+exp_noop_up_out = svntest.actions.expected_noop_update_output
from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
@@ -1168,11 +1169,13 @@ def another_hudson_problem(sbox):
# as 'deleted' and should not alter gamma's entry.
if not svntest.main.wc_is_singledb(wc_dir):
- expected_output = ['D '+G_path+'\n',
+ expected_output = ["Updating '%s'...\n" % (G_path),
+ 'D '+G_path+'\n',
'Updated to revision 3.\n',
]
else:
- expected_output = ['Restored \'' + G_path + '\'\n',
+ expected_output = ["Updating '%s'...\n" % (G_path),
+ 'Restored \'' + G_path + '\'\n',
'Restored \'' + G_path + os.path.sep + 'pi\'\n',
'Restored \'' + G_path + os.path.sep + 'rho\'\n',
'Restored \'' + G_path + os.path.sep + 'tau\'\n',
@@ -1226,9 +1229,9 @@ def update_deleted_targets(sbox):
None, wc_dir)
# Explicit update must not remove the 'deleted=true' entries
- svntest.actions.run_and_verify_svn(None, ['At revision 2.\n'], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(2), [],
'update', gamma_path)
- svntest.actions.run_and_verify_svn(None, ['At revision 2.\n'], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(2), [],
'update', F_path)
# Update to r1 to restore items, since the parent directory is already
@@ -3350,7 +3353,7 @@ def mergeinfo_update_elision(sbox):
expected_status, None, wc_dir)
# Update A to get all paths to the same working revision.
- svntest.actions.run_and_verify_svn(None, ["At revision 7.\n"], [],
+ svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [],
'up', wc_dir)
# Merge r6:7 into A/B_COPY/E
@@ -3394,7 +3397,7 @@ def mergeinfo_update_elision(sbox):
# r8 - Commit the merge
svntest.actions.run_and_verify_svn(None,
- ["At revision 7.\n"],
+ exp_noop_up_out(7),
[], 'update', wc_dir)
expected_output = wc.State(wc_dir,
@@ -3792,7 +3795,8 @@ def update_accept_conflicts(sbox):
# Just leave the conflicts alone, since run_and_verify_svn already uses
# the --non-interactive option.
svntest.actions.run_and_verify_svn(None,
- ['C %s\n' % (iota_path_backup,),
+ ["Updating '%s'...\n" %
(iota_path_backup),
+ 'C %s\n' % (iota_path_backup,),
'Updated to revision 2.\n',
'Summary of conflicts:\n',
' Text conflicts: 1\n'],
@@ -3802,7 +3806,8 @@ def update_accept_conflicts(sbox):
# lambda: --accept=postpone
# Just leave the conflicts alone.
svntest.actions.run_and_verify_svn(None,
- ['C %s\n' % (lambda_path_backup,),
+ ["Updating '%s'...\n" %
(lambda_path_backup),
+ 'C %s\n' % (lambda_path_backup,),
'Updated to revision 2.\n',
'Summary of conflicts:\n',
' Text conflicts: 1\n'],
@@ -3813,7 +3818,8 @@ def update_accept_conflicts(sbox):
# mu: --accept=base
# Accept the pre-update base file.
svntest.actions.run_and_verify_svn(None,
- ['G %s\n' % (mu_path_backup,),
+ ["Updating '%s'...\n" % (mu_path_backup),
+ 'G %s\n' % (mu_path_backup,),
'Updated to revision 2.\n'],
[],
'update', '--accept=base',
@@ -3822,7 +3828,8 @@ def update_accept_conflicts(sbox):
# alpha: --accept=mine
# Accept the user's working file.
svntest.actions.run_and_verify_svn(None,
- ['G %s\n' % (alpha_path_backup,),
+ ["Updating '%s'...\n" %
(alpha_path_backup),
+ 'G %s\n' % (alpha_path_backup,),
'Updated to revision 2.\n'],
[],
'update', '--accept=mine-full',
@@ -3831,7 +3838,8 @@ def update_accept_conflicts(sbox):
# beta: --accept=theirs
# Accept their file.
svntest.actions.run_and_verify_svn(None,
- ['G %s\n' % (beta_path_backup,),
+ ["Updating '%s'...\n" %
(beta_path_backup),
+ 'G %s\n' % (beta_path_backup,),
'Updated to revision 2.\n'],
[],
'update', '--accept=theirs-full',
@@ -3842,7 +3850,8 @@ def update_accept_conflicts(sbox):
# conflicts in place, so expect a message on stderr, but expect
# svn to exit with an exit code of 0.
svntest.actions.run_and_verify_svn2(None,
- ['G %s\n' % (pi_path_backup,),
+ ["Updating '%s'...\n" % (pi_path_backup),
+ 'G %s\n' % (pi_path_backup,),
'Updated to revision 2.\n'],
"system(.*) returned.*", 0,
'update', '--accept=edit',
@@ -3851,7 +3860,8 @@ def update_accept_conflicts(sbox):
# rho: --accept=launch
# Run the external merge tool, it should leave conflict markers in place.
svntest.actions.run_and_verify_svn(None,
- ['C %s\n' % (rho_path_backup,),
+ ["Updating '%s'...\n" % (rho_path_backup),
+ 'C %s\n' % (rho_path_backup,),
'Updated to revision 2.\n',
'Summary of conflicts:\n',
' Text conflicts: 1\n'],