subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hwri...@apache.org
Subject svn commit: r1232574 - in /subversion/branches/ev2-export: ./ subversion/include/ subversion/libsvn_client/ subversion/libsvn_fs/ subversion/libsvn_ra_serf/ subversion/libsvn_wc/ subversion/mod_dav_svn/ subversion/tests/cmdline/
Date Tue, 17 Jan 2012 21:09:44 GMT
Author: hwright
Date: Tue Jan 17 21:09:43 2012
New Revision: 1232574

URL: http://svn.apache.org/viewvc?rev=1232574&view=rev
Log:
On the ev2-editor branch:
Bring up-to-date with trunk.

Modified:
    subversion/branches/ev2-export/   (props changed)
    subversion/branches/ev2-export/subversion/include/svn_mergeinfo.h
    subversion/branches/ev2-export/subversion/libsvn_client/merge.c
    subversion/branches/ev2-export/subversion/libsvn_client/patch.c
    subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.h
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c
    subversion/branches/ev2-export/subversion/libsvn_wc/status.c
    subversion/branches/ev2-export/subversion/libsvn_wc/util.c
    subversion/branches/ev2-export/subversion/mod_dav_svn/util.c
    subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py

Propchange: subversion/branches/ev2-export/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 17 21:09:43 2012
@@ -57,3 +57,4 @@
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
 /subversion/branches/uris-as-urls:1060426-1064427
+/subversion/trunk:1231319-1232572

Modified: subversion/branches/ev2-export/subversion/include/svn_mergeinfo.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_mergeinfo.h?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_mergeinfo.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_mergeinfo.h Tue Jan 17 21:09:43
2012
@@ -166,9 +166,10 @@ svn_mergeinfo_parse(svn_mergeinfo_t *mer
                     apr_pool_t *pool);
 
 /** Calculate the delta between two mergeinfos, @a mergefrom and @a mergeto
- * (which may be @c NULL), and place the result in @a *deleted and @a
- * *added (neither output argument may be @c NULL), both allocated in @a
- * result_pool.
+ * (either or both of which may be @c NULL meaning an empty mergeinfo).
+ * Place the result in @a *deleted and @a *added (neither output argument
+ * may be @c NULL), both allocated in @a result_pool.  The resulting
+ * @a *deleted and @a *added will not be null.
  *
  * @a consider_inheritance determines how the rangelists in the two
  * hashes are compared for equality.  If @a consider_inheritance is FALSE,

Modified: subversion/branches/ev2-export/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/merge.c?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/merge.c Tue Jan 17 21:09:43 2012
@@ -9898,7 +9898,7 @@ find_unmerged_mergeinfo(svn_mergeinfo_ca
                         svn_revnum_t *youngest_merged_rev,
                         svn_revnum_t yc_ancestor_rev,
                         svn_mergeinfo_catalog_t source_catalog,
-                        apr_hash_t *target_segments_hash,
+                        apr_hash_t *target_history_hash,
                         const char *source_repos_rel_path,
                         const char *target_repos_rel_path,
                         svn_revnum_t target_rev,
@@ -9926,7 +9926,7 @@ find_unmerged_mergeinfo(svn_mergeinfo_ca
 
   /* Examine the natural history of each path in the reintegrate target
      with explicit mergeinfo. */
-  for (hi = apr_hash_first(scratch_pool, target_segments_hash);
+  for (hi = apr_hash_first(scratch_pool, target_history_hash);
        hi;
        hi = apr_hash_next(hi))
     {

Modified: subversion/branches/ev2-export/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/patch.c?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/patch.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/patch.c Tue Jan 17 21:09:43 2012
@@ -2718,7 +2718,7 @@ delete_empty_dirs(apr_array_header_t *ta
   empty_dirs = apr_hash_make(scratch_pool);
   non_empty_dirs = apr_hash_make(scratch_pool);
   iterpool = svn_pool_create(scratch_pool);
-  for (i = 0; i < targets_info->nelts; i++)
+  for (i = 0; i < deleted_targets->nelts; i++)
     {
       svn_boolean_t parent_empty;
       patch_target_info_t *target_info;
@@ -2729,7 +2729,7 @@ delete_empty_dirs(apr_array_header_t *ta
       if (ctx->cancel_func)
         SVN_ERR(ctx->cancel_func(ctx->cancel_baton));
 
-      target_info = APR_ARRAY_IDX(targets_info, i, patch_target_info_t *);
+      target_info = APR_ARRAY_IDX(deleted_targets, i, patch_target_info_t *);
 
       parent = svn_dirent_dirname(target_info->local_abspath, iterpool);
 

Modified: subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.h?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.h (original)
+++ subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.h Tue Jan 17 21:09:43 2012
@@ -25,7 +25,7 @@
 #ifndef LIBSVN_FS_FS_H
 #define LIBSVN_FS_FS_H
 
-#include "svn_version.h"
+#include "svn_types.h"
 #include "svn_fs.h"
 
 #ifdef __cplusplus

Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h Tue Jan 17 21:09:43
2012
@@ -78,6 +78,7 @@ typedef struct svn_ra_serf__connection_t
 
   /* Are we using ssl */
   svn_boolean_t using_ssl;
+  int server_cert_failures; /* Collected cert failures in chain */
 
   /* Should we ask for compressed responses? */
   svn_boolean_t using_compression;

Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c Tue Jan 17 21:09:43 2012
@@ -403,6 +403,7 @@ svn_ra_serf__open(svn_ra_session_t *sess
   serf_sess->conns[0]->last_status_code = -1;
 
   serf_sess->conns[0]->using_ssl = serf_sess->using_ssl;
+  serf_sess->conns[0]->server_cert_failures = 0;
   serf_sess->conns[0]->using_compression = serf_sess->using_compression;
   serf_sess->conns[0]->hostname = url.hostname;
   serf_sess->conns[0]->useragent = NULL;

Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/util.c Tue Jan 17 21:09:43 2012
@@ -271,6 +271,8 @@ ssl_server_cert(void *baton, int failure
   /* Implicitly approve any non-server certs. */
   if (serf_ssl_cert_depth(cert) > 0)
     {
+      if (failures)
+        conn->server_cert_failures |= ssl_convert_serf_failures(failures);
       return APR_SUCCESS;
     }
 
@@ -295,7 +297,8 @@ ssl_server_cert(void *baton, int failure
   cert_info.issuer_dname = convert_organisation_to_str(issuer, scratch_pool);
   cert_info.ascii_cert = serf_ssl_cert_export(cert, scratch_pool);
 
-  svn_failures = ssl_convert_serf_failures(failures);
+  svn_failures = (ssl_convert_serf_failures(failures)
+                  | conn->server_cert_failures);
 
   /* Try to find matching server name via subjectAltName first... */
   if (san) {

Modified: subversion/branches/ev2-export/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/status.c?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_wc/status.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_wc/status.c Tue Jan 17 21:09:43 2012
@@ -2610,7 +2610,11 @@ svn_wc__internal_walk_status(svn_wc__db_
   SVN_ERR(svn_io_stat_dirent(&dirent, local_abspath, TRUE,
                              scratch_pool, scratch_pool));
 
-  if (info && info->kind == svn_kind_dir)
+  if (info
+      && info->kind == svn_kind_dir
+      && info->status != svn_wc__db_status_not_present
+      && info->status != svn_wc__db_status_excluded
+      && info->status != svn_wc__db_status_server_excluded)
     {
       SVN_ERR(get_dir_status(&wb,
                              local_abspath,

Modified: subversion/branches/ev2-export/subversion/libsvn_wc/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/util.c?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_wc/util.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_wc/util.c Tue Jan 17 21:09:43 2012
@@ -595,9 +595,6 @@ svn_wc__fetch_base_func(const char **fil
                         apr_pool_t *scratch_pool)
 {
   struct svn_wc__shim_fetch_baton_t *sfb = baton;
-  svn_stream_t *contents;
-  svn_stream_t *file_stream;
-  const char *tmp_filename;
   const svn_checksum_t *checksum;
   svn_error_t *err;
   const char *local_abspath = svn_dirent_join(sfb->base_abspath, path,
@@ -622,15 +619,8 @@ svn_wc__fetch_base_func(const char **fil
       return SVN_NO_ERROR;
     }
 
-  SVN_ERR(svn_wc__db_pristine_read(&contents, NULL, sfb->db, local_abspath,
-                                   checksum, scratch_pool, scratch_pool));
-
-  SVN_ERR(svn_stream_open_unique(&file_stream, &tmp_filename, NULL,
-                                 svn_io_file_del_on_pool_cleanup,
-                                 scratch_pool, scratch_pool));
-  SVN_ERR(svn_stream_copy3(contents, file_stream, NULL, NULL, scratch_pool));
-
-  *filename = apr_pstrdup(result_pool, tmp_filename);
+  SVN_ERR(svn_wc__db_pristine_get_path(filename, sfb->db, local_abspath,
+                                       checksum, scratch_pool, scratch_pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/ev2-export/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/mod_dav_svn/util.c?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/ev2-export/subversion/mod_dav_svn/util.c Tue Jan 17 21:09:43 2012
@@ -631,19 +631,20 @@ void dav_svn__log_err(request_rec *r,
     /* Log the errors */
     /* ### should have a directive to log the first or all */
     for (errscan = err; errscan != NULL; errscan = errscan->prev) {
+        apr_status_t status;
+
         if (errscan->desc == NULL)
             continue;
 
-        if (errscan->save_errno != 0) {
-            errno = errscan->save_errno;
-            ap_log_rerror(APLOG_MARK, level, errno, r, "%s  [%d, #%d]",
-                          errscan->desc, errscan->status, errscan->error_id);
-        }
-        else {
-            ap_log_rerror(APLOG_MARK, level, 0, r,
-                          "%s  [%d, #%d]",
-                          errscan->desc, errscan->status, errscan->error_id);
-        }
+#if AP_MODULE_MAGIC_AT_LEAST(20091119,0)
+        status = errscan->aprerr;
+#else
+        status = errscan->save_errno;
+#endif
+
+        ap_log_rerror(APLOG_MARK, level, status, r,
+                      "%s  [%d, #%d]",
+                      errscan->desc, errscan->status, errscan->error_id);
     }
 }
 

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py Tue Jan 17 21:09:43
2012
@@ -2886,6 +2886,43 @@ def quiet_commits(sbox):
                                         expected_disk,
                                         expected_status)
 
+# Regression test for issue #4023: on Windows, 'svn rm' incorrectly deletes
+# on-disk file if it is case-clashing with intended (non-on-disk) target.
+@Issue(4023)
+@XFail(svntest.main.is_fs_case_insensitive)
+def rm_missing_with_case_clashing_ondisk_item(sbox):
+  """rm missing item with case-clashing ondisk item"""
+
+  sbox.build(read_only = True)
+  wc_dir = sbox.wc_dir
+
+  iota_path = os.path.join(wc_dir, 'iota')
+  IOTA_path = os.path.join(wc_dir, 'IOTA')
+  
+  # Out-of-svn move, to make iota missing, while IOTA appears as unversioned.
+  os.rename(iota_path, IOTA_path)
+  
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_status.add({
+    'iota'              : Item(status='! ', wc_rev='1'),
+    'IOTA'              : Item(status='? '),
+    })
+  svntest.actions.run_and_verify_unquiet_status(wc_dir, expected_status)
+    
+  # 'svn rm' iota, should leave IOTA alone.
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'rm', iota_path)
+
+  # Test status: the unversioned IOTA should still be there.
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_status.add({
+    'iota'              : Item(status='D ', wc_rev='1'),
+    'IOTA'              : Item(status='? '),
+    })
+  svntest.actions.run_and_verify_unquiet_status(wc_dir, expected_status)
+
+
+
 ########################################################################
 # Run the tests
 
@@ -2950,6 +2987,7 @@ test_list = [ None,
               ls_multiple_and_non_existent_targets,
               add_multiple_targets,
               quiet_commits,
+              rm_missing_with_case_clashing_ondisk_item,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py Tue Jan 17 21:09:43
2012
@@ -230,7 +230,7 @@ def patch(sbox):
 def patch_absolute_paths(sbox):
   "patch containing absolute paths"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -932,7 +932,7 @@ def patch_no_index_line(sbox):
 def patch_add_new_dir(sbox):
   "patch with missing dirs"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -1032,7 +1032,7 @@ def patch_add_new_dir(sbox):
 def patch_remove_empty_dirs(sbox):
   "patch deleting all children of a directory"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -1581,7 +1581,7 @@ def patch_reverse(sbox):
 def patch_no_svn_eol_style(sbox):
   "patch target with no svn:eol-style"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -1798,7 +1798,7 @@ def patch_with_svn_eol_style(sbox):
 def patch_with_svn_eol_style_uncommitted(sbox):
   "patch target with uncommitted svn:eol-style"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -2571,7 +2571,7 @@ def patch_dir_properties(sbox):
 def patch_add_path_with_props(sbox):
   "patch that adds paths with props"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -2993,7 +2993,7 @@ def patch_prop_with_fuzz(sbox):
 def patch_git_empty_files(sbox):
   "patch that contains empty files"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
   patch_file_path = make_patch_path(sbox)
 
@@ -3363,7 +3363,7 @@ def patch_one_property(sbox, trailing_eo
   """Helper.  Apply a patch that sets the property 'k' to 'v\n' or to 'v',
    and check the results."""
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -3438,7 +3438,7 @@ def patch_set_prop_no_eol(sbox):
 def patch_add_symlink(sbox):
   "patch that adds a symlink"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -3755,7 +3755,7 @@ def patch_deletes_prop(sbox):
 def patch_reversed_add_with_props(sbox):
   "reverse patch new file+props atop uncommitted"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
   patch_file_path = make_patch_path(sbox)
 
@@ -3858,7 +3858,7 @@ def patch_reversed_add_with_props2(sbox)
 def patch_dev_null(sbox):
   "patch with /dev/null filenames"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -3914,7 +3914,7 @@ def patch_dev_null(sbox):
 def patch_delete_and_skip(sbox):
   "patch that deletes and skips"
 
-  sbox.build()
+  sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
   patch_file_path = make_patch_path(sbox)
@@ -4045,6 +4045,59 @@ def patch_target_no_eol_at_eof(sbox):
                                        1, # check-props
                                        1) # dry-run
 
+def patch_add_and_delete(sbox):
+  "patch add multiple levels and delete"
+
+  sbox.build(read_only = True)
+  wc_dir = sbox.wc_dir
+  patch_file_path = make_patch_path(sbox)
+
+  unidiff_patch = [
+    "Index: foo\n",
+    "===================================================================\n",
+    "--- P/Q/foo\t(revision 0)\n"
+    "+++ P/Q/foo\t(working copy)\n"
+    "@@ -0,0 +1 @@\n",
+    "+This is the file 'foo'.\n",
+    "Index: iota\n"
+    "===================================================================\n",
+    "--- iota\t(revision 1)\n"
+    "+++ iota\t(working copy)\n"
+    "@@ -1 +0,0 @@\n",
+    "-This is the file 'iota'.\n",
+    ]
+
+  svntest.main.file_write(patch_file_path, ''.join(unidiff_patch))
+
+  expected_output = [
+    'A         %s\n' % os.path.join(wc_dir, 'P'),
+    'A         %s\n' % os.path.join(wc_dir, 'P', 'Q'),
+    'A         %s\n' % os.path.join(wc_dir, 'P', 'Q', 'foo'),
+    'D         %s\n' % os.path.join(wc_dir, 'iota'),
+  ]
+  expected_disk = svntest.main.greek_state.copy()
+  expected_disk.remove('iota')
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_disk.add({'P/Q/foo' : Item(contents="This is the file 'foo'.\n")})
+  expected_status.tweak('iota', status='D ')
+  expected_status.add({
+      'P'       : Item(status='A ', wc_rev=0),
+      'P/Q'     : Item(status='A ', wc_rev=0),
+      'P/Q/foo' : Item(status='A ', wc_rev=0),
+      })
+  expected_skip = wc.State('', { })
+
+  # Failed with "The node 'P' was not found" when erroneously checking
+  # whether 'P/Q' should be deleted.
+  svntest.actions.run_and_verify_patch(wc_dir, os.path.abspath(patch_file_path),
+                                       expected_output,
+                                       expected_disk,
+                                       expected_status,
+                                       expected_skip,
+                                       None, # expected err
+                                       1, # check-props
+                                       1) # dry-run
+
 ########################################################################
 #Run the tests
 
@@ -4088,6 +4141,7 @@ test_list = [ None,
               patch_dev_null,
               patch_delete_and_skip,
               patch_target_no_eol_at_eof,
+              patch_add_and_delete,
             ]
 
 if __name__ == '__main__':

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py?rev=1232574&r1=1232573&r2=1232574&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py Tue Jan 17 21:09:43
2012
@@ -1993,6 +1993,25 @@ def modified_modulo_translation(sbox):
   sbox.simple_revert('iota')
   svntest.actions.run_and_verify_svn(None, [], [], 'status', wc_dir)
 
+def status_not_present(sbox):
+  "no status on not-present and excluded nodes"
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # iota is a shell script.
+  sbox.simple_rm('iota', 'A/C')
+  svntest.main.run_svn(None, 'up', '--set-depth', 'exclude',
+                       sbox.ospath('A/mu'), sbox.ospath('A/B'))
+  sbox.simple_commit()
+  
+  svntest.actions.run_and_verify_svn(None, [], [],'status',
+                                     sbox.ospath('iota'),
+                                     sbox.ospath('A/B'),
+                                     sbox.ospath('A/C'),
+                                     sbox.ospath('A/mu'),
+                                     sbox.ospath('no-file'))
+
 ########################################################################
 # Run the tests
 
@@ -2035,6 +2054,7 @@ test_list = [ None,
               wc_wc_copy_timestamp,
               wclock_status,
               modified_modulo_translation,
+              status_not_present,
              ]
 
 if __name__ == '__main__':



Mime
View raw message