You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2012/08/16 12:18:03 UTC
svn commit: r1373783 [48/50] - in /subversion/branches/compressed-pristines:
./ build/ build/ac-macros/ build/generator/ build/generator/templates/
build/win32/ contrib/client-side/emacs/ contrib/client-side/svn-push/
contrib/client-side/svnmerge/ cont...
Modified: subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/mergeinfo-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/mergeinfo-test.c?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/mergeinfo-test.c (original)
+++ subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/mergeinfo-test.c Thu Aug 16 10:17:48 2012
@@ -78,7 +78,7 @@ verify_mergeinfo_parse(const char *input
{
const void *path;
void *val;
- apr_array_header_t *ranges;
+ svn_rangelist_t *ranges;
svn_merge_range_t *range;
int j;
@@ -236,7 +236,7 @@ test_mergeinfo_dup(apr_pool_t *pool)
{
apr_hash_t *orig_mergeinfo, *copied_mergeinfo;
apr_pool_t *subpool;
- apr_array_header_t *rangelist;
+ svn_rangelist_t *rangelist;
/* Assure that copies which should be empty turn out that way. */
subpool = svn_pool_create(pool);
@@ -399,7 +399,7 @@ range_to_string(svn_merge_range_t *range
verified (e.g. "svn_rangelist_intersect"), while TYPE is a word
describing what the ranges being examined represent. */
static svn_error_t *
-verify_ranges_match(const apr_array_header_t *actual_rangelist,
+verify_ranges_match(const svn_rangelist_t *actual_rangelist,
svn_merge_range_t *expected_ranges, int nbr_expected,
const char *func_verified, const char *type,
apr_pool_t *pool)
@@ -436,7 +436,7 @@ verify_mergeinfo_deltas(apr_hash_t *delt
const char *func_verified, const char *type,
apr_pool_t *pool)
{
- apr_array_header_t *rangelist;
+ svn_rangelist_t *rangelist;
if (apr_hash_count(deltas) != 1)
/* Deltas on "/trunk" expected. */
@@ -479,7 +479,7 @@ test_diff_mergeinfo(apr_pool_t *pool)
static svn_error_t *
test_rangelist_reverse(apr_pool_t *pool)
{
- apr_array_header_t *rangelist;
+ svn_rangelist_t *rangelist;
svn_merge_range_t expected_rangelist[3] =
{ {10, 9, TRUE}, {7, 4, TRUE}, {3, 2, TRUE} };
@@ -494,7 +494,7 @@ test_rangelist_reverse(apr_pool_t *pool)
static svn_error_t *
test_rangelist_intersect(apr_pool_t *pool)
{
- apr_array_header_t *rangelist1, *rangelist2, *intersection;
+ svn_rangelist_t *rangelist1, *rangelist2, *intersection;
/* Expected intersection when considering inheritance. */
svn_merge_range_t intersection_consider_inheritance[] =
@@ -562,7 +562,7 @@ test_mergeinfo_intersect(apr_pool_t *poo
{
svn_merge_range_t expected_intersection[3] =
{ {0, 1, TRUE}, {2, 4, TRUE}, {11, 12, TRUE} };
- apr_array_header_t *rangelist;
+ svn_rangelist_t *rangelist;
apr_hash_t *intersection;
SVN_ERR(svn_mergeinfo_parse(&info1, "/trunk: 1-6,12-16\n/foo: 31", pool));
@@ -712,7 +712,7 @@ test_merge_mergeinfo(apr_pool_t *pool)
SVN_ERR(svn_mergeinfo_to_string(&info2_starting, info2, pool));
SVN_ERR(svn_mergeinfo_merge(info1, info2, pool));
- if (mergeinfo[i].expected_paths != apr_hash_count(info1))
+ if (mergeinfo[i].expected_paths != (int)apr_hash_count(info1))
return fail(pool, "Wrong number of paths in merged mergeinfo");
/* Check that info2 remained unchanged. */
@@ -728,7 +728,7 @@ test_merge_mergeinfo(apr_pool_t *pool)
for (j = 0; j < mergeinfo[i].expected_paths; j++)
{
- apr_array_header_t *rangelist =
+ svn_rangelist_t *rangelist =
apr_hash_get(info1, mergeinfo[i].path_rngs[j].path,
APR_HASH_KEY_STRING);
if (!rangelist)
@@ -751,7 +751,7 @@ test_remove_rangelist(apr_pool_t *pool)
{
int i, j;
svn_error_t *err, *child_err;
- apr_array_header_t *output, *eraser, *whiteboard;
+ svn_rangelist_t *output, *eraser, *whiteboard;
/* Struct for svn_rangelist_remove test data.
Parse WHITEBOARD and ERASER to hashes and then get the rangelist for
@@ -938,7 +938,7 @@ randomly_fill_rev_array(svn_boolean_t *r
/* Set *RANGELIST to a rangelist representing the revisions that are marked
* with TRUE in the array REVS[RANDOM_REV_ARRAY_LENGTH]. */
static svn_error_t *
-rev_array_to_rangelist(apr_array_header_t **rangelist,
+rev_array_to_rangelist(svn_rangelist_t **rangelist,
svn_boolean_t *revs,
apr_pool_t *pool)
{
@@ -980,7 +980,7 @@ test_rangelist_remove_randomly(apr_pool_
svn_boolean_t first_revs[RANDOM_REV_ARRAY_LENGTH],
second_revs[RANDOM_REV_ARRAY_LENGTH],
expected_revs[RANDOM_REV_ARRAY_LENGTH];
- apr_array_header_t *first_rangelist, *second_rangelist,
+ svn_rangelist_t *first_rangelist, *second_rangelist,
*expected_rangelist, *actual_rangelist;
/* There will be at most RANDOM_REV_ARRAY_LENGTH ranges in
expected_rangelist. */
@@ -1038,7 +1038,7 @@ test_rangelist_intersect_randomly(apr_po
svn_boolean_t first_revs[RANDOM_REV_ARRAY_LENGTH],
second_revs[RANDOM_REV_ARRAY_LENGTH],
expected_revs[RANDOM_REV_ARRAY_LENGTH];
- apr_array_header_t *first_rangelist, *second_rangelist,
+ svn_rangelist_t *first_rangelist, *second_rangelist,
*expected_rangelist, *actual_rangelist;
/* There will be at most RANDOM_REV_ARRAY_LENGTH ranges in
expected_rangelist. */
@@ -1105,7 +1105,7 @@ test_remove_mergeinfo(apr_pool_t *pool)
static svn_error_t *
test_rangelist_to_string(apr_pool_t *pool)
{
- apr_array_header_t *result;
+ svn_rangelist_t *result;
svn_string_t *output;
svn_string_t *expected = svn_string_create("3,5,7-11,13-14", pool);
@@ -1162,7 +1162,7 @@ test_rangelist_merge(apr_pool_t *pool)
{
int i;
svn_error_t *err, *child_err;
- apr_array_header_t *rangelist1, *rangelist2;
+ svn_rangelist_t *rangelist1, *rangelist2;
/* Struct for svn_rangelist_merge test data. Similar to
mergeinfo_merge_test_data struct in svn_mergeinfo_merge() test. */
@@ -1359,7 +1359,7 @@ test_rangelist_diff(apr_pool_t *pool)
{
int i;
svn_error_t *err, *child_err;
- apr_array_header_t *from, *to, *added, *deleted;
+ svn_rangelist_t *from, *to, *added, *deleted;
/* Structure containing two ranges to diff and the expected output of the
diff both when considering and ignoring range inheritance. */
Modified: subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/skel-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/skel-test.c?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/skel-test.c (original)
+++ subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/skel-test.c Thu Aug 16 10:17:48 2012
@@ -216,7 +216,7 @@ gen_implicit_length_all_chars(apr_size_t
for (i = 0; i < 256; i++)
if (! skel_is_space( (apr_byte_t)i)
&& ! skel_is_paren( (apr_byte_t)i))
- name[pos++] = i;
+ name[pos++] = (char)i;
*len_p = pos;
return name;
@@ -375,7 +375,7 @@ parse_explicit_length(apr_pool_t *pool)
{
char buf[1];
- buf[0] = i;
+ buf[0] = (char)i;
SVN_ERR(try_explicit_length(buf, 1, 1, pool));
}
}
@@ -386,7 +386,7 @@ parse_explicit_length(apr_pool_t *pool)
char data[256];
for (i = 0; i < 256; i++)
- data[i] = i;
+ data[i] = (char)i;
SVN_ERR(try_explicit_length(data, 256, 256, pool));
}
@@ -592,7 +592,7 @@ parse_list(apr_pool_t *pool)
svn_skel_t *child;
char buf[1];
- buf[0] = atom_byte;
+ buf[0] = (char)atom_byte;
put_list_start(str, (apr_byte_t)sep, sep_count);
for (i = 0; i < list_len; i++)
@@ -619,7 +619,7 @@ parse_list(apr_pool_t *pool)
char data[256];
for (i = 0; i < 256; i++)
- data[i] = i;
+ data[i] = (char)i;
put_list_start(str, (apr_byte_t)sep, sep_count);
for (i = 0; i < list_len; i++)
@@ -797,7 +797,7 @@ unparse_list(apr_pool_t *pool)
for (byte = 0; byte < 256; byte++)
if (skel_is_name( (apr_byte_t)byte))
{
- char buf = byte;
+ char buf = (char)byte;
add(build_atom(1, &buf, pool), list);
}
@@ -858,7 +858,7 @@ unparse_list(apr_pool_t *pool)
val = i * 10 + j;
for (k = 0; k < sizeof(buf); k++)
{
- buf[k] = val;
+ buf[k] = (char)val;
val += j;
}
@@ -873,6 +873,11 @@ unparse_list(apr_pool_t *pool)
if (! skel_equal(top, reparsed))
return fail(pool, "failed to reparse list of lists");
+
+ reparsed = svn_skel__dup(reparsed, TRUE, pool);
+
+ if (! skel_equal(top, reparsed))
+ return fail(pool, "failed to dup list of lists");
}
return SVN_NO_ERROR;
Propchange: subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/spillbuf-test.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/stream-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/stream-test.c?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/stream-test.c (original)
+++ subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/stream-test.c Thu Aug 16 10:17:48 2012
@@ -138,7 +138,7 @@ generate_test_bytes(int num_bytes, apr_p
{
if (c == 127)
repeat++;
- c = (c + 1) % 127;
+ c = (char)((c + 1) % 127);
repeat_iter = repeat;
}
}
Modified: subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/string-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/string-test.c?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/string-test.c (original)
+++ subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/string-test.c Thu Aug 16 10:17:48 2012
@@ -521,7 +521,7 @@ test24(apr_pool_t *pool)
SVN_TEST_ASSERT(length == 1);
SVN_TEST_STRING_ASSERT(buffer, "0");
- length = svn__i64toa(buffer, -0x8000000000000000ll);
+ length = svn__i64toa(buffer, 0x8000000000000000ll);
SVN_TEST_ASSERT(length == 20);
SVN_TEST_STRING_ASSERT(buffer, "-9223372036854775808");
@@ -529,14 +529,14 @@ test24(apr_pool_t *pool)
SVN_TEST_ASSERT(length == 19);
SVN_TEST_STRING_ASSERT(buffer, "9223372036854775807");
- length = svn__ui64toa(buffer, 0);
+ length = svn__ui64toa(buffer, 0ull);
SVN_TEST_ASSERT(length == 1);
SVN_TEST_STRING_ASSERT(buffer, "0");
- length = svn__ui64toa(buffer, 0xffffffffffffffffll);
+ length = svn__ui64toa(buffer, 0xffffffffffffffffull);
SVN_TEST_ASSERT(length == 20);
SVN_TEST_STRING_ASSERT(buffer, "18446744073709551615");
-
+
return test_stringbuf_unequal("abc", "abb", pool);
}
Modified: subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/utf-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/utf-test.c?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/utf-test.c (original)
+++ subversion/branches/compressed-pristines/subversion/tests/libsvn_subr/utf-test.c Thu Aug 16 10:17:48 2012
@@ -197,7 +197,7 @@ utf_validate2(apr_pool_t *pool)
/* A random string; experiment shows that it's occasionally (less
than 1%) valid but usually invalid. */
for (j = 0; j < sizeof(str) - 1; ++j)
- str[j] = range_rand(0, 255);
+ str[j] = (char)range_rand(0, 255);
str[sizeof(str) - 1] = 0;
len = strlen(str);
Propchange: subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Aug 16 10:17:48 2012
@@ -1,11 +1,13 @@
-tree-conflict-data-test
-.libs
*.lo
+.libs
+conflict-data-test
db-test
+entries-compat-test
fake-wc
+op-depth-test
pristine-store-test
svn-test-work
-entries-compat-test
-op-depth-test
-wc-lock-tester
+tree-conflict-data-test
wc-incomplete-tester
+wc-lock-tester
+wc-queries-test
Modified: subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/db-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/db-test.c?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/db-test.c (original)
+++ subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/db-test.c Thu Aug 16 10:17:48 2012
@@ -664,7 +664,8 @@ test_inserting_nodes(apr_pool_t *pool)
props,
1, TIME_1a, AUTHOR_1,
checksum,
- NULL, NULL, FALSE, NULL, FALSE, FALSE, NULL,
+ NULL, FALSE, FALSE, NULL, FALSE, FALSE,
+ NULL, NULL,
pool));
/* Create a new symlink node. */
@@ -676,7 +677,8 @@ test_inserting_nodes(apr_pool_t *pool)
props,
1, TIME_1a, AUTHOR_1,
"O-target",
- NULL, NULL, FALSE, NULL, NULL,
+ NULL, FALSE, FALSE, NULL, FALSE, FALSE,
+ NULL, NULL,
pool));
/* Replace an incomplete node with an absent file node. */
@@ -1416,6 +1418,7 @@ test_externals_store(apr_pool_t *pool)
FALSE, NULL,
FALSE,
NULL,
+ NULL,
pool));
SVN_ERR(svn_wc__db_external_add_dir(db,
Modified: subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/op-depth-test.c?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/op-depth-test.c Thu Aug 16 10:17:48 2012
@@ -43,6 +43,7 @@
#include "private/svn_dep_compat.h"
#include "../../libsvn_wc/wc.h"
#include "../../libsvn_wc/wc_db.h"
+#include "../../libsvn_wc/workqueue.h"
#define SVN_WC__I_AM_WC_DB
#include "../../libsvn_wc/wc_db_private.h"
@@ -238,7 +239,10 @@ wc_update(svn_test__sandbox_t *b, const
apr_array_header_t *result_revs;
apr_array_header_t *paths = apr_array_make(b->pool, 1,
sizeof(const char *));
- svn_opt_revision_t revision = { svn_opt_revision_number, { revnum } };
+ svn_opt_revision_t revision;
+
+ revision.kind = svn_opt_revision_number;
+ revision.value.number = revnum;
APR_ARRAY_PUSH(paths, const char *) = wc_path(b, path);
SVN_ERR(svn_client_create_context(&ctx, b->pool));
@@ -455,8 +459,12 @@ check_db_rows(svn_test__sandbox_t *b,
svn_boolean_t have_row;
apr_hash_t *found_hash = apr_hash_make(b->pool);
apr_hash_t *expected_hash = apr_hash_make(b->pool);
- comparison_baton_t comparison_baton
- = { expected_hash, found_hash, b->pool, NULL };
+ comparison_baton_t comparison_baton;
+
+ comparison_baton.expected_hash = expected_hash;
+ comparison_baton.found_hash = found_hash;
+ comparison_baton.scratch_pool = b->pool;
+ comparison_baton.errors = NULL;
/* Fill ACTUAL_HASH with data from the WC DB. */
SVN_ERR(open_wc_db(&sdb, b->wc_abspath, statements, b->pool, b->pool));
@@ -523,23 +531,23 @@ struct copy_subtest_t
nodes_row_t expected[20];
};
+#define source_everything "A/B"
+
+#define source_base_file "A/B/lambda"
+#define source_base_dir "A/B/E"
+
+#define source_added_file "A/B/file-added"
+#define source_added_dir "A/B/D-added"
+#define source_added_dir2 "A/B/D-added/D2"
+
+#define source_copied_file "A/B/lambda-copied"
+#define source_copied_dir "A/B/E-copied"
+
/* Check that all kinds of WC-to-WC copies give correct op_depth results:
* create a Greek tree, make copies in it, and check the resulting DB rows. */
static svn_error_t *
wc_wc_copies(svn_test__sandbox_t *b)
{
- const char source_everything[] = "A/B";
-
- const char source_base_file[] = "A/B/lambda";
- const char source_base_dir[] = "A/B/E";
-
- const char source_added_file[] = "A/B/file-added";
- const char source_added_dir[] = "A/B/D-added";
- const char source_added_dir2[] = "A/B/D-added/D2";
-
- const char source_copied_file[] = "A/B/lambda-copied";
- const char source_copied_dir[] = "A/B/E-copied";
-
SVN_ERR(add_and_commit_greek_tree(b));
/* Create the various kinds of source node which will be copied */
@@ -756,13 +764,15 @@ repo_wc_copies(svn_test__sandbox_t *b)
for (subtest = subtests; subtest->from_path; subtest++)
{
svn_opt_revision_t rev = { svn_opt_revision_number, { 1 } };
- svn_client_copy_source_t source = { NULL, &rev, &rev };
+ svn_client_copy_source_t source;
apr_array_header_t *sources
= apr_array_make(b->pool, 0, sizeof(svn_client_copy_source_t *));
source.path = svn_path_url_add_component2(b->repos_url,
subtest->from_path,
b->pool);
+ source.revision = &rev;
+ source.peg_revision = &rev;
APR_ARRAY_PUSH(sources, svn_client_copy_source_t *) = &source;
SVN_ERR(svn_client_copy6(sources,
wc_path(b, subtest->to_path),
@@ -1217,9 +1227,9 @@ insert_dirs(svn_test__sandbox_t *b,
if (nodes->local_relpath[0])
{
SVN_ERR(svn_sqlite__get_statement(&stmt, sdb, 2));
- SVN_ERR(svn_sqlite__bindf(stmt, "sissrs",
+ SVN_ERR(svn_sqlite__bindf(stmt, "sdssrs",
nodes->local_relpath,
- (apr_int64_t)nodes->op_depth,
+ nodes->op_depth,
nodes->presence,
nodes->repo_relpath,
nodes->repo_revnum,
@@ -1229,9 +1239,9 @@ insert_dirs(svn_test__sandbox_t *b,
else
{
SVN_ERR(svn_sqlite__get_statement(&stmt, sdb, 1));
- SVN_ERR(svn_sqlite__bindf(stmt, "sissr",
+ SVN_ERR(svn_sqlite__bindf(stmt, "sdssr",
nodes->local_relpath,
- (apr_int64_t)nodes->op_depth,
+ nodes->op_depth,
nodes->presence,
nodes->repo_relpath,
nodes->repo_revnum));
@@ -1277,7 +1287,7 @@ base_dir_insert_remove(svn_test__sandbox
NULL, NULL, FALSE, NULL, NULL,
b->pool));
- after = apr_palloc(b->pool, sizeof(*after) * (num_before + num_added + 1));
+ after = apr_palloc(b->pool, sizeof(*after) * (apr_size_t)(num_before + num_added + 1));
for (i = 0; i < num_before; ++i)
after[i] = before[i];
for (i = 0; i < num_added; ++i)
@@ -1286,7 +1296,11 @@ base_dir_insert_remove(svn_test__sandbox
SVN_ERR(check_db_rows(b, "", after));
- SVN_ERR(svn_wc__db_base_remove(b->wc_ctx->db, dir_abspath, b->pool));
+ SVN_ERR(svn_wc__db_base_remove(b->wc_ctx->db, dir_abspath,
+ FALSE, SVN_INVALID_REVNUM,
+ NULL, NULL, b->pool));
+ SVN_ERR(svn_wc__wq_run(b->wc_ctx->db, dir_abspath,
+ NULL, NULL, b->pool));
SVN_ERR(check_db_rows(b, "", before));
@@ -2830,8 +2844,10 @@ do_delete(svn_test__sandbox_t *b,
SVN_ERR(check_db_rows(b, "", before));
SVN_ERR(check_db_actual(b, actual_before));
SVN_ERR(svn_wc__db_op_delete(b->wc_ctx->db, local_abspath, NULL,
- NULL, NULL /* notification */,
+ TRUE /* delete_dir_externals */,
+ NULL /* conflict */, NULL /* work_item */,
NULL, NULL /* cancellation */,
+ NULL, NULL /* notification */,
b->pool));
SVN_ERR(check_db_rows(b, "", after));
SVN_ERR(check_db_actual(b, actual_after));
@@ -3634,8 +3650,6 @@ copy_file_externals(const svn_test_opts_
{ 2, "A/B", "normal", NO_COPY_FROM },
{ 0, "A/g", "normal", 1, "f", TRUE },
{ 0, "A/B/g", "normal", 1, "f", TRUE },
- { 0, "X/g", "normal", 1, "f", TRUE },
- { 0, "X/B/g", "normal", 1, "f", TRUE },
{ 0 }
};
SVN_ERR(check_db_rows(&b, "", rows));
@@ -4576,6 +4590,404 @@ move_update(const svn_test_opts_t *opts,
return SVN_NO_ERROR;
}
+static svn_error_t *
+check_moved_to(apr_array_header_t *moved_tos,
+ int i,
+ int op_depth,
+ const char *local_relpath)
+{
+ struct svn_wc__db_moved_to_t *moved_to;
+
+ if (i >= moved_tos->nelts)
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "moved-to %d not found", i);
+
+ moved_to = APR_ARRAY_IDX(moved_tos, i, struct svn_wc__db_moved_to_t *);
+
+ if (moved_to->op_depth != op_depth
+ || strcmp(moved_to->local_relpath, local_relpath))
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "expected: {%d '%s'} found[%d]: {%d '%s'}",
+ op_depth, local_relpath, i,
+ moved_to->op_depth, moved_to->local_relpath);
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_scan_delete(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+ svn_test__sandbox_t b;
+ const char *moved_to_abspath, *moved_to_op_root_abspath;
+ apr_array_header_t *moved_tos;
+
+ SVN_ERR(svn_test__sandbox_create(&b, "scan_delete", opts, pool));
+
+ SVN_ERR(wc_mkdir(&b, "A"));
+ SVN_ERR(wc_mkdir(&b, "A/B"));
+ SVN_ERR(wc_mkdir(&b, "A/B/C"));
+ SVN_ERR(wc_mkdir(&b, "A2"));
+ SVN_ERR(wc_mkdir(&b, "A2/B"));
+ SVN_ERR(wc_mkdir(&b, "C2"));
+ SVN_ERR(wc_commit(&b, ""));
+ SVN_ERR(wc_update(&b, "", 1));
+
+ SVN_ERR(wc_move(&b, "A2", "X"));
+ SVN_ERR(wc_move(&b, "X/B", "Z"));
+ SVN_ERR(wc_move(&b, "A/B", "X/B"));
+ SVN_ERR(wc_move(&b, "X/B/C", "Y"));
+ SVN_ERR(wc_move(&b, "C2", "X/B/C"));
+
+ {
+ nodes_row_t nodes[] = {
+ {0, "", "normal", 1, ""},
+ {0, "A", "normal", 1, "A"},
+ {0, "A/B", "normal", 1, "A/B"},
+ {0, "A/B/C", "normal", 1, "A/B/C"},
+ {0, "A2", "normal", 1, "A2"},
+ {0, "A2/B", "normal", 1, "A2/B"},
+ {0, "C2", "normal", 1, "C2"},
+ {1, "A2", "base-deleted", NO_COPY_FROM, "X"},
+ {1, "A2/B", "base-deleted", NO_COPY_FROM},
+ {1, "Z", "normal", 1, "A2/B", MOVED_HERE},
+ {1, "X", "normal", 1, "A2", MOVED_HERE},
+ {1, "X/B", "normal", 1, "A2/B", MOVED_HERE},
+ {2, "A/B", "base-deleted", NO_COPY_FROM, "X/B"},
+ {2, "A/B/C", "base-deleted", NO_COPY_FROM},
+ {2, "X/B", "normal", 1, "A/B", FALSE, "Z", TRUE},
+ {2, "X/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "Y", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "C2", "base-deleted", NO_COPY_FROM, "X/B/C"},
+ {3, "X/B/C", "normal", 1, "C2", FALSE, "Y", TRUE},
+ {0}
+ };
+ SVN_ERR(check_db_rows(&b, "", nodes));
+ }
+
+ SVN_ERR(svn_wc__db_scan_deletion(NULL, &moved_to_abspath,
+ NULL, &moved_to_op_root_abspath,
+ b.wc_ctx->db, wc_path(&b, "C2"),
+ pool, pool));
+ SVN_TEST_STRING_ASSERT(moved_to_abspath, wc_path(&b, "X/B/C"));
+ SVN_TEST_STRING_ASSERT(moved_to_op_root_abspath, wc_path(&b, "X/B/C"));
+
+ SVN_ERR(svn_wc__db_scan_deletion(NULL, &moved_to_abspath,
+ NULL, &moved_to_op_root_abspath,
+ b.wc_ctx->db, wc_path(&b, "A/B"),
+ pool, pool));
+ SVN_TEST_STRING_ASSERT(moved_to_abspath, wc_path(&b, "X/B"));
+ SVN_TEST_STRING_ASSERT(moved_to_op_root_abspath, wc_path(&b, "X/B"));
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A/B/C"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 2, "X/B/C"));
+ SVN_ERR(check_moved_to(moved_tos, 1, 3, "Y"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 2);
+
+ SVN_ERR(svn_wc__db_scan_deletion(NULL, &moved_to_abspath,
+ NULL, &moved_to_op_root_abspath,
+ b.wc_ctx->db, wc_path(&b, "A/B/C"),
+ pool, pool));
+ SVN_TEST_STRING_ASSERT(moved_to_abspath, wc_path(&b, "X/B/C"));
+ SVN_TEST_STRING_ASSERT(moved_to_op_root_abspath, wc_path(&b, "X/B"));
+
+ SVN_ERR(svn_wc__db_scan_deletion(NULL, &moved_to_abspath,
+ NULL, &moved_to_op_root_abspath,
+ b.wc_ctx->db, wc_path(&b, "A2"),
+ pool, pool));
+ SVN_TEST_STRING_ASSERT(moved_to_abspath, wc_path(&b, "X"));
+ SVN_TEST_STRING_ASSERT(moved_to_op_root_abspath, wc_path(&b, "X"));
+
+ SVN_ERR(svn_wc__db_scan_deletion(NULL, &moved_to_abspath,
+ NULL, &moved_to_op_root_abspath,
+ b.wc_ctx->db, wc_path(&b, "A2/B"),
+ pool, pool));
+ SVN_TEST_STRING_ASSERT(moved_to_abspath, wc_path(&b, "X/B"));
+ SVN_TEST_STRING_ASSERT(moved_to_op_root_abspath, wc_path(&b, "X"));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_follow_moved_to(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+ svn_test__sandbox_t b;
+ apr_array_header_t *moved_tos;
+
+ SVN_ERR(svn_test__sandbox_create(&b, "follow_moved_to", opts, pool));
+
+ SVN_ERR(wc_mkdir(&b, "A1"));
+ SVN_ERR(wc_mkdir(&b, "A1/B"));
+ SVN_ERR(wc_mkdir(&b, "A1/B/C"));
+ SVN_ERR(wc_mkdir(&b, "A1/B/C/D"));
+ SVN_ERR(wc_mkdir(&b, "A1/B/C/D/E"));
+ SVN_ERR(wc_mkdir(&b, "A2"));
+ SVN_ERR(wc_mkdir(&b, "A2/B"));
+ SVN_ERR(wc_mkdir(&b, "A2/B/C"));
+ SVN_ERR(wc_mkdir(&b, "A2/B/C/D"));
+ SVN_ERR(wc_mkdir(&b, "A2/B/C/D/E"));
+ SVN_ERR(wc_mkdir(&b, "A3"));
+ SVN_ERR(wc_mkdir(&b, "A3/B"));
+ SVN_ERR(wc_mkdir(&b, "A3/B/C"));
+ SVN_ERR(wc_mkdir(&b, "A3/B/C/D"));
+ SVN_ERR(wc_mkdir(&b, "A3/B/C/D/E"));
+ SVN_ERR(wc_commit(&b, ""));
+ SVN_ERR(wc_update(&b, "", 1));
+
+ {
+ nodes_row_t nodes[] = {
+ {0, "", "normal", 1, ""},
+ {0, "A1", "normal", 1, "A1"},
+ {0, "A1/B", "normal", 1, "A1/B"},
+ {0, "A1/B/C", "normal", 1, "A1/B/C"},
+ {0, "A1/B/C/D", "normal", 1, "A1/B/C/D"},
+ {0, "A1/B/C/D/E", "normal", 1, "A1/B/C/D/E"},
+ {0, "A2", "normal", 1, "A2"},
+ {0, "A2/B", "normal", 1, "A2/B"},
+ {0, "A2/B/C", "normal", 1, "A2/B/C"},
+ {0, "A2/B/C/D", "normal", 1, "A2/B/C/D"},
+ {0, "A2/B/C/D/E", "normal", 1, "A2/B/C/D/E"},
+ {0, "A3", "normal", 1, "A3"},
+ {0, "A3/B", "normal", 1, "A3/B"},
+ {0, "A3/B/C", "normal", 1, "A3/B/C"},
+ {0, "A3/B/C/D", "normal", 1, "A3/B/C/D"},
+ {0, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E"},
+ {0}
+ };
+ SVN_ERR(check_db_rows(&b, "", nodes));
+ }
+
+ SVN_ERR(wc_move(&b, "A1", "X"));
+ SVN_ERR(wc_move(&b, "A2", "A1"));
+ SVN_ERR(wc_move(&b, "A3", "A2"));
+ SVN_ERR(wc_move(&b, "X", "A3"));
+ SVN_ERR(wc_move(&b, "A1/B", "X"));
+ SVN_ERR(wc_move(&b, "A2/B", "A1/B"));
+ SVN_ERR(wc_move(&b, "A3/B", "A2/B"));
+ SVN_ERR(wc_move(&b, "X", "A3/B"));
+ SVN_ERR(wc_move(&b, "A1/B/C/D", "X"));
+ SVN_ERR(wc_move(&b, "A2/B/C/D", "A1/B/C/D"));
+ SVN_ERR(wc_move(&b, "A3/B/C/D", "A2/B/C/D"));
+ SVN_ERR(wc_move(&b, "X", "A3/B/C/D"));
+ SVN_ERR(wc_move(&b, "A1/B/C/D/E", "X"));
+ SVN_ERR(wc_move(&b, "A2/B/C/D/E", "A1/B/C/D/E"));
+ SVN_ERR(wc_move(&b, "A3/B/C/D/E", "A2/B/C/D/E"));
+ SVN_ERR(wc_move(&b, "X", "A3/B/C/D/E"));
+
+ {
+ nodes_row_t nodes[] = {
+ {0, "", "normal", 1, ""},
+ {0, "A1", "normal", 1, "A1"},
+ {0, "A1/B", "normal", 1, "A1/B"},
+ {0, "A1/B/C", "normal", 1, "A1/B/C"},
+ {0, "A1/B/C/D", "normal", 1, "A1/B/C/D"},
+ {0, "A1/B/C/D/E", "normal", 1, "A1/B/C/D/E"},
+ {0, "A2", "normal", 1, "A2"},
+ {0, "A2/B", "normal", 1, "A2/B"},
+ {0, "A2/B/C", "normal", 1, "A2/B/C"},
+ {0, "A2/B/C/D", "normal", 1, "A2/B/C/D"},
+ {0, "A2/B/C/D/E", "normal", 1, "A2/B/C/D/E"},
+ {0, "A3", "normal", 1, "A3"},
+ {0, "A3/B", "normal", 1, "A3/B"},
+ {0, "A3/B/C", "normal", 1, "A3/B/C"},
+ {0, "A3/B/C/D", "normal", 1, "A3/B/C/D"},
+ {0, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E"},
+
+ {1, "A1", "normal", 1, "A2", FALSE, "A3", TRUE},
+ {1, "A1/B", "normal", 1, "A2/B", MOVED_HERE},
+ {1, "A1/B/C", "normal", 1, "A2/B/C", MOVED_HERE},
+ {1, "A1/B/C/D", "normal", 1, "A2/B/C/D", MOVED_HERE},
+ {1, "A1/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+
+ {1, "A2", "normal", 1, "A3", FALSE, "A1", TRUE},
+ {1, "A2/B", "normal", 1, "A3/B", MOVED_HERE},
+ {1, "A2/B/C", "normal", 1, "A3/B/C", MOVED_HERE},
+ {1, "A2/B/C/D", "normal", 1, "A3/B/C/D", MOVED_HERE},
+ {1, "A2/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+
+ {1, "A3", "normal", 1, "A1", FALSE, "A2", TRUE},
+ {1, "A3/B", "normal", 1, "A1/B", MOVED_HERE},
+ {1, "A3/B/C", "normal", 1, "A1/B/C", MOVED_HERE},
+ {1, "A3/B/C/D", "normal", 1, "A1/B/C/D", MOVED_HERE},
+ {1, "A3/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+
+ {2, "A1/B", "normal", 1, "A3/B", FALSE, "A3/B", TRUE},
+ {2, "A1/B/C", "normal", 1, "A3/B/C", MOVED_HERE},
+ {2, "A1/B/C/D", "normal", 1, "A3/B/C/D", MOVED_HERE},
+ {2, "A1/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+
+ {2, "A2/B", "normal", 1, "A1/B", FALSE, "A1/B", TRUE},
+ {2, "A2/B/C", "normal", 1, "A1/B/C", MOVED_HERE},
+ {2, "A2/B/C/D", "normal", 1, "A1/B/C/D", MOVED_HERE},
+ {2, "A2/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+
+ {2, "A3/B", "normal", 1, "A2/B", FALSE, "A2/B", TRUE},
+ {2, "A3/B/C", "normal", 1, "A2/B/C", MOVED_HERE},
+ {2, "A3/B/C/D", "normal", 1, "A2/B/C/D", MOVED_HERE},
+ {2, "A3/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+
+ {4, "A1/B/C/D", "normal", 1, "A1/B/C/D", FALSE, "A3/B/C/D", TRUE},
+ {4, "A1/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+
+ {4, "A2/B/C/D", "normal", 1, "A2/B/C/D", FALSE, "A1/B/C/D", TRUE},
+ {4, "A2/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+
+ {4, "A3/B/C/D", "normal", 1, "A3/B/C/D", FALSE, "A2/B/C/D", TRUE},
+ {4, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+
+ {5, "A1/B/C/D/E", "normal", 1, "A2/B/C/D/E", FALSE, "A3/B/C/D/E", TRUE},
+ {5, "A2/B/C/D/E", "normal", 1, "A3/B/C/D/E", FALSE, "A1/B/C/D/E", TRUE},
+ {5, "A3/B/C/D/E", "normal", 1, "A1/B/C/D/E", FALSE, "A2/B/C/D/E", TRUE},
+ {0}
+ };
+ SVN_ERR(check_db_rows(&b, "", nodes));
+ }
+
+ /* A1->A3, A3/B->A2/B, A2/B/C/D->A1/B/C/D, A1/B/C/D/E->A3/B/C/D/E */
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A1"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A1/B"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B"));
+ SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 2);
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A1/B/C"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B/C"));
+ SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B/C"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 2);
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A1/B/C/D"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B/C/D"));
+ SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B/C/D"));
+ SVN_ERR(check_moved_to(moved_tos, 2, 4, "A1/B/C/D"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 3);
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A1/B/C/D/E"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B/C/D/E"));
+ SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B/C/D/E"));
+ SVN_ERR(check_moved_to(moved_tos, 2, 4, "A1/B/C/D/E"));
+ SVN_ERR(check_moved_to(moved_tos, 3, 5, "A3/B/C/D/E"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 4);
+
+ SVN_ERR(wc_delete(&b, "A3/B/C/D/E"));
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A1/B/C/D/E"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B/C/D/E"));
+ SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B/C/D/E"));
+ SVN_ERR(check_moved_to(moved_tos, 2, 4, "A1/B/C/D/E"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 3);
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+mixed_rev_move(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+ svn_test__sandbox_t b;
+ apr_array_header_t *moved_tos;
+
+ SVN_ERR(svn_test__sandbox_create(&b, "mixed_rev_move", opts, pool));
+
+ SVN_ERR(wc_mkdir(&b, "A"));
+ SVN_ERR(wc_commit(&b, ""));
+ SVN_ERR(wc_mkdir(&b, "A/B"));
+ SVN_ERR(wc_commit(&b, ""));
+ SVN_ERR(wc_mkdir(&b, "A/B/C"));
+ SVN_ERR(wc_commit(&b, ""));
+
+ {
+ nodes_row_t nodes[] = {
+ {0, "", "normal", 0, ""},
+ {0, "A", "normal", 1, "A"},
+ {0, "A/B", "normal", 2, "A/B"},
+ {0, "A/B/C", "normal", 3, "A/B/C"},
+ {0}
+ };
+ SVN_ERR(check_db_rows(&b, "", nodes));
+ }
+
+ SVN_ERR(wc_move(&b, "A", "X"));
+
+ {
+ nodes_row_t nodes[] = {
+ {0, "", "normal", 0, ""},
+ {0, "A", "normal", 1, "A"},
+ {0, "A/B", "normal", 2, "A/B"},
+ {0, "A/B/C", "normal", 3, "A/B/C"},
+ {1, "A", "base-deleted", NO_COPY_FROM, "X"},
+ {1, "A/B", "base-deleted", NO_COPY_FROM},
+ {1, "A/B/C", "base-deleted", NO_COPY_FROM},
+ {1, "X", "normal", 1, "A", MOVED_HERE},
+ {1, "X/B", "not-present", 2, "A/B"},
+ {2, "X/B", "normal", 2, "A/B", MOVED_HERE},
+ {2, "X/B/C", "not-present", 3, "A/B/C"},
+ {3, "X/B/C", "normal", 3, "A/B/C", MOVED_HERE},
+ {0}
+ };
+ SVN_ERR(check_db_rows(&b, "", nodes));
+ }
+
+ /* ### These values PASS but I'm not sure they are correct. */
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A/B/C"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "X/B/C"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A/B"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "X/B"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "X"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+
+ /* This move doesn't record moved-to */
+ SVN_ERR(wc_move(&b, "X/B", "X/Y"));
+
+ {
+ nodes_row_t nodes[] = {
+ {0, "", "normal", 0, ""},
+ {0, "A", "normal", 1, "A"},
+ {0, "A/B", "normal", 2, "A/B"},
+ {0, "A/B/C", "normal", 3, "A/B/C"},
+ {1, "A", "base-deleted", NO_COPY_FROM, "X"},
+ {1, "A/B", "base-deleted", NO_COPY_FROM},
+ {1, "A/B/C", "base-deleted", NO_COPY_FROM},
+ {1, "X", "normal", 1, "A", MOVED_HERE},
+ {1, "X/B", "not-present", 2, "A/B"},
+ {2, "X/Y", "normal", 2, "A/B"},
+ {2, "X/Y/C", "not-present", NO_COPY_FROM},
+ {3, "X/Y/C", "normal", 3, "A/B/C"},
+ {0}
+ };
+ SVN_ERR(check_db_rows(&b, "", nodes));
+ }
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A/B/C"), pool, pool));
+ SVN_TEST_ASSERT(moved_tos->nelts == 0);
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A/B"), pool, pool));
+ SVN_TEST_ASSERT(moved_tos->nelts == 0);
+
+ SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+ wc_path(&b, "A"), pool, pool));
+ SVN_ERR(check_moved_to(moved_tos, 0, 1, "X"));
+ SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+ return SVN_NO_ERROR;
+}
/* ---------------------------------------------------------------------- */
@@ -4668,5 +5080,11 @@ struct svn_test_descriptor_t test_funcs[
"move_added"),
SVN_TEST_OPTS_XFAIL(move_update,
"move_update"),
+ SVN_TEST_OPTS_PASS(test_scan_delete,
+ "scan_delete"),
+ SVN_TEST_OPTS_PASS(test_follow_moved_to,
+ "follow_moved_to"),
+ SVN_TEST_OPTS_PASS(mixed_rev_move,
+ "mixed_rev_move"),
SVN_TEST_NULL
};
Modified: subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/utils.c
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/utils.c?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/utils.c (original)
+++ subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/utils.c Thu Aug 16 10:17:48 2012
@@ -81,17 +81,18 @@ create_repos_and_wc(const char **repos_u
/* Create a WC. Set *WC_ABSPATH to its path. */
{
+ apr_pool_t *subpool = svn_pool_create(pool); /* To cleanup CTX */
svn_client_ctx_t *ctx;
svn_opt_revision_t head_rev = { svn_opt_revision_head, {0} };
- SVN_ERR(svn_client_create_context(&ctx, pool));
- /* SVN_ERR(svn_config_get_config(&ctx->config, config_dir, pool)); */
+ SVN_ERR(svn_client_create_context(&ctx, subpool));
SVN_ERR(svn_dirent_get_absolute(wc_abspath, wc_path, pool));
SVN_ERR(svn_client_checkout3(NULL, *repos_url, *wc_abspath,
&head_rev, &head_rev, svn_depth_infinity,
FALSE /* ignore_externals */,
FALSE /* allow_unver_obstructions */,
- ctx, pool));
+ ctx, subpool));
+ svn_pool_destroy(subpool);
}
/* Register this WC for cleanup. */
Propchange: subversion/branches/compressed-pristines/subversion/tests/libsvn_wc/wc-incomplete-tester.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/compressed-pristines/subversion/tests/svn_test.h
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/subversion/tests/svn_test.h?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/subversion/tests/svn_test.h (original)
+++ subversion/branches/compressed-pristines/subversion/tests/svn_test.h Thu Aug 16 10:17:48 2012
@@ -54,7 +54,9 @@ extern "C" {
} while (0)
/** Handy macro for testing an expected svn_error_t return value.
- * EXPECTED must be a real error (neither SVN_NO_ERROR nor APR_SUCCESS). */
+ * EXPECTED must be a real error (neither SVN_NO_ERROR nor APR_SUCCESS).
+ * The error returned by EXPR will be cleared.
+ */
#define SVN_TEST_ASSERT_ERROR(expr, expected) \
do { \
svn_error_t *err__ = (expr); \
@@ -68,9 +70,13 @@ extern "C" {
"Expected error %d but got %s", \
(expected), \
"SVN_NO_ERROR"); \
+ svn_error_clear(err__); \
} while (0)
/** Handy macro for testing string equality.
+ *
+ * EXPR and/or EXPECTED_EXPR may be NULL which compares equal to NULL and
+ * not equal to any non-NULL string.
*/
#define SVN_TEST_STRING_ASSERT(expr, expected_expr) \
do { \
@@ -79,8 +85,8 @@ extern "C" {
\
if (tst_str2 == NULL && tst_str1 == NULL) \
break; \
- if ( (tst_str2 != NULL && tst_str1 == NULL) \
- || (strcmp(tst_str2, tst_str1) != 0) ) \
+ if ((tst_str1 == NULL) || (tst_str2 == NULL) \
+ || (strcmp(tst_str2, tst_str1) != 0)) \
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL, \
"Strings not equal\n Expected: '%s'\n Found: '%s'" \
"\n at %s:%d", \
Modified: subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svnbuild.sh?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svnbuild.sh (original)
+++ subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svnbuild.sh Thu Aug 16 10:17:48 2012
@@ -22,5 +22,7 @@
set -e
set -x
+export JAVA_HOME=/usr/local/jdk-1.7.0
+
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
-(cd .. && gmake BRANCH="$branch")
+(cd .. && gmake BRANCH="$branch" THREADING="no")
Modified: subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh (original)
+++ subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh Thu Aug 16 10:17:48 2012
@@ -24,7 +24,7 @@ set -x
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
export MALLOC_OPTIONS=S
-(cd .. && gmake BRANCH="$branch" svn-check-bindings)
+(cd .. && gmake BRANCH="$branch" THREADING="no" svn-check-bindings)
grep -q "^Result: PASS$" tests.log.bindings.pl || exit 1
grep -q "^OK$" tests.log.bindings.py || exit 1
tail -n 1 tests.log.bindings.rb | grep -q ", 0 failures, 0 errors" || exit 1
Modified: subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svncheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svncheck.sh?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svncheck.sh (original)
+++ subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svncheck.sh Thu Aug 16 10:17:48 2012
@@ -24,11 +24,11 @@ set -x
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
export MALLOC_OPTIONS=S
-(cd .. && gmake BRANCH="$branch" PARALLEL="" \
+(cd .. && gmake BRANCH="$branch" PARALLEL="" THREADING="no" \
svn-check-local \
svn-check-svn \
svn-check-neon \
svn-check-serf)
-grep -q "^FAIL:" tests.log* && exit 1
-grep -q "^XPASS:" tests.log* && exit 1
+grep -q "^FAIL:" tests.log.svn-check* && exit 1
+grep -q "^XPASS:" tests.log.svn-check* && exit 1
exit 0
Modified: subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svnclean.sh
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svnclean.sh?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svnclean.sh (original)
+++ subversion/branches/compressed-pristines/tools/buildbot/slaves/bb-openbsd/svnclean.sh Thu Aug 16 10:17:48 2012
@@ -24,9 +24,10 @@ set -x
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
(test -h ../svn-trunk || ln -s build ../svn-trunk)
-for i in 3 4 5 6 7; do
+for i in 6 7; do
(test -h ../svn-1.${i}.x || ln -s build ../svn-1.${i}.x)
done
svn update ../../unix-build
(test -h ../GNUmakefile || ln -s ../unix-build/Makefile.svn ../GNUmakefile)
(cd .. && gmake BRANCH="$branch" reset clean)
+rm -f tests.log* fails.log*
Modified: subversion/branches/compressed-pristines/tools/buildbot/slaves/centos/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/buildbot/slaves/centos/svnbuild.sh?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/buildbot/slaves/centos/svnbuild.sh (original)
+++ subversion/branches/compressed-pristines/tools/buildbot/slaves/centos/svnbuild.sh Thu Aug 16 10:17:48 2012
@@ -23,6 +23,7 @@
set -x
export MAKEFLAGS=-j4
+export PYTHON=/usr/local/python25/bin/python
echo "========= autogen.sh"
./autogen.sh || exit $?
@@ -30,15 +31,17 @@ echo "========= autogen.sh"
echo "========= configure"
# --with-junit=/usr/share/java/junit.jar
# --with-jdk=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 \
+# --without-berkeley-db \
./configure --enable-javahl --enable-maintainer-mode \
--with-neon=/usr \
+ --with-serf=/usr/local \
--with-apxs=/usr/sbin/apxs \
- --without-berkeley-db \
+ --with-berkeley-db \
--with-apr=/usr \
--with-apr-util=/usr \
--with-jdk=/opt/java/jdk1.6.0_15 \
--with-junit=/home/bt/junit-4.4.jar \
- --with-sqlite=/home/bt/sqlite-3.6.17/sqlite3.c \
+ --with-sqlite=/home/bt/packages/sqlite-amalgamation-dir/sqlite3.c \
|| exit $?
echo "========= make"
Modified: subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd (original)
+++ subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd Thu Aug 16 10:17:48 2012
@@ -67,6 +67,12 @@ for %%i in (*.dll) do (
)
popd
+svnversion . /1.7.x | find "S" > nul:
+IF ERRORLEVEL 1 (
+ ECHO --- Building 1.7.x: Skipping perl tests ---
+ EXIT /B %result%
+)
+
SET PERL5LIB=%PERL5LIB%;%TESTDIR%\swig\pl-release;
pushd subversion\bindings\swig\perl\native
perl -MExtUtils::Command::MM -e test_harness() t\*.t
Modified: subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd (original)
+++ subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd Thu Aug 16 10:17:48 2012
@@ -31,12 +31,13 @@ IF NOT EXIST "imports\" (
svn co --username guest --password "" http://sharpsvn.open.collab.net/svn/sharpsvn/trunk/imports imports
)
IF NOT EXIST build\imports.done (
+ svn up imports
copy /y imports\dev-default.build default.build
nant prep-dev %NANTARGS%
IF ERRORLEVEL 1 (
exit /B 1
)
- del release\bin\*svn* release\bin\_*.*
+ del release\bin\*svn* release\bin\_*.* 2>nul:
echo. > build\imports.done
)
@@ -58,6 +59,8 @@ taskkill /im svnsync.exe /f 2> nul:
taskkill /im httpd.exe /f 2> nul:
taskkill /im fs-test.exe /f 2> nul:
taskkill /im op-depth-test.exe /f 2> nul:
+taskkill /im java.exe /f 2> nul:
+taskkill /im perl.exe /f 2> nul:
IF EXIST "%TESTDIR%\tests\subversion\tests\cmdline\httpd\" (
rmdir /s /q "%TESTDIR%\tests\subversion\tests\cmdline\httpd"
)
Modified: subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-test.cmd
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-test.cmd?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-test.cmd (original)
+++ subversion/branches/compressed-pristines/tools/buildbot/slaves/win32-SharpSvn/svntest-test.cmd Thu Aug 16 10:17:48 2012
@@ -51,10 +51,10 @@ IF "%1" == "-r" (
SET SVN=1
SHIFT
) ELSE IF "%1" == "serf" (
- SET SERF=1
+ SET DAV=1
SHIFT
-) ELSE IF "%1" == "neon" (
- SET NEON=1
+) ELSE IF "%1" == "dav" (
+ SET DAV=1
SHIFT
) ELSE (
SET ARGS=!ARGS! -t %1
@@ -63,6 +63,7 @@ IF "%1" == "-r" (
IF NOT "%1" == "" GOTO next
+taskkill /im svnserve.exe httpd.exe /f 2> nul:
IF NOT EXIST "%TESTDIR%\bin" MKDIR "%TESTDIR%\bin"
xcopy /y /i ..\deps\release\bin\*.dll "%TESTDIR%\bin"
@@ -76,22 +77,13 @@ IF "%LOCAL%+%FSFS%" == "1+1" (
)
IF "%SVN%+%FSFS%" == "1+1" (
- taskkill /im svnserve.exe /f 2> nul:
- echo win-tests.py -c %PARALLEL% %MODE% -f fsfs -u svn://localhost %ARGS% "%TESTDIR%\tests"
- win-tests.py -c %PARALLEL% %MODE% -f fsfs -u svn://localhost %ARGS% "%TESTDIR%\tests"
+ echo win-tests.py -c %PARALLEL% %MODE% -f fsfs -u svn://127.0.0.1 %ARGS% "%TESTDIR%\tests"
+ win-tests.py -c %PARALLEL% %MODE% -f fsfs -u svn://127.0.0.1 %ARGS% "%TESTDIR%\tests"
IF ERRORLEVEL 1 EXIT /B 1
)
-IF "%SERF%+%FSFS%" == "1+1" (
- taskkill /im httpd.exe /f 2> nul:
- echo win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library serf --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://localhost:%TESTPORT% %ARGS% "%TESTDIR%\tests"
- win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library serf --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://localhost:%TESTPORT% %ARGS% "%TESTDIR%\tests"
- IF ERRORLEVEL 1 EXIT /B 1
-)
-
-IF "%NEON%+%FSFS%" == "1+1" (
- taskkill /im httpd.exe /f 2> nul:
- echo win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library neon --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://localhost:%TESTPORT% %ARGS% "%TESTDIR%\tests"
- win-tests.py -c %PARALLEL% %MODE% -f fsfs --http-library neon --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://localhost:%TESTPORT% %ARGS% "%TESTDIR%\tests"
+IF "%DAV%+%FSFS%" == "1+1" (
+ echo win-tests.py -c %PARALLEL% %MODE% -f fsfs --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://127.0.0.1:%TESTPORT% %ARGS% "%TESTDIR%\tests"
+ win-tests.py -c %PARALLEL% %MODE% -f fsfs --httpd-dir "%CD%\..\deps\release\httpd" --httpd-port %TESTPORT% -u http://127.0.0.1:%TESTPORT% %ARGS% "%TESTDIR%\tests"
IF ERRORLEVEL 1 EXIT /B 1
)
Modified: subversion/branches/compressed-pristines/tools/client-side/bash_completion
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/client-side/bash_completion?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/client-side/bash_completion (original)
+++ subversion/branches/compressed-pristines/tools/client-side/bash_completion Thu Aug 16 10:17:48 2012
@@ -479,7 +479,7 @@ _svn()
[[ $previous = '--extensions' || $previous = '-x' ]] && \
values="--unified --ignore-space-change \
- --ignore-all-space --ignore-eol-style"
+ --ignore-all-space --ignore-eol-style --show-c-functions"
[[ $previous = '--depth' ]] && \
values='empty files immediates infinity'
@@ -494,8 +494,8 @@ _svn()
# from svn help resolve
values='base working mine-full theirs-full'
else # checkout merge switch update
- # not implemented yet: mine-conflict theirs-conflict
- values='postpone base mine-full theirs-full edit launch'
+ values="postpone base mine-full theirs-full edit launch \
+ mine-conflict theirs-conflict"
fi
}
@@ -889,7 +889,8 @@ _svn()
--parents"
;;
patch)
- cmdOpts="$qOpts $pOpts --dry-run --ignore-whitespace --reverse-diff --strip"
+ cmdOpts="$qOpts $pOpts --dry-run --ignore-whitespace \
+ --reverse-diff --strip"
;;
propdel|pdel|pd)
cmdOpts="$qOpts -R --recursive $rOpts $pOpts $cOpts \
Propchange: subversion/branches/compressed-pristines/tools/client-side/mergeinfo-sanitizer.py
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/compressed-pristines/tools/dev/benchmarks/large_dirs/create_bigdir.sh
URL: http://svn.apache.org/viewvc/subversion/branches/compressed-pristines/tools/dev/benchmarks/large_dirs/create_bigdir.sh?rev=1373783&r1=1373782&r2=1373783&view=diff
==============================================================================
--- subversion/branches/compressed-pristines/tools/dev/benchmarks/large_dirs/create_bigdir.sh (original)
+++ subversion/branches/compressed-pristines/tools/dev/benchmarks/large_dirs/create_bigdir.sh Thu Aug 16 10:17:48 2012
@@ -124,6 +124,20 @@ run_svn_del() {
fi
}
+run_svn_del_many() {
+ printf "\n" > files.lst
+ sequence=`get_sequence 2 ${1}`
+ for i in $sequence; do
+ printf "$WC/${1}_c/$i\n" >> files.lst
+ done
+
+ if [ "${VALGRIND}" = "" ] ; then
+ time ${SVN} del -q --targets files.lst > /dev/null
+ else
+ ${VALGRIND} ${VG_OUTFILE}="${VG_TOOL}.out.del_many.$1" ${SVN} del -q --targets files.lst > /dev/null
+ fi
+}
+
run_svn_ci() {
if [ "${VALGRIND}" = "" ] ; then
time ${SVN} ci $WC/$1 -m "" -q > /dev/null
@@ -185,12 +199,13 @@ while [ $FILECOUNT -lt $MAXCOUNT ]; do
run_svn_del ${FILECOUNT} 1
printf "\tDeleting files ... \t"
- time sh -c "
- for i in $sequence; do
- ${SVN} del $WC/${FILECOUNT}_c/\$i -q
- done "
+ if [ "$FILECOUNT" == "1" ] ; then
+ printf " skipped (0 files to delete)\n"
+ else
+ run_svn_del_many ${FILECOUNT}
+ fi
- printf "\tCommit deletions ...\t"
+ printf "\tCommit deletions ..\t"
run_svn_ci ${FILECOUNT}_c del
rm -rf $WC