You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2014/04/16 10:54:16 UTC

svn commit: r1587837 - /subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c

Author: philip
Date: Wed Apr 16 08:54:15 2014
New Revision: 1587837

URL: http://svn.apache.org/r1587837
Log:
Add an XFAIL regression test for issue 4491, break move in delete SEGV.

* subversion/tests/libsvn_wc/op-depth-test.c
  (break_move_in_delete): New.
  (test_funcs): Add new test as XFAIL.

Modified:
    subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c

Modified: subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c?rev=1587837&r1=1587836&r2=1587837&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c Wed Apr 16 08:54:15 2014
@@ -9643,6 +9643,72 @@ repo_wc_copy(const svn_test_opts_t *opts
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+break_move_in_delete(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+  svn_test__sandbox_t b;
+
+  SVN_ERR(svn_test__sandbox_create(&b, "break_move_in_delete", opts, pool));
+
+  SVN_ERR(sbox_wc_mkdir(&b, "A"));
+  SVN_ERR(sbox_wc_mkdir(&b, "A/B"));
+  SVN_ERR(sbox_wc_mkdir(&b, "X"));
+  SVN_ERR(sbox_wc_mkdir(&b, "X/Y"));
+  SVN_ERR(sbox_wc_commit(&b, ""));
+  SVN_ERR(sbox_wc_propset(&b, "key", "value", "X/Y"));
+  SVN_ERR(sbox_wc_commit(&b, ""));
+  SVN_ERR(sbox_wc_update(&b, "", 1));
+
+  SVN_ERR(sbox_wc_move(&b, "X/Y", "A/Y"));
+  SVN_ERR(sbox_wc_delete(&b, "X"));
+  {
+    nodes_row_t nodes[] = {
+      {0, "",    "normal",       1, ""},
+      {0, "A",   "normal",       1, "A"},
+      {0, "A/B", "normal",       1, "A/B"},
+      {0, "X",   "normal",       1, "X"},
+      {0, "X/Y", "normal",       1, "X/Y"},
+      {1, "X",   "base-deleted", NO_COPY_FROM},
+      {1, "X/Y", "base-deleted", NO_COPY_FROM, "A/Y"},
+      {2, "A/Y", "normal",       1, "X/Y", MOVED_HERE},
+      {0}
+    };
+    SVN_ERR(check_db_rows(&b, "", nodes));
+  }
+
+  SVN_ERR(sbox_wc_update(&b, "", 2));
+  {
+    nodes_row_t nodes[] = {
+      {0, "",    "normal",       2, ""},
+      {0, "A",   "normal",       2, "A"},
+      {0, "A/B", "normal",       2, "A/B"},
+      {0, "X",   "normal",       2, "X"},
+      {0, "X/Y", "normal",       2, "X/Y"},
+      {1, "X",   "base-deleted", NO_COPY_FROM},
+      {1, "X/Y", "base-deleted", NO_COPY_FROM, "A/Y"},
+      {2, "A/Y", "normal",       1, "X/Y", MOVED_HERE},
+      {0}
+    };
+    conflict_info_t conflicts1[] = {
+      {"X", FALSE, FALSE, TRUE},
+      {0}
+    };
+    conflict_info_t conflicts2[] = {
+      {"X/Y", FALSE, FALSE, TRUE},
+      {0}
+    };
+    SVN_ERR(check_db_rows(&b, "", nodes));
+    SVN_ERR(check_db_conflicts(&b, "", conflicts1));
+    SVN_ERR(sbox_wc_resolve(&b, "X", svn_depth_empty,
+                            svn_wc_conflict_choose_mine_conflict));
+    SVN_ERR(check_db_rows(&b, "", nodes));
+    SVN_ERR(check_db_conflicts(&b, "", conflicts2));
+  }
+  SVN_ERR(sbox_wc_resolved(&b, "X/Y"));
+
+  return SVN_NO_ERROR;
+}
+
 
 /* ---------------------------------------------------------------------- */
 /* The list of test functions */
@@ -9835,6 +9901,8 @@ static struct svn_test_descriptor_t test
                        "movedhere extract retract"),
     SVN_TEST_OPTS_PASS(repo_wc_copy,
                        "repo_wc_copy"),
+    SVN_TEST_OPTS_XFAIL(break_move_in_delete,
+                       "break move in delete (issue 4491)"),
     SVN_TEST_NULL
   };