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
