Noorul Islam K M <noorul_at_collab.net> writes:
> rhuijben_at_apache.org writes:
>
>> if (changelist_name)
>> {
>> - return svn_cl__try
>> - (svn_client_add_to_changelist(targets, changelist_name,
>> + SVN_ERR(svn_cl__try(
>> + svn_client_add_to_changelist(targets, changelist_name,
>> depth, opt_state->changelists,
>> ctx, pool),
>> - NULL, opt_state->quiet,
>> + &success, opt_state->quiet,
>> SVN_ERR_UNVERSIONED_RESOURCE,
>> SVN_ERR_WC_PATH_NOT_FOUND,
>> - SVN_NO_ERROR);
>> + SVN_NO_ERROR));
>> }
>> else
>> {
>> - return svn_cl__try
>> - (svn_client_remove_from_changelists(targets, depth,
>> + SVN_ERR(svn_cl__try(
>> + svn_client_remove_from_changelists(targets, depth,
>> opt_state->changelists,
>> ctx, pool),
>> - NULL, opt_state->quiet,
>> + &success, opt_state->quiet,
>> SVN_ERR_UNVERSIONED_RESOURCE,
>> SVN_ERR_WC_PATH_NOT_FOUND,
>> - SVN_NO_ERROR);
>> + SVN_NO_ERROR));
>> }
>> +
>> + if (!success)
>> + return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
>> + _("Could not display info for all targets because "
>> + "some targets don't exist"));
>
> I think this should be something like this.
>
> Could not add all targets to changelist because some targets don't exist
>
> I will add test cases for handling multiple targets.
>
Log
[[[
* subversion/svn/changelist-cmd.c
(svn_cl__changelist): Tweak error message. Also display different
error message for add and remove.
* subversion/tests/cmdline/changelist_tests.py
(mix_existing_and_non_existent_target): New test, verify that svn cl
errors out in desirable way if mixture for existing and non-existent
targets are passed.
(test_list): Add new test.
Patch by: Noorul Islam K M <noorul{_AT_}collab.net>
]]]
Thanks and Regards
Noorul
Index: subversion/tests/cmdline/changelist_tests.py
===================================================================
--- subversion/tests/cmdline/changelist_tests.py (revision 1146559)
+++ subversion/tests/cmdline/changelist_tests.py (working copy)
@@ -1170,7 +1170,57 @@
'changelist', unversioned,
'--remove')
+def mix_existing_and_non_existent_target(sbox):
+ "mixture of existing and non-existent target"
+ sbox.build()
+ wc_dir = sbox.wc_dir
+ iota_path = os.path.join(wc_dir, 'iota')
+ bogus_path = os.path.join(wc_dir, 'A', 'bogus')
+
+ expected_err1 = "svn: warning: W155010: The node '" + \
+ re.escape(os.path.abspath(bogus_path)) + \
+ "' was not found.\n"
+
+ expected_err2 = expected_err1 + \
+ ".*svn: E200009: Could not add targets to changelist " + \
+ "because some targets don't exist\n"
+
+ expected_err_re = re.compile(expected_err2, re.DOTALL)
+ expected_adds = {
+ iota_path : 'testlist',
+ }
+
+ exit_code, output, error = svntest.main.run_svn(1, 'changelist', 'testlist',
+ iota_path, bogus_path)
+
+ verify_changelist_output(output, expected_adds)
+
+ # Verify error
+ if not expected_err_re.match("".join(error)):
+ raise svntest.Failure('cl failed: expected error "%s", '
+ 'but received "%s"' %
+ (expected_err2, "".join(error)))
+
+ expected_err2 = expected_err1 + \
+ ".*svn: E200009: Could not remove targets from " + \
+ "changelist because some targets don't exist\n"
+
+ expected_err_re = re.compile(expected_err2, re.DOTALL)
+ expected_removals = expected_adds
+
+ exit_code, output, error = svntest.main.run_svn(1, 'changelist',
+ iota_path, bogus_path,
+ "--remove")
+
+ verify_changelist_output(output, None, expected_removals)
+
+ # Verify error
+ if not expected_err_re.match("".join(error)):
+ raise svntest.Failure('cl failed: expected error "%s", '
+ 'but received "%s"' %
+ (expected_err2, "".join(error)))
+
########################################################################
# Run the tests
@@ -1192,6 +1242,7 @@
revert_deleted_in_changelist,
add_remove_non_existent_target,
add_remove_unversioned_target,
+ mix_existing_and_non_existent_target,
]
if __name__ == '__main__':
Index: subversion/svn/changelist-cmd.c
===================================================================
--- subversion/svn/changelist-cmd.c (revision 1146559)
+++ subversion/svn/changelist-cmd.c (working copy)
@@ -107,6 +107,11 @@
SVN_ERR_UNVERSIONED_RESOURCE,
SVN_ERR_WC_PATH_NOT_FOUND,
SVN_NO_ERROR));
+
+ if (!success)
+ return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
+ _("Could not add targets to changelist "
+ "because some targets don't exist"));
}
else
{
@@ -118,12 +123,12 @@
SVN_ERR_UNVERSIONED_RESOURCE,
SVN_ERR_WC_PATH_NOT_FOUND,
SVN_NO_ERROR));
+
+ if (!success)
+ return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
+ _("Could not remove targets from changelist "
+ "because some targets don't exist"));
}
- if (!success)
- return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
- _("Could not display info for all targets because "
- "some targets don't exist"));
- else
return SVN_NO_ERROR;
}
Received on 2011-07-14 09:07:40 CEST