You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2014/06/05 20:43:58 UTC

svn commit: r1600724 - in /subversion/trunk/subversion: svn/ tests/cmdline/

Author: danielsh
Date: Thu Jun  5 18:43:58 2014
New Revision: 1600724

URL: http://svn.apache.org/r1600724
Log:
Follow-up to r1592724: make 'svn propget nodeprop' error out on non-existing
properties, too.

* subversion/svn/propget-cmd.c
  (svn_cl__propget): As above.  Issue a warning for each explicit target
    and error out at the end if any warnings have been issued.

* subversion/tests/cmdline/copy_tests.py
  (repos_to_wc, copy_added_paths_to_URL, copy_peg_rev_url):
* subversion/tests/cmdline/externals_tests.py
  (duplicate_targets):
* subversion/tests/cmdline/merge_reintegrate_tests.py
  (no_source_subtree_mergeinfo):
* subversion/tests/cmdline/merge.py
  (textual_merges_galore, mergeinfo_elision, empty_mergeinfo):
* subversion/tests/cmdline/prop_tests.py
  (props_over_time):
* subversion/tests/cmdline/resolve_tests.py
  (prop_conflict_resolution):
* subversion/tests/cmdline/schedule_tests.py
  (add_executable):
* subversion/tests/cmdline/svnmucc_tests.py
  (propset_root_internal):
    Adjust failure mode expectations.

Modified:
    subversion/trunk/subversion/svn/propget-cmd.c
    subversion/trunk/subversion/tests/cmdline/copy_tests.py
    subversion/trunk/subversion/tests/cmdline/externals_tests.py
    subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/trunk/subversion/tests/cmdline/merge_tests.py
    subversion/trunk/subversion/tests/cmdline/prop_tests.py
    subversion/trunk/subversion/tests/cmdline/resolve_tests.py
    subversion/trunk/subversion/tests/cmdline/schedule_tests.py
    subversion/trunk/subversion/tests/cmdline/svnmucc_tests.py

Modified: subversion/trunk/subversion/svn/propget-cmd.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/propget-cmd.c?rev=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/propget-cmd.c (original)
+++ subversion/trunk/subversion/svn/propget-cmd.c Thu Jun  5 18:43:58 2014
@@ -320,6 +320,7 @@ svn_cl__propget(apr_getopt_t *os,
   const char *pname, *pname_utf8;
   apr_array_header_t *args, *targets;
   svn_stream_t *out;
+  svn_boolean_t warned = FALSE;
 
   if (opt_state->verbose && (opt_state->revprop || opt_state->strict
                              || opt_state->xml))
@@ -480,6 +481,21 @@ svn_cl__propget(apr_getopt_t *os,
           omit_newline = opt_state->strict;
           like_proplist = opt_state->verbose && !opt_state->strict;
 
+          /* If there are no properties, and exactly one node was queried,
+             then warn. */
+          if (opt_state->depth == svn_depth_empty
+              && !opt_state->show_inherited_props
+              && apr_hash_count(props) == 0)
+            {
+              svn_error_t *err;
+              err = svn_error_createf(SVN_ERR_PROPERTY_NOT_FOUND, NULL,
+                                      _("Property '%s' not found on '%s'"), 
+                                      pname_utf8, target);
+              svn_handle_warning2(stderr, err, "svn: ");
+              svn_error_clear(err);
+              warned = TRUE;
+            }
+
           if (opt_state->xml)
             SVN_ERR(print_properties_xml(
               pname_utf8, props,
@@ -500,5 +516,8 @@ svn_cl__propget(apr_getopt_t *os,
       svn_pool_destroy(subpool);
     }
 
+  if (warned)
+    return svn_error_create(SVN_ERR_BASE, NULL, NULL);
+
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/copy_tests.py?rev=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/copy_tests.py Thu Jun  5 18:43:58 2014
@@ -1039,8 +1039,8 @@ def repos_to_wc(sbox):
     })
   svntest.actions.run_and_verify_status(wc_dir, expected_output)
 
-  # Validate the merge info of the copy destination (we expect none)
-  svntest.actions.run_and_verify_svn(None, [], [],
+  # Validate the mergeinfo of the copy destination (we expect none)
+  svntest.actions.run_and_verify_svn(None, [], '.*W200017: Property.*not found',
                                      'propget', SVN_PROP_MERGEINFO,
                                      os.path.join(D_dir, 'B'))
 
@@ -2737,8 +2737,8 @@ def copy_added_paths_to_URL(sbox):
                                      'cp', '-m', '',
                                      upsilon_path, upsilon_copy_URL)
 
-  # Validate the merge info of the copy destination (we expect none).
-  svntest.actions.run_and_verify_svn(None, [], [],
+  # Validate the mergeinfo of the copy destination (we expect none).
+  svntest.actions.run_and_verify_svn(None, [], '.*W200017: Property.*not found',
                                      'propget',
                                      SVN_PROP_MERGEINFO, upsilon_copy_URL)
 
@@ -3428,7 +3428,7 @@ def copy_peg_rev_url(sbox):
                                      sigma_url + '@', '-m', 'rev 3')
 
   # Validate the copy destination's mergeinfo (we expect none).
-  svntest.actions.run_and_verify_svn(None, [], [],
+  svntest.actions.run_and_verify_svn(None, [], '.*W200017: Property.*not found',
                                      'propget', SVN_PROP_MERGEINFO, sigma_url)
 
   # Update to HEAD and verify disk contents

Modified: subversion/trunk/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/externals_tests.py?rev=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/externals_tests.py Thu Jun  5 18:43:58 2014
@@ -3029,9 +3029,9 @@ def duplicate_targets(sbox):
     'svn:externals', '^/A/B/E ././barf\n^/A/D/G .//barf', wc_dir)
 
   # svn pg svn:externals .
-  expected_stdout = []
+  expected_stderr = '.*W200017: Property.*not found'
 
-  actions.run_and_verify_svn2('OUTPUT', expected_stdout, [], 0, 'pg',
+  actions.run_and_verify_svn2('OUTPUT', [], expected_stderr, 1, 'pg',
     'svn:externals', wc_dir)
 
   # svn ps svn:externals "^/A/B/E ok" .

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=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py Thu Jun  5 18:43:58 2014
@@ -2528,7 +2528,9 @@ def no_source_subtree_mergeinfo(sbox):
   svntest.main.run_svn(None, 'update', wc_dir)
 
   # Verify that merge results in no subtree mergeinfo
-  svntest.actions.run_and_verify_svn(None, [], [], 'propget', 'svn:mergeinfo',
+  expected_stderr = '.*W200017: Property.*not found'
+  svntest.actions.run_and_verify_svn(None, [], expected_stderr,
+                                     'propget', 'svn:mergeinfo',
                                      sbox.repo_url + '/A/B2/E')
 
   # Merge trunk to branch-2
@@ -2537,7 +2539,8 @@ def no_source_subtree_mergeinfo(sbox):
   svntest.main.run_svn(None, 'update', wc_dir)
 
   # Verify that there is still no subtree mergeinfo
-  svntest.actions.run_and_verify_svn(None, [], [], 'propget', 'svn:mergeinfo',
+  svntest.actions.run_and_verify_svn(None, [], expected_stderr,
+                                     'propget', 'svn:mergeinfo',
                                      sbox.repo_url + '/A/B2/E')
 
   # Reintegrate branch-2 to trunk, this fails in 1.6.x from 1.6.13.

Modified: subversion/trunk/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_tests.py?rev=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_tests.py Thu Jun  5 18:43:58 2014
@@ -355,7 +355,7 @@ def textual_merges_galore(sbox):
     svntest.tree.detect_conflict_files, list(tau_conflict_support_files))
 
 
-  svntest.actions.run_and_verify_svn(None, [], [],
+  svntest.actions.run_and_verify_svn(None, [], '.*W200017: Property.*not found',
                                      'propget', SVN_PROP_MERGEINFO,
                                      os.path.join(other_wc,
                                                   "A", "D", "G", "rho"))
@@ -4895,7 +4895,7 @@ def mergeinfo_elision(sbox):
   svntest.actions.run_and_verify_status(beta_COPY_path, expected_status)
 
   # Once again A_COPY/B/E/beta has no mergeinfo.
-  svntest.actions.run_and_verify_svn(None, [], [],
+  svntest.actions.run_and_verify_svn(None, [], '.*W200017: Property.*not found',
                                      'propget', SVN_PROP_MERGEINFO,
                                      beta_COPY_path)
 
@@ -5978,7 +5978,8 @@ def empty_mergeinfo(sbox):
                                      A_COPY_path)
   svntest.actions.run_and_verify_status(wc_dir, wc_status)
   # Check that A_COPY's mergeinfo is gone.
-  svntest.actions.run_and_verify_svn(None, [], [], 'pg', 'svn:mergeinfo',
+  svntest.actions.run_and_verify_svn(None, [], '.*W200017: Property.*not found',
+                                     'pg', 'svn:mergeinfo',
                                      A_COPY_path)
 
 #----------------------------------------------------------------------

Modified: subversion/trunk/subversion/tests/cmdline/prop_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/prop_tests.py?rev=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/prop_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/prop_tests.py Thu Jun  5 18:43:58 2014
@@ -1601,12 +1601,13 @@ def props_over_time(sbox):
         pget_expected = expected
         if pget_expected:
           pget_expected = [ pget_expected + "\n" ]
+        expected_err = [] if expected else '.*W200017: Property.*not found.*'
         if op_rev != 0:
-          svntest.actions.run_and_verify_svn(None, pget_expected, [],
+          svntest.actions.run_and_verify_svn(None, pget_expected, expected_err,
                                              'propget', 'revision', peg_path,
                                              '-r', str(op_rev))
         else:
-          svntest.actions.run_and_verify_svn(None, pget_expected, [],
+          svntest.actions.run_and_verify_svn(None, pget_expected, expected_err,
                                              'propget', 'revision', peg_path)
 
         ### Test 'svn proplist -v'

Modified: subversion/trunk/subversion/tests/cmdline/resolve_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/resolve_tests.py?rev=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/resolve_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/resolve_tests.py Thu Jun  5 18:43:58 2014
@@ -203,10 +203,16 @@ def prop_conflict_resolution(sbox):
                                        '--accept=postpone', wc_dir)
     svntest.actions.run_and_verify_resolve([iota_path, mu_path], '-R',
                                            '--accept', resolve_accept, wc_dir)
+    if resolved_deleted_prop_val_output:
+      expected_deleted_stderr = []
+    else:
+      expected_deleted_stderr = '.*W200017: Property.*not found'
+
     svntest.actions.run_and_verify_svn(
       'svn revolve -R --accept=' + resolve_accept + ' of prop conflict '
       'not resolved as expected;',
-      resolved_deleted_prop_val_output, [], 'pg', 'propname', iota_path)
+      resolved_deleted_prop_val_output, expected_deleted_stderr,
+      'pg', 'propname', iota_path)
     svntest.actions.run_and_verify_svn(
       'svn revolve -R --accept=' + resolve_accept + ' of prop conflict '
       'not resolved as expected;',

Modified: subversion/trunk/subversion/tests/cmdline/schedule_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/schedule_tests.py?rev=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/schedule_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/schedule_tests.py Thu Jun  5 18:43:58 2014
@@ -184,15 +184,17 @@ def add_executable(sbox):
     file_ospath = sbox.ospath(fileName)
     if executable:
       expected_out = ["*\n"]
+      expected_err = []
     else:
       expected_out = []
+      expected_err = '.*W200017: Property.*not found'
 
     # create an empty file
     open(file_ospath, "w")
 
     os.chmod(file_ospath, perm)
     sbox.simple_add(fileName)
-    svntest.actions.run_and_verify_svn(None, expected_out, [],
+    svntest.actions.run_and_verify_svn(None, expected_out, expected_err,
                                        'propget', "svn:executable", file_ospath)
 
   test_cases = [

Modified: subversion/trunk/subversion/tests/cmdline/svnmucc_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svnmucc_tests.py?rev=1600724&r1=1600723&r2=1600724&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svnmucc_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svnmucc_tests.py Thu Jun  5 18:43:58 2014
@@ -353,7 +353,8 @@ def propset_root_internal(sbox, target):
                                          '-m', 'log msg',
                                          'propdel', 'foo',
                                          target)
-  svntest.actions.run_and_verify_svn(None, [], [],
+  svntest.actions.run_and_verify_svn(None, [],
+                                     '.*W200017: Property.*not found',
                                      'propget', '--strict', 'foo',
                                      target)