You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2010/12/02 21:55:18 UTC

svn commit: r1041580 [33/35] - in /subversion/branches/gpg-agent-password-store: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ build/win32/ contrib/hook-scripts/ contrib/server-side/ notes/http-and-webdav/ notes/wc-ng/ subversi...

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_diff/parse-diff-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_diff/parse-diff-test.c?rev=1041580&r1=1041579&r2=1041580&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_diff/parse-diff-test.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_diff/parse-diff-test.c Thu Dec  2 20:55:08 2010
@@ -301,10 +301,7 @@ check_content(svn_diff_hunk_t *hunk, svn
     SVN_TEST_ASSERT(exp_eof == hunk_eof);
     if (exp_eof)
       break;
-    if (strcmp(exp_buf->data, hunk_buf->data))
-      return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
-                               "Expected '%s' but was '%s'", exp_buf->data,
-                               hunk_buf->data);
+    SVN_TEST_STRING_ASSERT(exp_buf->data, hunk_buf->data);
   }
 
   SVN_TEST_ASSERT(hunk_buf->len == 0);
@@ -345,8 +342,8 @@ test_parse_unidiff(apr_pool_t *pool)
                                         ignore_whitespace, iterpool, 
                                         iterpool));
       SVN_TEST_ASSERT(patch);
-      SVN_TEST_ASSERT(! strcmp(patch->old_filename, "A/C/gamma"));
-      SVN_TEST_ASSERT(! strcmp(patch->new_filename, "A/C/gamma"));
+      SVN_TEST_STRING_ASSERT(patch->old_filename, "A/C/gamma");
+      SVN_TEST_STRING_ASSERT(patch->new_filename, "A/C/gamma");
       SVN_TEST_ASSERT(patch->hunks->nelts == 1);
 
       hunk = APR_ARRAY_IDX(patch->hunks, 0, svn_diff_hunk_t *);
@@ -365,13 +362,13 @@ test_parse_unidiff(apr_pool_t *pool)
       SVN_TEST_ASSERT(patch);
       if (reverse)
         {
-          SVN_TEST_ASSERT(! strcmp(patch->new_filename, "A/D/gamma.orig"));
-          SVN_TEST_ASSERT(! strcmp(patch->old_filename, "A/D/gamma"));
+          SVN_TEST_STRING_ASSERT(patch->new_filename, "A/D/gamma.orig");
+          SVN_TEST_STRING_ASSERT(patch->old_filename, "A/D/gamma");
         }
       else
         {
-          SVN_TEST_ASSERT(! strcmp(patch->old_filename, "A/D/gamma.orig"));
-          SVN_TEST_ASSERT(! strcmp(patch->new_filename, "A/D/gamma"));
+          SVN_TEST_STRING_ASSERT(patch->old_filename, "A/D/gamma.orig");
+          SVN_TEST_STRING_ASSERT(patch->new_filename, "A/D/gamma");
         }
       SVN_TEST_ASSERT(patch->hunks->nelts == 1);
 
@@ -409,8 +406,8 @@ test_parse_git_diff(apr_pool_t *pool)
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "A/mu"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "A/mu"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "A/mu");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "A/mu");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_deleted);
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
 
@@ -420,8 +417,8 @@ test_parse_git_diff(apr_pool_t *pool)
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "A/C/gamma"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "A/C/gamma"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "A/C/gamma");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "A/C/gamma");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_modified);
   SVN_TEST_ASSERT(patch->hunks->nelts == 1);
   
@@ -443,8 +440,8 @@ test_parse_git_diff(apr_pool_t *pool)
                                     pool, pool));
 
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "iota"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "iota.copied"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "iota");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "iota.copied");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_copied);
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
 
@@ -455,8 +452,8 @@ test_parse_git_diff(apr_pool_t *pool)
                                     pool, pool));
 
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "new"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "new"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "new");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "new");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_added);
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
 
@@ -482,8 +479,8 @@ test_parse_git_tree_and_text_diff(apr_po
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "iota"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "iota.copied"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "iota");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "iota.copied");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_copied);
   SVN_TEST_ASSERT(patch->hunks->nelts == 1);
   
@@ -504,8 +501,8 @@ test_parse_git_tree_and_text_diff(apr_po
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "A/mu"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "A/mu.moved"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "A/mu");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "A/mu.moved");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_moved);
   SVN_TEST_ASSERT(patch->hunks->nelts == 1);
   
@@ -525,8 +522,8 @@ test_parse_git_tree_and_text_diff(apr_po
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "/dev/null"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "new"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "/dev/null");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "new");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_added);
   SVN_TEST_ASSERT(patch->hunks->nelts == 1);
   
@@ -545,8 +542,8 @@ test_parse_git_tree_and_text_diff(apr_po
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "A/B/lambda"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "/dev/null"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "A/B/lambda");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "/dev/null");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_deleted);
   SVN_TEST_ASSERT(patch->hunks->nelts == 1);
   
@@ -579,8 +576,8 @@ test_bad_git_diff_headers(apr_pool_t *po
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "iota"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "iota.copied"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "iota");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "iota.copied");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_copied);
   SVN_TEST_ASSERT(patch->hunks->nelts == 1);
   
@@ -617,8 +614,8 @@ test_parse_property_diff(apr_pool_t *poo
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "iota"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "iota"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "iota");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "iota");
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
   SVN_TEST_ASSERT(apr_hash_count(patch->prop_patches) == 3);
 
@@ -720,8 +717,8 @@ test_parse_property_and_text_diff(apr_po
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "iota"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "iota"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "iota");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "iota");
   SVN_TEST_ASSERT(patch->hunks->nelts == 1);
   SVN_TEST_ASSERT(apr_hash_count(patch->prop_patches) == 1);
 
@@ -775,8 +772,8 @@ test_parse_diff_symbols_in_prop_unidiff(
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "iota"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "iota"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "iota");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "iota");
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
   SVN_TEST_ASSERT(apr_hash_count(patch->prop_patches) == 3);
 
@@ -873,8 +870,8 @@ test_git_diffs_with_spaces_diff(apr_pool
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "path 1"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "path 1"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "path 1");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "path 1");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_added);
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
   
@@ -883,8 +880,8 @@ test_git_diffs_with_spaces_diff(apr_pool
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "path one 1"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "path one 1"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "path one 1");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "path one 1");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_added);
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
 
@@ -893,8 +890,8 @@ test_git_diffs_with_spaces_diff(apr_pool
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, "dir/ b/path"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, "dir/ b/path"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, "dir/ b/path");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, "dir/ b/path");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_added);
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
 
@@ -903,8 +900,8 @@ test_git_diffs_with_spaces_diff(apr_pool
                                     FALSE, /* ignore_whitespace */ 
                                     pool, pool));
   SVN_TEST_ASSERT(patch);
-  SVN_TEST_ASSERT(! strcmp(patch->old_filename, " b/path 1"));
-  SVN_TEST_ASSERT(! strcmp(patch->new_filename, " b/path 1"));
+  SVN_TEST_STRING_ASSERT(patch->old_filename, " b/path 1");
+  SVN_TEST_STRING_ASSERT(patch->new_filename, " b/path 1");
   SVN_TEST_ASSERT(patch->operation == svn_diff_op_added);
   SVN_TEST_ASSERT(patch->hunks->nelts == 0);
 

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_base/strings-reps-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_base/strings-reps-test.c?rev=1041580&r1=1041579&r2=1041580&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_base/strings-reps-test.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_base/strings-reps-test.c Thu Dec  2 20:55:08 2010
@@ -188,8 +188,8 @@ read_rep(const svn_test_opts_t *opts,
     (pool, "((fulltext 0  (md5 16 XXXXXXXXXXXXXXXX)) kfogel31337");
   char *new_rep_after = apr_pstrdup
     (pool, "((fulltext 0  (md5 16 XXXXXXXXXXXXXXXX)) a83t2Z0");
-  int rep_after_len = strlen(rep_after);
-  int new_rep_after_len = strlen(new_rep_after);
+  size_t rep_after_len = strlen(rep_after);
+  size_t new_rep_after_len = strlen(new_rep_after);
 
   /* Replace the fake fake checksums with the real fake checksums.
      And someday, when checksums are actually calculated, we can

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_fs/fs-pack-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_fs/fs-pack-test.c?rev=1041580&r1=1041579&r2=1041580&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_fs/fs-pack-test.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_fs/fs-pack-test.c Thu Dec  2 20:55:08 2010
@@ -34,16 +34,14 @@
 #include "../svn_test_fs.h"
 
 
-/*-----------------------------------------------------------------*/
 
-/** The actual fs-tests called by `make check` **/
+/*** Helper Functions ***/
 
 /* Write the format number and maximum number of files per directory
-   to a new format file in PATH, overwriting a previously existing file.
+   to a new format file in PATH, overwriting a previously existing
+   file.  Use POOL for temporary allocation.
 
-   Use POOL for temporary allocation.
-
-   This implementation is largely stolen from libsvn_fs_fs/fs_fs.c. */
+   (This implementation is largely stolen from libsvn_fs_fs/fs_fs.c.) */
 static svn_error_t *
 write_format(const char *path,
              int format,
@@ -97,12 +95,15 @@ get_rev_contents(svn_revnum_t rev, apr_p
   return apr_psprintf(pool, "%" APR_INT64_T_FMT "\n", num);
 }
 
-/* Create a packed filesystem in DIR.  Set the shard size to SHARD_SIZE
-   and create MAX_REV number of revisions.  Use POOL for allocations. */
+/* Create a packed filesystem in DIR.  Set the shard size to
+   SHARD_SIZE and create NUM_REVS number of revisions (in addition to
+   r0).  Use POOL for allocations.  After this function successfully
+   completes, the filesystem's youngest revision number will be the
+   same as NUM_REVS.  */
 static svn_error_t *
 create_packed_filesystem(const char *dir,
                          const svn_test_opts_t *opts,
-                         int max_rev,
+                         int num_revs,
                          int shard_size,
                          apr_pool_t *pool)
 {
@@ -133,9 +134,9 @@ create_packed_filesystem(const char *dir
   SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
   SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, subpool));
 
-  /* Revisions 2-11: A bunch of random changes. */
+  /* Revisions 2 thru NUM_REVS-1: content tweaks to "iota". */
   iterpool = svn_pool_create(subpool);
-  while (after_rev < max_rev + 1)
+  while (after_rev < num_revs)
     {
       svn_pool_clear(iterpool);
       SVN_ERR(svn_fs_begin_txn(&txn, fs, after_rev, iterpool));
@@ -153,7 +154,10 @@ create_packed_filesystem(const char *dir
   return svn_fs_pack(dir, NULL, NULL, NULL, NULL, pool);
 }
 
-/* Pack a filesystem.  */
+
+/*** Tests ***/
+
+/* ------------------------------------------------------------------------ */
 #define REPO_NAME "test-repo-fsfs-pack"
 #define SHARD_SIZE 7
 #define MAX_REV 53
@@ -181,7 +185,8 @@ pack_filesystem(const svn_test_opts_t *o
   for (i = 0; i < (MAX_REV + 1) / SHARD_SIZE; i++)
     {
       path = svn_path_join_many(pool, REPO_NAME, "revs",
-            apr_psprintf(pool, "%d.pack", i / SHARD_SIZE), "pack", NULL);
+                                apr_psprintf(pool, "%d.pack", i / SHARD_SIZE),
+                                "pack", NULL);
 
       /* These files should exist. */
       SVN_ERR(svn_io_check_path(path, &kind, pool));
@@ -190,7 +195,8 @@ pack_filesystem(const svn_test_opts_t *o
                                  "Expected pack file '%s' not found", path);
 
       path = svn_path_join_many(pool, REPO_NAME, "revs",
-            apr_psprintf(pool, "%d.pack", i / SHARD_SIZE), "manifest", NULL);
+                                apr_psprintf(pool, "%d.pack", i / SHARD_SIZE),
+                                "manifest", NULL);
       SVN_ERR(svn_io_check_path(path, &kind, pool));
       if (kind != svn_node_file)
         return svn_error_createf(SVN_ERR_FS_GENERAL, NULL,
@@ -199,7 +205,8 @@ pack_filesystem(const svn_test_opts_t *o
 
       /* This directory should not exist. */
       path = svn_path_join_many(pool, REPO_NAME, "revs",
-            apr_psprintf(pool, "%d", i / SHARD_SIZE), NULL);
+                                apr_psprintf(pool, "%d", i / SHARD_SIZE),
+                                NULL);
       SVN_ERR(svn_io_check_path(path, &kind, pool));
       if (kind != svn_node_none)
         return svn_error_createf(SVN_ERR_FS_GENERAL, NULL,
@@ -220,12 +227,12 @@ pack_filesystem(const svn_test_opts_t *o
 
   /* Finally, make sure the final revision directory does exist. */
   path = svn_path_join_many(pool, REPO_NAME, "revs",
-        apr_psprintf(pool, "%d", (i / SHARD_SIZE) + 1), NULL);
+                            apr_psprintf(pool, "%d", (i / SHARD_SIZE) + 1),
+                            NULL);
   SVN_ERR(svn_io_check_path(path, &kind, pool));
   if (kind != svn_node_none)
     return svn_error_createf(SVN_ERR_FS_GENERAL, NULL,
-                             "Expected directory '%s' not found",
-                             path);
+                             "Expected directory '%s' not found", path);
 
 
   return SVN_NO_ERROR;
@@ -234,10 +241,10 @@ pack_filesystem(const svn_test_opts_t *o
 #undef SHARD_SIZE
 #undef MAX_REV
 
-/* Pack a filesystem.  */
+/* ------------------------------------------------------------------------ */
 #define REPO_NAME "test-repo-fsfs-pack-even"
 #define SHARD_SIZE 4
-#define MAX_REV 10
+#define MAX_REV 11
 static svn_error_t *
 pack_even_filesystem(const svn_test_opts_t *opts,
                      apr_pool_t *pool)
@@ -265,8 +272,10 @@ pack_even_filesystem(const svn_test_opts
 #undef SHARD_SIZE
 #undef MAX_REV
 
-/* Check reading from a packed filesystem. */
+/* ------------------------------------------------------------------------ */
 #define REPO_NAME "test-repo-read-packed-fs"
+#define SHARD_SIZE 5
+#define MAX_REV 11
 static svn_error_t *
 read_packed_fs(const svn_test_opts_t *opts,
                apr_pool_t *pool)
@@ -281,10 +290,10 @@ read_packed_fs(const svn_test_opts_t *op
       || (opts->server_minor_version && (opts->server_minor_version < 6)))
     return SVN_NO_ERROR;
 
-  SVN_ERR(create_packed_filesystem(REPO_NAME, opts, 11, 5, pool));
+  SVN_ERR(create_packed_filesystem(REPO_NAME, opts, MAX_REV, SHARD_SIZE, pool));
   SVN_ERR(svn_fs_open(&fs, REPO_NAME, NULL, pool));
 
-  for (i = 1; i < 12; i++)
+  for (i = 1; i < (MAX_REV + 1); i++)
     {
       svn_fs_root_t *rev_root;
       svn_stringbuf_t *sb;
@@ -306,9 +315,13 @@ read_packed_fs(const svn_test_opts_t *op
   return SVN_NO_ERROR;
 }
 #undef REPO_NAME
+#undef SHARD_SIZE
+#undef MAX_REV
 
-/* Check reading from a packed filesystem. */
+/* ------------------------------------------------------------------------ */
 #define REPO_NAME "test-repo-commit-packed-fs"
+#define SHARD_SIZE 5
+#define MAX_REV 10
 static svn_error_t *
 commit_packed_fs(const svn_test_opts_t *opts,
                  apr_pool_t *pool)
@@ -325,11 +338,11 @@ commit_packed_fs(const svn_test_opts_t *
     return SVN_NO_ERROR;
 
   /* Create the packed FS and open it. */
-  SVN_ERR(create_packed_filesystem(REPO_NAME, opts, 11, 5, pool));
+  SVN_ERR(create_packed_filesystem(REPO_NAME, opts, MAX_REV, 5, pool));
   SVN_ERR(svn_fs_open(&fs, REPO_NAME, NULL, pool));
 
   /* Now do a commit. */
-  SVN_ERR(svn_fs_begin_txn(&txn, fs, 12, pool));
+  SVN_ERR(svn_fs_begin_txn(&txn, fs, MAX_REV, pool));
   SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
   SVN_ERR(svn_test__set_file_contents(txn_root, "iota",
           "How much better is it to get wisdom than gold! and to get "
@@ -339,9 +352,11 @@ commit_packed_fs(const svn_test_opts_t *
   return SVN_NO_ERROR;
 }
 #undef REPO_NAME
+#undef MAX_REV
+#undef SHARD_SIZE
 
-/* Get/set revprop while repository is being packed in background. */
-#define REPO_NAME "test-get-set-revprop-packed-fs"
+/* ------------------------------------------------------------------------ */
+#define REPO_NAME "test-repo-get-set-revprop-packed-fs"
 #define SHARD_SIZE 4
 #define MAX_REV 1
 static svn_error_t *
@@ -367,7 +382,7 @@ get_set_revprop_packed_fs(const svn_test
 
   subpool = svn_pool_create(pool);
   /* Do a commit to trigger packing. */
-  SVN_ERR(svn_fs_begin_txn(&txn, fs, MAX_REV + 1, subpool));
+  SVN_ERR(svn_fs_begin_txn(&txn, fs, MAX_REV, subpool));
   SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
   SVN_ERR(svn_test__set_file_contents(txn_root, "iota", "new-iota",  subpool));
   SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, subpool));
@@ -377,14 +392,81 @@ get_set_revprop_packed_fs(const svn_test
   SVN_ERR(svn_fs_pack(REPO_NAME, NULL, NULL, NULL, NULL, pool));
 
   /* Try to get revprop for revision 0. */
-  SVN_ERR(svn_fs_revision_prop(&prop_value, fs, 0, SVN_PROP_REVISION_AUTHOR, pool));
+  SVN_ERR(svn_fs_revision_prop(&prop_value, fs, 0, SVN_PROP_REVISION_AUTHOR,
+                               pool));
 
   /* Try to change revprop for revision 0. */
   SVN_ERR(svn_fs_change_rev_prop(fs, 0, SVN_PROP_REVISION_AUTHOR,
-                                 svn_string_create("tweaked-author", pool), pool));
+                                 svn_string_create("tweaked-author", pool),
+                                 pool));
 
   return SVN_NO_ERROR;
 }
+#undef REPO_NAME
+#undef MAX_REV
+#undef SHARD_SIZE
+
+/* ------------------------------------------------------------------------ */
+/* Regression test for issue #3571 (fsfs 'svnadmin recover' expects
+   youngest revprop to be outside revprops.db). */
+#define REPO_NAME "test-repo-recover-fully-packed"
+#define SHARD_SIZE 4
+#define MAX_REV 7
+static svn_error_t *
+recover_fully_packed(const svn_test_opts_t *opts,
+                     apr_pool_t *pool)
+{
+  apr_pool_t *subpool;
+  svn_fs_t *fs;
+  svn_fs_txn_t *txn;
+  svn_fs_root_t *txn_root;
+  const char *conflict;
+  svn_revnum_t after_rev;
+  svn_error_t *err;
+
+  /* Bail (with success) on known-untestable scenarios */
+  if ((strcmp(opts->fs_type, "fsfs") != 0)
+      || (opts->server_minor_version && (opts->server_minor_version < 7)))
+    return SVN_NO_ERROR;
+
+  /* Create a packed FS for which every revision will live in a pack
+     digest file, and then recover it. */
+  SVN_ERR(create_packed_filesystem(REPO_NAME, opts, MAX_REV, SHARD_SIZE, pool));
+  SVN_ERR(svn_fs_recover(REPO_NAME, NULL, NULL, pool));
+
+  /* Add another revision, re-pack, re-recover. */
+  subpool = svn_pool_create(pool);
+  SVN_ERR(svn_fs_open(&fs, REPO_NAME, NULL, subpool));
+  SVN_ERR(svn_fs_begin_txn(&txn, fs, MAX_REV, subpool));
+  SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
+  SVN_ERR(svn_test__set_file_contents(txn_root, "A/mu", "new-mu", subpool));
+  SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, subpool));
+  svn_pool_destroy(subpool);
+  SVN_ERR(svn_fs_pack(REPO_NAME, NULL, NULL, NULL, NULL, pool));
+  SVN_ERR(svn_fs_recover(REPO_NAME, NULL, NULL, pool));
+
+  /* Now, delete the youngest revprop file, and recover again.  This
+     time we want to see an error! */
+  SVN_ERR(svn_io_remove_file2(
+              svn_dirent_join_many(pool, REPO_NAME, PATH_REVPROPS_DIR,
+                                   apr_psprintf(pool, "%ld/%ld",
+                                                after_rev / SHARD_SIZE,
+                                                after_rev),
+                                   NULL),
+              FALSE, pool));
+  err = svn_fs_recover(REPO_NAME, NULL, NULL, pool);
+  if (! err)
+    return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
+                            "Expected SVN_ERR_FS_CORRUPT error; got none");
+  if (err->apr_err != SVN_ERR_FS_CORRUPT)
+    return svn_error_create(SVN_ERR_TEST_FAILED, err,
+                            "Expected SVN_ERR_FS_CORRUPT error; got:");
+  svn_error_clear(err);
+  return SVN_NO_ERROR;
+}
+#undef REPO_NAME
+#undef MAX_REV
+#undef SHARD_SIZE
 
 /* ------------------------------------------------------------------------ */
 
@@ -403,5 +485,7 @@ struct svn_test_descriptor_t test_funcs[
                        "commit to a packed FSFS filesystem"),
     SVN_TEST_OPTS_PASS(get_set_revprop_packed_fs,
                        "get/set revprop while packing FSFS filesystem"),
+    SVN_TEST_OPTS_PASS(recover_fully_packed,
+                       "recover a fully packed filesystem"),
     SVN_TEST_NULL
   };

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_subr/dirent_uri-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_subr/dirent_uri-test.c?rev=1041580&r1=1041579&r2=1041580&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_subr/dirent_uri-test.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_subr/dirent_uri-test.c Thu Dec  2 20:55:08 2010
@@ -1514,7 +1514,6 @@ test_relpath_is_ancestor(apr_pool_t *poo
   } tests[] = {
     { "foo",            "foo/bar",        TRUE},
     { "food/bar",       "foo/bar",        FALSE},
-    { "/",               "/foo",          TRUE},
     { "",                "foo",           TRUE},
     { "",                ".bar",          TRUE},
     { "foo/bar",         "foo",           FALSE},
@@ -1640,7 +1639,7 @@ test_dirent_skip_ancestor(apr_pool_t *po
       if (strcmp(tests[i].result, retval))
         return svn_error_createf(
              SVN_ERR_TEST_FAILED, NULL,
-             "test_dirent_skip_ancestor (%s, %s) returned %s instead of %s",
+             "svn_dirent_skip_ancestor (%s, %s) returned %s instead of %s",
              tests[i].path1, tests[i].path2, retval, tests[i].result);
     }
   return SVN_NO_ERROR;
@@ -1846,8 +1845,8 @@ test_relpath_get_longest_ancestor(apr_po
     {
       const char *retval;
 
-      retval = svn_uri_get_longest_ancestor(tests[i].path1, tests[i].path2,
-                                             pool);
+      retval = svn_relpath_get_longest_ancestor(tests[i].path1, tests[i].path2,
+                                                pool);
 
       if (strcmp(tests[i].result, retval))
         return svn_error_createf
@@ -2859,6 +2858,198 @@ test_dirent_is_under_root(apr_pool_t *po
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+test_fspath_is_canonical(apr_pool_t *pool)
+{
+  struct {
+    const char *path;
+    svn_boolean_t canonical;
+  } tests[] = {
+    { "",                      FALSE },
+    { ".",                     FALSE },
+    { "/",                     TRUE },
+    { "/a",                    TRUE },
+    { "/a/",                   FALSE },
+    { "//a",                   FALSE },
+    { "/a/b",                  TRUE },
+    { "/a//b",                 FALSE },
+    { "\\",                    FALSE },
+    { "\\a",                   FALSE },
+    { "/\\a",                  TRUE },  /* a single component */
+    { "/a\\",                  TRUE },  /* a single component */
+    { "/a\\b",                 TRUE },  /* a single component */
+  };
+  int i;
+
+  for (i = 0; i < COUNT_OF(tests); i++)
+    {
+      svn_boolean_t canonical
+        = svn_fspath__is_canonical(tests[i].path);
+
+      if (tests[i].canonical != canonical)
+        return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+                                 "svn_fspath__is_canonical(\"%s\") returned "
+                                 "\"%s\" expected \"%s\"",
+                                 tests[i].path,
+                                 canonical ? "TRUE" : "FALSE",
+                                 tests[i].canonical ? "TRUE" : "FALSE");
+    }
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_fspath_join(apr_pool_t *pool)
+{
+  int i;
+
+  static const char * const joins[][3] = {
+    { "/",    "",     "/" },
+    { "/",    "d",    "/d" },
+    { "/",    "d/e",  "/d/e" },
+    { "/abc", "",     "/abc" },
+    { "/abc", "d",    "/abc/d" },
+    { "/abc", "d/e",  "/abc/d/e" },
+  };
+
+  for (i = 0; i < COUNT_OF(joins); i++ )
+    {
+      char *result = svn_fspath__join(joins[i][0], joins[i][1], pool);
+
+      SVN_TEST_STRING_ASSERT(result, joins[i][2]);
+    }
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_fspath_is_child(apr_pool_t *pool)
+{
+  int i, j;
+
+  static const char * const paths[] = {
+    "/",
+    "/f",
+    "/foo",
+    "/foo/bar",
+    "/foo/bars",
+    "/foo/bar/baz",
+    };
+
+  static const char * const
+    remainders[COUNT_OF(paths)][COUNT_OF(paths)] = {
+    { 0,  "f",  "foo",  "foo/bar",  "foo/bars", "foo/bar/baz" },
+    { 0,  0,    0,      0,          0,          0             },
+    { 0,  0,    0,      "bar",      "bars",     "bar/baz"     },
+    { 0,  0,    0,      0,          0,          "baz"         },
+    { 0,  0,    0,      0,          0,          0             },
+    { 0,  0,    0,      0,          0,          0             },
+  };
+
+  for (i = 0; i < COUNT_OF(paths); i++)
+    {
+      for (j = 0; j < COUNT_OF(paths); j++)
+        {
+          const char *remainder
+            = svn_fspath__is_child(paths[i], paths[j], pool);
+
+          SVN_TEST_STRING_ASSERT(remainder, remainders[i][j]);
+        }
+    }
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_fspath_dirname_basename_split(apr_pool_t *pool)
+{
+  int i;
+
+  static const struct {
+    const char *path;
+    const char *dirname;
+    const char *basename;
+  } tests[] = {
+    { "/", "/", "" },
+    { "/a", "/", "a" },
+    { "/abc", "/", "abc" },
+    { "/x/abc", "/x", "abc" },
+    { "/x/y/abc", "/x/y", "abc" },
+  };
+
+  for (i = 0; i < COUNT_OF(tests); i++)
+    {
+      const char *result_dirname, *result_basename;
+
+      result_dirname = svn_fspath__dirname(tests[i].path, pool);
+      SVN_TEST_STRING_ASSERT(result_dirname, tests[i].dirname);
+
+      result_basename = svn_fspath__basename(tests[i].path, pool);
+      SVN_TEST_STRING_ASSERT(result_basename, tests[i].basename);
+
+      svn_fspath__split(&result_dirname, &result_basename, tests[i].path,
+                        pool);
+      SVN_TEST_STRING_ASSERT(result_dirname, tests[i].dirname);
+      SVN_TEST_STRING_ASSERT(result_basename, tests[i].basename);
+    }
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_fspath_get_longest_ancestor(apr_pool_t *pool)
+{
+  int i;
+
+  /* Paths to test and their expected results.  Same as in
+   * test_relpath_get_longest_ancestor() but with '/' prefix. */
+  struct {
+    const char *path1;
+    const char *path2;
+    const char *result;
+  } tests[] = {
+    { "/foo",            "/foo/bar",         "/foo" },
+    { "/foo/bar",        "/foo/bar",         "/foo/bar" },
+    { "/",               "/foo",             "/" },
+    { "/",               "/foo",             "/" },
+    { "/",               "/.bar",            "/" },
+    { "/.bar",           "/",                "/" },
+    { "/foo/bar",        "/foo",             "/foo" },
+    { "/foo/bar",        "/foo",             "/foo" },
+    { "/rif",            "/raf",             "/" },
+    { "/foo",            "/bar",             "/" },
+    { "/foo",            "/foo/bar",         "/foo" },
+    { "/foo.",           "/foo./.bar",       "/foo." },
+    { "/",               "/",                "/" },
+    { "/http:/test",     "/http:/test",      "/http:/test" },
+    { "/http:/test",     "/http:/taste",     "/http:" },
+    { "/http:/test",     "/http:/test/foo",  "/http:/test" },
+    { "/http:/test",     "/file:/test/foo",  "/" },
+    { "/http:/test",     "/http:/testF",     "/http:" },
+    { "/file:/A/C",      "/file:/B/D",       "/file:" },
+    { "/file:/A/C",      "/file:/A/D",       "/file:/A" },
+    { "/X:/foo",         "/X:",              "/X:" },
+    { "/X:/folder1",     "/X:/folder2",      "/X:" },
+    { "/X:",             "/X:foo",           "/" },
+    { "/X:foo",          "/X:bar",           "/" },
+  };
+
+  for (i = 0; i < COUNT_OF(tests); i++)
+    {
+      const char *result;
+
+      result = svn_fspath__get_longest_ancestor(tests[i].path1, tests[i].path2,
+                                                pool);
+      SVN_TEST_STRING_ASSERT(tests[i].result, result);
+
+      /* changing the order of the paths should return the same result */
+      result = svn_fspath__get_longest_ancestor(tests[i].path2, tests[i].path1,
+                                                pool);
+      SVN_TEST_STRING_ASSERT(tests[i].result, result);
+    }
+  return SVN_NO_ERROR;
+}
+
 
 /* The test table.  */
 
@@ -2906,9 +3097,9 @@ struct svn_test_descriptor_t test_funcs[
     SVN_TEST_PASS2(test_dirent_split,
                    "test svn_dirent_split"),
     SVN_TEST_PASS2(test_relpath_split,
-                   "test test_relpath_split"),
+                   "test svn_relpath_split"),
     SVN_TEST_PASS2(test_uri_split,
-                   "test test_uri_split"),
+                   "test svn_uri_split"),
     SVN_TEST_PASS2(test_dirent_get_longest_ancestor,
                    "test svn_dirent_get_longest_ancestor"),
     SVN_TEST_PASS2(test_relpath_get_longest_ancestor,
@@ -2928,11 +3119,11 @@ struct svn_test_descriptor_t test_funcs[
     SVN_TEST_PASS2(test_uri_is_ancestor,
                    "test svn_uri_is_ancestor"),
     SVN_TEST_PASS2(test_dirent_skip_ancestor,
-                   "test test_dirent_skip_ancestor"),
+                   "test svn_dirent_skip_ancestor"),
     SVN_TEST_PASS2(test_relpath_skip_ancestor,
-                   "test test_relpath_skip_ancestor"),
+                   "test svn_relpath_skip_ancestor"),
     SVN_TEST_PASS2(test_uri_skip_ancestor,
-                   "test test_uri_skip_ancestor"),
+                   "test svn_uri_skip_ancestor"),
     SVN_TEST_PASS2(test_dirent_get_absolute,
                    "test svn_dirent_get_absolute"),
 #ifdef WIN32
@@ -2959,5 +3150,15 @@ struct svn_test_descriptor_t test_funcs[
                    "test svn_uri_get_file_url_from_dirent"),
     SVN_TEST_PASS2(test_dirent_is_under_root,
                    "test svn_dirent_is_under_root"),
+    SVN_TEST_PASS2(test_fspath_is_canonical,
+                   "test svn_fspath__is_canonical"),
+    SVN_TEST_PASS2(test_fspath_join,
+                   "test svn_fspath__join"),
+    SVN_TEST_PASS2(test_fspath_is_child,
+                   "test svn_fspath__is_child"),
+    SVN_TEST_PASS2(test_fspath_dirname_basename_split,
+                   "test svn_fspath__dirname/basename/split"),
+    SVN_TEST_PASS2(test_fspath_get_longest_ancestor,
+                   "test svn_fspath__get_longest_ancestor"),
     SVN_TEST_NULL
   };

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_subr/string-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_subr/string-test.c?rev=1041580&r1=1041579&r2=1041580&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_subr/string-test.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_subr/string-test.c Thu Dec  2 20:55:08 2010
@@ -231,13 +231,13 @@ test10(apr_pool_t *pool)
   block_len_2 = (s->blocksize);
 
   /* Test that:
-   *   - The initial block was just the right fit.
+   *   - The initial block was at least the right fit.
+   *   - The initial block was not excessively large.
    *   - The block more than doubled (because second string so long).
-   *   - The block grew by a power of 2.
    */
-  if ((len_1 == (block_len_1 - 1))
-      && ((block_len_2 / block_len_1) > 2)
-        && (((block_len_2 / block_len_1) % 2) == 0))
+  if ((len_1 <= (block_len_1 - 1))
+      && ((block_len_1 - len_1) <= APR_ALIGN_DEFAULT(1))
+        && ((block_len_2 / block_len_1) > 2))
     return SVN_NO_ERROR;
   else
     return fail(pool, "test failed");

Propchange: subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_wc/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Dec  2 20:55:08 2010
@@ -6,3 +6,4 @@ fake-wc
 pristine-store-test
 svn-test-work
 entries-compat-test
+op-depth-test

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_wc/db-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_wc/db-test.c?rev=1041580&r1=1041579&r2=1041580&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_wc/db-test.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_wc/db-test.c Thu Dec  2 20:55:08 2010
@@ -75,7 +75,8 @@
 #define MD5_2 "5d41402abc4b2a76b9719d911017c592"
 #define SHA1_1 "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"
 
-#define I_TC_DATA "((conflict F file update edited deleted (version 22 " ROOT_ONE " 1 2 branch1/ft/F none) (version 22 " ROOT_ONE " 1 3 branch1/ft/F file)) (conflict G file update edited deleted (version 22 " ROOT_ONE " 1 2 branch1/ft/F none) (version 22 " ROOT_ONE " 1 3 branch1/ft/F file)) )"
+#define F_TC_DATA "(conflict F file update edited deleted (version 22 " ROOT_ONE " 1 2 branch1/ft/F none) (version 22 " ROOT_ONE " 1 3 branch1/ft/F file))"
+#define G_TC_DATA "(conflict G file update edited deleted (version 22 " ROOT_ONE " 1 2 branch1/ft/F none) (version 22 " ROOT_ONE " 1 3 branch1/ft/F file))"
 
 static const char * const TESTING_DATA = (
    /* Load our test data.
@@ -87,415 +88,197 @@ static const char * const TESTING_DATA =
    "insert into repository values (2, '" ROOT_TWO "', '" UUID_TWO "'); "
    "insert into wcroot values (1, null); "
 
-   /* ### The file_externals column in BASE_NODE is temporary, and will be
+   /* ### The file_externals column in NODES is temporary, and will be
       ### removed.  However, to keep the tests passing, we need to add it
       ### to the following insert statements.  *Be sure to remove it*. */
-#ifndef SVN_WC__NODES_ONLY
-   "insert into base_node values ("
-   "  1, '', 1, '', null, 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', 'infinity', null, null, '()', null, 0, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'A', null, null, '', 'normal', 'file', "
-   "  1, '$md5 $" MD5_1 "', 10, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'B', null, null, '', 'excluded', 'symlink', "
-   "  null, null, null, "
-   "  null, null, null, null, null, null, null, null, null, null); "
-   "insert into base_node values ("
-   "  1, 'C', null, null, '', 'absent', 'unknown', "
-   "  null, null, null, "
-   "  null, null, null, null, null, null, null, null, null, null); "
-   "insert into base_node values ("
-   "  1, 'D', null, null, '', 'not-present', 'unknown', "
-   "  null, null, null, "
-   "  null, null, null, null, null, null, null, null, null, null); "
-   "insert into base_node values ("
-   "  1, 'E', null, null, '', 'incomplete', 'unknown', "
-   "  null, null, null, "
-   "  null, null, null, null, null, null, null, null, null, null); "
-   "insert into base_node values ("
-   "  1, 'F', null, null, '', 'normal', 'file', "
-   "  1, '$sha1$" SHA1_1 "', 15, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'G', 2, 'G-alt', '', 'normal', 'file', "
-   "  1, '$sha1$" SHA1_1 "', 15, "
-   "  2, " TIME_2s ", '" AUTHOR_2 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'H', null, null, '', 'normal', 'symlink', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, 'H-target', null, '()', null, "
-   "  null, null); "
-   "insert into base_node values ("
-   "  1, 'I', null, null, '', 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'J', null, null, '', 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'J/J-e', null, null, 'J', 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'J/J-e/J-e-a', null, null, 'J/J-e', 'normal', 'file', "
-   "  1, '$sha1$" SHA1_1 "', 15, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'J/J-e/J-e-b', null, null, 'J/J-e', 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'J/J-e/J-e-b/Jeba', null, null, 'J/J-e/J-e-b', 'normal', 'file', "
-   "  1, '$sha1$" SHA1_1 "', 15, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'J/J-f', null, null, 'J', 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'J/J-f/J-f-a', null, null, 'J/J-f', 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'K', null, null, '', 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'K/K-a', null, null, 'K', 'normal', 'file', "
-   "  1, '$sha1$" SHA1_1 "', 15, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into base_node values ("
-   "  1, 'K/K-b', null, null, 'K', 'normal', 'file', "
-   "  1, '$sha1$" SHA1_1 "', 15, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   " "
-#endif
-#ifdef SVN_WC__NODES
+
    /* load the base nodes into the nodes table */
   "insert into nodes values ("
-  "  1, '', 0, null, 1, '', 1, 'normal', 'infinity',"
-  "  null, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'A', 0, '', null, null, 1, 'normal', null,"
-  "  null, null, 'file', 1, " TIME_1s ", '" AUTHOR_1 "', '$md5 $" MD5_1 "',"
-  "  '()', 10, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'B', 0, '', null, null, null, 'excluded', null,"
-  "  null, null, 'symlink', null, null, null, null,"
-  "  null, null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'C', 0, '', null, null, null, 'absent', null,"
-  "  null, null, 'unknown', null, null, null, null,"
-  "  null, null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'D', 0, '', null, null, null, 'not-present', null,"
-  "  null, null, 'unknown', null, null, null, null,"
-  "  null, null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'E', 0, '', null, null, null, 'incomplete', null,"
-  "  null, null, 'unknown', null, null, null, null,"
-  "  null, null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'F', 0, '', null, null, 1, 'normal', null,"
-  "  null, null, 'file', 1, " TIME_1s ", '" AUTHOR_1 "', '$sha1$" SHA1_1 "',"
-  "  '()', 15, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'G', 0, '', 2, 'G-alt', 1, 'normal', null,"
-  "  null, null, 'file', 2, " TIME_2s ", '" AUTHOR_2 "', '$sha1$" SHA1_1 "',"
-  "  '()', 15, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'H', 0, '', null, null, 1, 'normal', null,"
-  "  null, null, 'symlink', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, 'H-target', null);"
-  "insert into nodes values ("
-  "  1, 'I', 0, '', null, null, 1, 'normal', null,"
-  "  null, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J', 0, '', null, null, 1, 'normal', null,"
-  "  null, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-e', 0, 'J', null, null, 1, 'normal', null,"
-  "  null, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-e/J-e-a', 0, 'J/J-e', null, null, 1, 'normal', null,"
-  " null, null, 'file', 1, " TIME_1s ", '" AUTHOR_1 "', '$sha1$" SHA1_1 "',"
-  "  '()', 15, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-e/J-e-b', 0, 'J/J-e', null, null, 1, 'normal', null,"
-  "  null, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-e/J-e-b/Jeba', 0, 'J/J-e/J-e-b', null, null, 1, 'normal', null,"
-  "  null, null, 'file', 1, " TIME_1s ", '" AUTHOR_1 "', '$sha1$" SHA1_1 "',"
-  "  '()', 15, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-f', 0, 'J', null, null, 1, 'normal', null,"
-  "  null, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-f/J-f-a', 0, 'J/J-f', null, null, 1, 'normal', null,"
-  "  null, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'K', 0, '', null, null, 1, 'normal', null,"
-  "  null, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null,"
-  "  '()', null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'K/K-a', 0, 'K', null, null, 1, 'normal', null,"
-  "   null, null, 'file', 1, " TIME_1s ", '" AUTHOR_1 "', '$sha1$" SHA1_1 "',"
-  "  '()', 15, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'K/K-b', 0, 'K', null, null, 1, 'normal', null,"
-  "  null, null, 'file', 1, " TIME_1s ", '" AUTHOR_1 "', '$sha1$" SHA1_1 "',"
-  " '()', 15, null, null, null, null);"
+  "  1, '', 0, null, 1, '', 1, 'normal',"
+  "  null, null, 'dir', '()', 'infinity', null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'A', 0, '', 1, 'A', 1, 'normal',"
+  "  null, null, 'file', '()', null, '$md5 $" MD5_1 "', null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  10, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'B', 0, '', 1, 'B', null, 'excluded',"
+  "  null, null, 'symlink', null, null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'C', 0, '', 1, 'C', null, 'absent',"
+  "  null, null, 'unknown', null, null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'D', 0, '', 1, 'D', null, 'not-present',"
+  "  null, null, 'unknown', null, null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'E', 0, '', 1, 'E', null, 'incomplete',"
+  "  null, null, 'unknown', null, null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'F', 0, '', 1, 'F', 1, 'normal',"
+  "  null, null, 'file', '()', null, '$sha1$" SHA1_1 "', null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  15, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'G', 0, '', 2, 'G-alt', 1, 'normal',"
+  "  null, null, 'file', '()', null, '$sha1$" SHA1_1 "', null, 2, " TIME_2s ", '" AUTHOR_2 "',"
+  "  15, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'H', 0, '', 1, 'H', 1, 'normal',"
+  "  null, null, 'symlink', '()', null, null, 'H-target', 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'I', 0, '', 1, 'I', 1, 'normal',"
+  "  null, null, 'dir', '()', null, null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J', 0, '', 1, 'J', 1, 'normal',"
+  "  null, null, 'dir', '()', null, null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e', 0, 'J', 1, 'J/J-e', 1, 'normal',"
+  "  null, null, 'dir', '()', null, null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e/J-e-a', 0, 'J/J-e', 1, 'J/J-e/J-e-a', 1, 'normal',"
+  "  null, null, 'file', '()', null, '$sha1$" SHA1_1 "', null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  15, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e/J-e-b', 0, 'J/J-e', 1, 'J/J-e/J-e-b', 1, 'normal',"
+  "  null, null, 'dir', '()', null, null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e/J-e-b/Jeba', 0, 'J/J-e/J-e-b', 1, 'J/J-e/J-e-b/Jeba', 1, 'normal',"
+  "  null, null, 'file', '()', null, '$sha1$" SHA1_1 "', null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  15, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-f', 0, 'J', 1, 'J/J-f', 1, 'normal',"
+  "  null, null, 'dir', '()', null, null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-f/J-f-a', 0, 'J/J-f', 1, 'J/J-f/J-f-a', 1, 'normal',"
+  "  null, null, 'dir', '()', null, null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'K', 0, '', 1, 'K', 1, 'normal',"
+  "  null, null, 'dir', '()', null, null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'K/K-a', 0, 'K', 1, 'K/K-a', 1, 'normal',"
+  "  null, null, 'file', '()', null, '$sha1$" SHA1_1 "', null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  15, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'K/K-b', 0, 'K', 1, 'K/K-b', 1, 'normal',"
+  "  null, null, 'file', '()', null, '$sha1$" SHA1_1 "', null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+  "  15, null, null, null);"
   ""
-#endif
-#ifndef SVN_WC__NODES_ONLY
-   "insert into working_node values ("
-   "  1, 'I', '', 'normal', 'dir', "
-   "  null, null, "
-   "  2, " TIME_2s ", '" AUTHOR_2 "', 'immediates', null, "
-   "  2, 'some/dir', 2, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J', '', 'normal', 'dir', "
-   "  null, null, "
-   "  null, null, null, 'immediates', null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-a', 'J', 'normal', 'file', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-b', 'J', 'normal', 'dir', "
-   "  null, null, "
-   "  2, " TIME_2s ", '" AUTHOR_2 "', 'infinity', null, "
-   "  2, 'some/dir', 2, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-b/J-b-a', 'J/J-b', 'normal', 'dir', "
-   "  null, null, "
-   "  2, " TIME_2s ", '" AUTHOR_2 "', 'infinity', null, "
-   "  2, 'another/dir', 2, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-b/J-b-b', 'J/J-b', 'normal', 'file', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-c', 'J', 'not-present', 'dir', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-c/J-c-a', 'J/J-c', 'not-present', 'dir', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-d', 'J', 'normal', 'file', "
-   "  '$md5 $" MD5_1 "', 10, "
-   "  2, " TIME_2s ", '" AUTHOR_2 "', null, null, "
-   "  2, 'moved/file', 2, 1, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-e', 'J', 'not-present', 'dir', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, 'other/place', null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-e/J-e-a', 'J/J-e', 'not-present', 'file', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-e/J-e-b', 'J/J-e', 'not-present', 'dir', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-e/J-e-b/Jeba', 'J/J-e/J-e-b', 'base-deleted', 'file', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-f', 'J', 'normal', 'dir', "
-   "  null, null, "
-   "  null, null, null, 'immediates', null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'J/J-f/J-f-a', 'J/J-f', 'base-deleted', 'dir', "
-   "  null, null, "
-   "  null, null, null, 'immediates', null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'K', '', 'base-deleted', 'dir', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'K/K-a', 'K', 'base-deleted', 'file', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'K/K-b', 'K', 'base-deleted', 'file', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, 'moved/away', null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'L', '', 'normal', 'dir', "
-   "  null, null, "
-   "  null, null, null, 'immediates', null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'L/L-a', 'L', 'not-present', 'dir', "
-   "  null, null, "
-   "  null, null, null, 'immediates', null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   "insert into working_node values ("
-   "  1, 'L/L-a/L-a-a', 'L', 'not-present', 'dir', "
-   "  null, null, "
-   "  null, null, null, 'immediates', null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-   " "
-#endif
-#ifdef SVN_WC__NODES
    /* Load data into NODES table;
       ### op_depths have not been calculated by me yet;
       the value 1 is just 'good enough' to make the nodes WORKING nodes. */
   "insert into nodes values ("
-  "  1, 'I', 1, '', 2, 'some/dir', 2, 'normal', 'immediates',"
-  "  0, null, 'dir', 2, " TIME_2s ", '" AUTHOR_2 "', null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J', 1, '', null, null, null, 'normal', 'immediates',"
-  "  0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-a', 1, 'J', null, null, null, 'normal', null,"
-  "  0, null, 'file', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-b', 1, 'J', 2, 'some/dir', 2, 'normal', 'infinity',"
-  "  0, null, 'dir', 2, " TIME_2s ", '" AUTHOR_2 "', null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-b/J-b-a', 1, 'J/J-b', 2, 'another/dir', 2, 'normal', 'infinity',"
-  "  0, null, 'dir', 2, " TIME_2s ", '" AUTHOR_2 "', null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-b/J-b-b', 1, 'J/J-b', null, null, null, 'normal', null,"
-  "  0, null, 'file', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-c', 1, 'J', null, null, null, 'not-present', null,"
-  "  0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-c/J-c-a', 1, 'J/J-c', null, null, null, 'not-present', null,"
-  "  0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-d', 1, 'J', 2, 'moved/file', 2, 'normal', null,"
-  "  1, null, 'file', 2, " TIME_2s ", '" AUTHOR_2 "', '$md5 $" MD5_1 "',"
-  " '()', 10, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-e', 1, 'J', null, null, null, 'not-present', null,"
-  "  0, 'other/place', 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'J/J-e/J-e-a', 1, 'J/J-e', null, null, null, 'not-present', null,"
-  "  0, null, 'file', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
+  "  1, 'I', 1, '', 2, 'some/dir', 2, 'normal',"
+  "  0, null, 'dir', '()', 'immediates', null, null, 2, " TIME_2s ", '" AUTHOR_2 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J', 1, '', null, null, null, 'normal',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-a', 1, 'J', null, null, null, 'normal',"
+  "  0, null, 'file', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-b', 2, 'J', 2, 'some/dir', 2, 'normal',"
+  "  0, null, 'dir', '()', 'infinity', null, null, 2, " TIME_2s ", '" AUTHOR_2 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-b/J-b-a', 3, 'J/J-b', 2, 'another/dir', 2, 'normal',"
+  "  0, null, 'dir', '()', 'infinity', null, null, 2, " TIME_2s ", '" AUTHOR_2 "',"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-b/J-b-b', 2, 'J/J-b', null, null, 2, 'normal',"
+  "  0, null, 'file', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-c', 1, 'J', null, null, null, 'not-present',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-c/J-c-a', 1, 'J/J-c', null, null, null, 'not-present',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-d', 2, 'J', 2, 'moved/file', 2, 'normal',"
+  "  1, null, 'file', '()', null, '$md5 $" MD5_1 "', null, 2, " TIME_2s ", '" AUTHOR_2 "',"
+  "  10, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e', 1, 'J', null, null, null, 'not-present',"
+  "  0, 'other/place', 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e/J-e-a', 1, 'J/J-e', null, null, null, 'not-present',"
+  "  0, null, 'file', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
   "insert into nodes values ("
   "  1, 'J/J-e/J-e-b', 1, 'J/J-e', null, null, null, 'not-present',"
-  "  null, 0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
   "insert into nodes values ("
   "  1, 'J/J-e/J-e-b/Jeba', 1, 'J/J-e/J-e-b', null, null, null, 'base-deleted',"
-  "  null, 0, null, 'file', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
+  "  0, null, 'file', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
   "insert into nodes values ("
-  "  1, 'J/J-f', 1, 'J', null, null, null, 'normal', 'immediates',"
-  "  0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
+  "  1, 'J/J-f', 1, 'J', null, null, null, 'normal',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
   "insert into nodes values ("
   "  1, 'J/J-f/J-f-a', 1, 'J/J-f', null, null, null, 'base-deleted',"
-  "  'immediates', 0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
   "insert into nodes values ("
-  "  1, 'K', 1, '', null, null, null, 'base-deleted', null,"
-  "  0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'K/K-a', 1, 'K', null, null, null, 'base-deleted', null,"
-  "  0, null, 'file', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'K/K-b', 1, 'K', null, null, null, 'base-deleted', null,"
-  "  0, 'moved/away', 'file', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'L', 1, '', null, null, null, 'normal', 'immediates',"
-  "  0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'L/L-a', 1, 'L', null, null, null, 'not-present', 'immediates',"
-  "  0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-  "insert into nodes values ("
-  "  1, 'L/L-a/L-a-a', 1, 'L', null, null, null, 'not-present', 'immediates',"
-  "  0, null, 'dir', null, null, null, null, '()',"
-  "  null, null, null, null, null);"
-#endif
+  "  1, 'K', 1, '', null, null, null, 'base-deleted',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'K/K-a', 1, 'K', null, null, null, 'base-deleted',"
+  "  0, null, 'file', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'K/K-b', 1, 'K', null, null, null, 'base-deleted',"
+  "  0, 'moved/away', 'file', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'L', 1, '', null, null, null, 'normal',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'L/L-a', 1, 'L', null, null, null, 'not-present',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'L/L-a/L-a-a', 1, 'L', null, null, null, 'not-present',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
    "insert into actual_node values ("
    "  1, 'I', '', null, null, null, null, null, 'changelist', null, "
-   "'" I_TC_DATA "', null, null, null, null);"
+   "  null, null, null, null, null);"
+   "insert into actual_node values ("
+   "  1, 'F', '', null, null, null, null, null, null, null, "
+   "  '" F_TC_DATA "', null, null, null, null);"
+   "insert into actual_node values ("
+   "  1, 'G', '', null, null, null, null, null, null, null, "
+   "  '" G_TC_DATA "', null, null, null, null);"
    "  "
-#ifndef SVN_WC__NODES_ONLY
-   "insert into base_node values ("
-   "  1, 'M', null, null, '', 'normal', 'dir', "
-   "  1, null, null, "
-   "  1, " TIME_1s ", '" AUTHOR_1 "', null, null, null, '()', null, null, "
-   "  null); "
-   "insert into working_node values ("
-   "  1, 'M/M-a', 'M', 'not-present', 'file', "
-   "  null, null, "
-   "  null, null, null, null, null, "
-   "  null, null, null, 0, null, null, '()', 0); "
-#endif
-#ifdef SVN_WC__NODES
    "insert into nodes values ("
-   "  1, 'M', 0, '', null, null, null, 'normal', null, "
-   "  1, null, 'dir', 1, " TIME_1s ", '" AUTHOR_1 "', null, '()', "
-   "  null, null, null, null, null);"
+   "  1, 'M', 0, '', 1, 'M', null, 'normal', "
+   "  1, null, 'dir', '()', null, null, null, 1, " TIME_1s ", '" AUTHOR_1 "',"
+   "  null, null, null, null);"
    "insert into nodes values ("
-   "  1, 'M/M-a', 1, 'M', null, null, null, 'not-present', null, "
-   "  null, null, 'file', null, null, null, null, '()', "
-   "  null, 0, null, null, null);"
-#endif
+   "  1, 'M/M-a', 1, 'M', null, null, null, 'not-present', "
+   "  null, null, 'file', '()', null, null, null, null, null, null,"
+   "  null, 0, null, null);"
    );
 
 WC_QUERIES_SQL_DECLARE_STATEMENTS(statements);
@@ -510,9 +293,7 @@ create_fake_wc(const char *subdir, int f
   svn_sqlite__db_t *sdb;
   const char * const my_statements[] = {
     statements[STMT_CREATE_SCHEMA],
-#ifdef SVN_WC__NODES
     statements[STMT_CREATE_NODES],
-#endif
     TESTING_DATA,
     NULL
   };
@@ -628,7 +409,7 @@ test_getting_info(apr_pool_t *pool)
   SVN_TEST_ASSERT(target == NULL);
   SVN_TEST_ASSERT(lock == NULL);
 
-  /* Test: NULL params, file-specific values, inherit repos info. */
+  /* Test: file-specific values. */
   SVN_ERR(svn_wc__db_base_get_info(
             NULL, &kind, NULL,
             &repos_relpath, &repos_root_url, &repos_uuid,
@@ -637,17 +418,8 @@ test_getting_info(apr_pool_t *pool)
             db, svn_dirent_join(local_abspath, "A", pool),
             pool, pool));
   SVN_TEST_ASSERT(kind == svn_wc__db_kind_file);
-  SVN_TEST_ASSERT(repos_relpath == NULL);
-  SVN_TEST_ASSERT(repos_root_url == NULL);
-  SVN_TEST_ASSERT(repos_uuid == NULL);
   SVN_TEST_STRING_ASSERT(MD5_1, svn_checksum_to_cstring(checksum, pool));
   SVN_TEST_ASSERT(translated_size == 10);
-
-  /* Grab the inherited info. */
-  SVN_ERR(svn_wc__db_scan_base_repos(
-            &repos_relpath, &repos_root_url, &repos_uuid,
-            db, svn_dirent_join(local_abspath, "A", pool),
-            pool, pool));
   SVN_TEST_STRING_ASSERT(repos_relpath, "A");
   SVN_TEST_STRING_ASSERT(repos_root_url, ROOT_ONE);
   SVN_TEST_STRING_ASSERT(repos_uuid, UUID_ONE);
@@ -663,9 +435,9 @@ test_getting_info(apr_pool_t *pool)
   SVN_TEST_ASSERT(kind == svn_wc__db_kind_symlink);
   SVN_TEST_ASSERT(status == svn_wc__db_status_excluded);
   SVN_TEST_ASSERT(!SVN_IS_VALID_REVNUM(revision));
-  SVN_TEST_ASSERT(repos_relpath == NULL);
-  SVN_TEST_ASSERT(repos_root_url == NULL);
-  SVN_TEST_ASSERT(repos_uuid == NULL);
+  SVN_TEST_STRING_ASSERT(repos_relpath, "B");
+  SVN_TEST_STRING_ASSERT(repos_root_url, ROOT_ONE);
+  SVN_TEST_STRING_ASSERT(repos_uuid, UUID_ONE);
   SVN_TEST_ASSERT(!SVN_IS_VALID_REVNUM(changed_rev));
   SVN_TEST_ASSERT(changed_date == 0);
   SVN_TEST_ASSERT(changed_author == NULL);
@@ -806,38 +578,41 @@ validate_node(svn_wc__db_t *db,
     }
 
   value = apr_hash_get(props, "p1", APR_HASH_KEY_STRING);
-  SVN_TEST_ASSERT(value != NULL && strcmp(value->data, "v1") == 0);
+  SVN_TEST_STRING_ASSERT(value->data, "v1");
   SVN_ERR(svn_wc__db_base_get_prop(&value, db, path, "p1",
                                    scratch_pool, scratch_pool));
-  SVN_TEST_ASSERT(value != NULL && strcmp(value->data, "v1") == 0);
+  SVN_TEST_STRING_ASSERT(value->data, "v1");
 
   value = apr_hash_get(props, "for-file", APR_HASH_KEY_STRING);
-  SVN_TEST_ASSERT(value != NULL && strcmp(value->data, relpath) == 0);
+  SVN_TEST_STRING_ASSERT(value->data, relpath);
   SVN_ERR(svn_wc__db_base_get_prop(&value, db, path, "for-file",
                                    scratch_pool, scratch_pool));
-  SVN_TEST_ASSERT(value != NULL && strcmp(value->data, relpath) == 0);
+  SVN_TEST_STRING_ASSERT(value->data, relpath);
 
   SVN_ERR(svn_wc__db_read_props(&props, db, path,
                                 scratch_pool, scratch_pool));
   SVN_TEST_ASSERT(props != NULL);
   value = apr_hash_get(props, "p1", APR_HASH_KEY_STRING);
-  SVN_TEST_ASSERT(value != NULL && strcmp(value->data, "v1") == 0);
+  SVN_TEST_STRING_ASSERT(value->data, "v1");
 
   SVN_ERR(svn_wc__db_read_pristine_props(&props, db, path,
                                          scratch_pool, scratch_pool));
   SVN_TEST_ASSERT(props != NULL);
   value = apr_hash_get(props, "p1", APR_HASH_KEY_STRING);
-  SVN_TEST_ASSERT(value != NULL && strcmp(value->data, "v1") == 0);
+  SVN_TEST_STRING_ASSERT(value->data, "v1");
 
   /* Now add a property value and read it back (all on actual) */
-  apr_hash_set(props, "p999", APR_HASH_KEY_STRING, value);
-
-  SVN_ERR(svn_wc__db_op_set_props(db, path, props, NULL, NULL, scratch_pool));
-  SVN_ERR(svn_wc__db_read_props(&props, db, path,
-                                scratch_pool, scratch_pool));
-  SVN_TEST_ASSERT(props != NULL);
-  value = apr_hash_get(props, "p999", APR_HASH_KEY_STRING);
-  SVN_TEST_ASSERT(value != NULL && strcmp(value->data, "v1") == 0);
+  {
+    apr_hash_t *actual_props = apr_hash_copy(scratch_pool, props);
+    apr_hash_set(actual_props, "p999", APR_HASH_KEY_STRING, value);
+    SVN_ERR(svn_wc__db_op_set_props(db, path, actual_props,
+                                    NULL, NULL, scratch_pool));
+    SVN_ERR(svn_wc__db_read_props(&props, db, path,
+                                  scratch_pool, scratch_pool));
+    SVN_TEST_ASSERT(props != NULL);
+    value = apr_hash_get(props, "p999", APR_HASH_KEY_STRING);
+    SVN_TEST_STRING_ASSERT(value->data, "v1");
+  }
 
   return SVN_NO_ERROR;
 }
@@ -1491,12 +1266,7 @@ test_global_relocate(apr_pool_t *pool)
   /* The UUID should still be the same. */
   SVN_TEST_STRING_ASSERT(repos_uuid, UUID_ONE);
 
-  /* While we're at it, let's see if the children have been relocated, too.
-
-     ### Relocate doesn't change anything in the child since the
-         repos_id is inherited (null).  Should we have some children
-         where the repos_id is not null but equal to the parent or
-         root? */
+  /* While we're at it, let's see if the children have been relocated, too. */
   SVN_ERR(svn_wc__db_read_info(NULL, NULL, NULL,
                                &repos_relpath, &repos_root_url, &repos_uuid,
                                NULL, NULL, NULL, NULL,
@@ -1506,9 +1276,9 @@ test_global_relocate(apr_pool_t *pool)
                                db, svn_dirent_join(local_abspath, "F",
                                                    pool),
                                pool, pool));
-  SVN_TEST_STRING_ASSERT(repos_relpath, NULL);
-  SVN_TEST_STRING_ASSERT(repos_root_url, NULL);
-  SVN_TEST_STRING_ASSERT(repos_uuid, NULL);
+  SVN_TEST_STRING_ASSERT(repos_relpath, "F");
+  SVN_TEST_STRING_ASSERT(repos_root_url, ROOT_THREE);
+  SVN_TEST_STRING_ASSERT(repos_uuid, UUID_ONE);
 
   /* Alternate repository is not relocated. */
   SVN_ERR(svn_wc__db_read_info(NULL, NULL, NULL,