Noorul Islam K M wrote on Thu, Dec 23, 2010 at 15:53:58 +0530:
> 
> Forwarding one of the threads to dev@ with [PATCH] tag so that this gets
> attention of more people. Julian said on IRC,
> 
> <julianf> noorul: Now we're into the realm of changing behaviour. If the error
>         code returned from libsvn_client is different in 1.7 from what it
>         was in 1.6, maybe that indicates a backward-compatibility problem
>         with our APIs. I think this needs more review. It is not so simple
>         as just changing an error message.
> <julianf> noorul: Please could you post this again as a new thread, with
>         subject line starting with "[PATCH]"? I'd like other people to
>         review this. Thanks.
> 

So, to ask the obvious:

What error codes (err->apr_err) were returned in 1.6.x, and what
error codes are returned now?

Noorul: you can use tools/dev/which-error.py to convert numeric error
codes into symbolic ones.

(more below)

> Pasting here the log once more so that there is some clarity about the
> patch attached.
> 
> [[[
> 
> Make "svn info" to display the actual error message returned by API when
> one of the targets is a non-existent URL or wc-entry. 
> 
> * subversion/svn/info-cmd.c
>   (svn_cl__info): Display the actual error message returned by
>     svn_client_info3() instead of a custom one. Catch error
>     SVN_ERR_WC_PATH_NOT_FOUND instead of SVN_ERR_UNVERSIONED_RESOURCE
>     and SVN_ERR_ENTRY_NOT_FOUND for non-existent wc-entry.
> 
> * subversion/tests/cmdline/basic_tests.py
>   (info_nonexisting_file): Modify test case
> 
> Patch by: Noorul Islam K M <noorul{_AT_}collab.net>
> ]]]
> 
> 
> Thanks and Regards
> Noorul
> 

> Index: subversion/tests/cmdline/basic_tests.py
> ===================================================================
> --- subversion/tests/cmdline/basic_tests.py   (revision 1051915)
> +++ subversion/tests/cmdline/basic_tests.py   (working copy)
> @@ -2260,7 +2260,8 @@
>  
>    # Check for the correct error message
>    for line in errput:
> -    if re.match(".*\(Not a valid URL\).*", line):
> +    if re.match(".*" + idonotexist_url + ".*non-existent in revision 1.*",
> +                line):
>        return
>  
>    # Else never matched the expected error output, so the test failed.
> Index: subversion/svn/info-cmd.c
> ===================================================================
> --- subversion/svn/info-cmd.c (revision 1051915)
> +++ subversion/svn/info-cmd.c (working copy)
> @@ -566,25 +566,15 @@
>          {
>            /* If one of the targets is a non-existent URL or wc-entry,
>               don't bail out.  Just warn and move on to the next target. */
> -          if (err->apr_err == SVN_ERR_UNVERSIONED_RESOURCE
> -              || err->apr_err == SVN_ERR_ENTRY_NOT_FOUND)
> +          if (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND || 
> +              err->apr_err == SVN_ERR_RA_ILLEGAL_URL)
>              {
> -              SVN_ERR(svn_cmdline_fprintf
> -                      (stderr, subpool,
> -                       _("%s:  (Not a versioned resource)\n\n"),
> -                       svn_path_is_url(truepath)
> -                         ? truepath
> -                         : svn_dirent_local_style(truepath, pool)));
> +              char errbuf[256];
> +
> +              SVN_ERR(svn_cmdline_fprintf(
> +                stderr, subpool, "svn: %s\n\n", 
> +                svn_err_best_message(err, errbuf, sizeof(errbuf))));

Why do you have to place the "svn: " prefix here explicitly?  Normally
svn_handle_error2() would do that for you.  This is a red flag ("is
a wheel being reinvented here?") for me.

>              }
> -          else if (err->apr_err == SVN_ERR_RA_ILLEGAL_URL)
> -            {
> -              SVN_ERR(svn_cmdline_fprintf
> -                      (stderr, subpool,
> -                       _("%s:  (Not a valid URL)\n\n"),
> -                       svn_path_is_url(truepath)
> -                         ? truepath
> -                         : svn_dirent_local_style(truepath, pool)));
> -            }
>            else
>              {
>                return svn_error_return(err);


Reply via email to