You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/11/27 12:52:46 UTC
svn commit: r1546002 [34/39] - in /subversion/branches/verify-keep-going: ./
build/ build/ac-macros/ build/generator/ build/generator/swig/
build/generator/templates/ build/win32/ contrib/client-side/emacs/
contrib/server-side/ contrib/server-side/svnc...
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_diff/diff-diff3-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_diff/diff-diff3-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_diff/diff-diff3-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_diff/diff-diff3-test.c Wed Nov 27 11:52:35 2013
@@ -137,9 +137,9 @@ make_file(const char *filename,
"merge-FILENAME1-FILENAME2-FILENAME3". The conflict style STYLE is
used. */
static svn_error_t *
-three_way_merge(const char *filename1,
- const char *filename2,
- const char *filename3,
+three_way_merge(const char *base_filename1,
+ const char *base_filename2,
+ const char *base_filename3,
const char *contents1,
const char *contents2,
const char *contents3,
@@ -152,8 +152,12 @@ three_way_merge(const char *filename1,
apr_file_t *output;
svn_stream_t *ostream;
svn_stringbuf_t *actual;
- char *merge_name = apr_psprintf(pool, "merge-%s-%s-%s",
- filename1, filename2, filename3);
+ char *merge_name = apr_psprintf(
+ pool, "merge-%s-%s-%s", base_filename1, base_filename2, base_filename3);
+
+ const char *filename1 = svn_test_data_path(base_filename1, pool);
+ const char *filename2 = svn_test_data_path(base_filename2, pool);
+ const char *filename3 = svn_test_data_path(base_filename3, pool);
/* We have an EXPECTED string we can match, because we don't support
any other combinations (yet) than the ones above. */
@@ -171,9 +175,9 @@ three_way_merge(const char *filename1,
SVN_ERR(svn_diff_mem_string_output_merge2
(ostream, diff, original, modified, latest,
- apr_psprintf(pool, "||||||| %s", filename1),
- apr_psprintf(pool, "<<<<<<< %s", filename2),
- apr_psprintf(pool, ">>>>>>> %s", filename3),
+ apr_psprintf(pool, "||||||| %s", base_filename1),
+ apr_psprintf(pool, "<<<<<<< %s", base_filename2),
+ apr_psprintf(pool, ">>>>>>> %s", base_filename3),
NULL, /* separator */
style, pool));
@@ -195,17 +199,20 @@ three_way_merge(const char *filename1,
APR_OS_DEFAULT, pool));
ostream = svn_stream_from_aprfile2(output, FALSE, pool);
- SVN_ERR(svn_diff_file_output_merge2(ostream, diff,
- filename1, filename2, filename3,
- NULL, NULL, NULL, NULL,
- style,
- pool));
+ SVN_ERR(svn_diff_file_output_merge2(
+ ostream, diff,
+ filename1, filename2, filename3,
+ apr_psprintf(pool, "||||||| %s", base_filename1),
+ apr_psprintf(pool, "<<<<<<< %s", base_filename2),
+ apr_psprintf(pool, ">>>>>>> %s", base_filename3),
+ NULL, /* separator */
+ style, pool));
SVN_ERR(svn_stream_close(ostream));
SVN_ERR(svn_stringbuf_from_file2(&actual, merge_name, pool));
if (strcmp(actual->data, expected))
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
"failed merging diff '%s' to '%s' into '%s'",
- filename1, filename2, filename3);
+ base_filename1, base_filename2, base_filename3);
SVN_ERR(svn_io_remove_file2(filename1, TRUE, pool));
if (strcmp(filename1, filename2))
@@ -227,8 +234,8 @@ three_way_merge(const char *filename1,
preserved otherwise. If the diff fails the diff output will be in
a file called "diff-FILENAME1-FILENAME2". */
static svn_error_t *
-two_way_diff(const char *filename1,
- const char *filename2,
+two_way_diff(const char *base_filename1,
+ const char *base_filename2,
const char *contents1,
const char *contents2,
const char *expected,
@@ -239,7 +246,13 @@ two_way_diff(const char *filename1,
apr_file_t *output;
svn_stream_t *ostream;
svn_stringbuf_t *actual;
- char *diff_name = apr_psprintf(pool, "diff-%s-%s", filename1, filename2);
+ char *diff_name = (char *)apr_pstrdup(
+ pool, svn_test_data_path(
+ apr_psprintf(pool, "diff-%s-%s", base_filename1, base_filename2),
+ pool));
+
+ const char *filename1 = svn_test_data_path(base_filename1, pool);
+ const char *filename2 = svn_test_data_path(base_filename2, pool);
/* Some of the tests have lots of lines, although not much data as
the lines are short, and the in-memory diffs allocate a lot of
@@ -261,7 +274,7 @@ two_way_diff(const char *filename1,
ostream = svn_stream_from_stringbuf(actual, pool);
SVN_ERR(svn_diff_mem_string_output_unified(ostream, diff,
- filename1, filename2,
+ base_filename1, base_filename2,
SVN_APR_LOCALE_CHARSET,
original, modified, subpool));
svn_pool_clear(subpool);
@@ -286,7 +299,7 @@ two_way_diff(const char *filename1,
ostream = svn_stream_from_aprfile2(output, FALSE, pool);
SVN_ERR(svn_diff_file_output_unified2(ostream, diff,
filename1, filename2,
- filename1, filename2,
+ base_filename1, base_filename2,
SVN_APR_LOCALE_CHARSET, pool));
SVN_ERR(svn_stream_close(ostream));
@@ -312,16 +325,16 @@ two_way_diff(const char *filename1,
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
"failed comparing '%s' and '%s'"
" (memory and file results are different)",
- filename1, filename2);
+ base_filename1, base_filename2);
}
/* May as well do the trivial merges while we are here */
- SVN_ERR(three_way_merge(filename1, filename2, filename1,
+ SVN_ERR(three_way_merge(base_filename1, base_filename2, base_filename1,
contents1, contents2, contents1, contents2, NULL,
svn_diff_conflict_display_modified_latest,
subpool));
svn_pool_clear(subpool);
- SVN_ERR(three_way_merge(filename2, filename1, filename2,
+ SVN_ERR(three_way_merge(base_filename2, base_filename1, base_filename2,
contents2, contents1, contents2, contents1, NULL,
svn_diff_conflict_display_modified_latest,
subpool));
@@ -2141,14 +2154,20 @@ test_diff4(apr_pool_t *pool)
" /* line plus-four of context */\n"
" /* line plus-five of context */\n"
"}\n");
- SVN_ERR(make_file("B2", B2.data, pool));
- SVN_ERR(make_file("T1", T1.data, pool));
- SVN_ERR(make_file("T2", T2.data, pool));
- SVN_ERR(make_file("T3", T3.data, pool));
+
+ const char *B2_path = svn_test_data_path("B2", pool);
+ const char *T1_path = svn_test_data_path("T1", pool);
+ const char *T2_path = svn_test_data_path("T2", pool);
+ const char *T3_path = svn_test_data_path("T3", pool);
+
+ SVN_ERR(make_file(B2_path, B2.data, pool));
+ SVN_ERR(make_file(T1_path, T1.data, pool));
+ SVN_ERR(make_file(T2_path, T2.data, pool));
+ SVN_ERR(make_file(T3_path, T3.data, pool));
/* Usage: tools/diff/diff4 <mine> <older> <yours> <ancestor> */
/* tools/diff/diff4 B2 T2 T3 T1 > B2new */
- SVN_ERR(svn_diff_file_diff4(&diff, "T2", "B2", "T3", "T1", pool));
+ SVN_ERR(svn_diff_file_diff4(&diff, T2_path, B2_path, T3_path, T1_path, pool));
/* Sanity. */
SVN_TEST_ASSERT(! svn_diff_contains_conflicts(diff));
@@ -2161,7 +2180,7 @@ test_diff4(apr_pool_t *pool)
svn_stringbuf_create_ensure(417, pool), /* 417 == wc -c < B2new */
pool);
SVN_ERR(svn_diff_file_output_merge(actual, diff,
- "T2", "B2", "T3",
+ T2_path, B2_path, T3_path,
NULL, NULL, NULL, NULL,
FALSE,
FALSE,
@@ -2179,12 +2198,16 @@ random_trivial_merge(apr_pool_t *pool)
int i;
apr_pool_t *subpool = svn_pool_create(pool);
+ const char *base_filename1 = "trivial1";
+ const char *base_filename2 = "trivial2";
+
+ const char *filename1 = svn_test_data_path(base_filename1, pool);
+ const char *filename2 = svn_test_data_path(base_filename2, pool);
+
seed_val();
for (i = 0; i < 5; ++i)
{
- const char *filename1 = "trivial1";
- const char *filename2 = "trivial2";
int min_lines = 1000;
int max_lines = 1100;
int var_lines = 50;
@@ -2201,12 +2224,12 @@ random_trivial_merge(apr_pool_t *pool)
SVN_ERR(svn_stringbuf_from_file2(&contents1, filename1, subpool));
SVN_ERR(svn_stringbuf_from_file2(&contents2, filename2, subpool));
- SVN_ERR(three_way_merge(filename1, filename2, filename1,
+ SVN_ERR(three_way_merge(base_filename1, base_filename2, base_filename1,
contents1->data, contents2->data,
contents1->data, contents2->data, NULL,
svn_diff_conflict_display_modified_latest,
subpool));
- SVN_ERR(three_way_merge(filename2, filename1, filename2,
+ SVN_ERR(three_way_merge(base_filename2, base_filename1, base_filename2,
contents2->data, contents1->data,
contents2->data, contents1->data, NULL,
svn_diff_conflict_display_modified_latest,
@@ -2231,14 +2254,20 @@ random_three_way_merge(apr_pool_t *pool)
int i;
apr_pool_t *subpool = svn_pool_create(pool);
+ const char *base_filename1 = "original";
+ const char *base_filename2 = "modified1";
+ const char *base_filename3 = "modified2";
+ const char *base_filename4 = "combined";
+
+ const char *filename1 = svn_test_data_path(base_filename1, pool);
+ const char *filename2 = svn_test_data_path(base_filename2, pool);
+ const char *filename3 = svn_test_data_path(base_filename3, pool);
+ const char *filename4 = svn_test_data_path(base_filename4, pool);
+
seed_val();
for (i = 0; i < 20; ++i)
{
- const char *filename1 = "original";
- const char *filename2 = "modified1";
- const char *filename3 = "modified2";
- const char *filename4 = "combined";
svn_stringbuf_t *original, *modified1, *modified2, *combined;
/* Pick NUM_LINES large enough so that the 'strip identical suffix' code
gets triggered with reasonable probability. (Currently it ignores
@@ -2272,12 +2301,12 @@ random_three_way_merge(apr_pool_t *pool)
SVN_ERR(svn_stringbuf_from_file2(&modified2, filename3, pool));
SVN_ERR(svn_stringbuf_from_file2(&combined, filename4, pool));
- SVN_ERR(three_way_merge(filename1, filename2, filename3,
+ SVN_ERR(three_way_merge(base_filename1, base_filename2, base_filename3,
original->data, modified1->data,
modified2->data, combined->data, NULL,
svn_diff_conflict_display_modified_latest,
subpool));
- SVN_ERR(three_way_merge(filename1, filename3, filename2,
+ SVN_ERR(three_way_merge(base_filename1, base_filename3, base_filename2,
original->data, modified2->data,
modified1->data, combined->data, NULL,
svn_diff_conflict_display_modified_latest,
@@ -2303,14 +2332,20 @@ merge_with_part_already_present(apr_pool
int i;
apr_pool_t *subpool = svn_pool_create(pool);
+ const char *base_filename1 = "pap-original";
+ const char *base_filename2 = "pap-modified1";
+ const char *base_filename3 = "pap-modified2";
+ const char *base_filename4 = "pap-combined";
+
+ const char *filename1 = svn_test_data_path(base_filename1, pool);
+ const char *filename2 = svn_test_data_path(base_filename2, pool);
+ const char *filename3 = svn_test_data_path(base_filename3, pool);
+ const char *filename4 = svn_test_data_path(base_filename4, pool);
+
seed_val();
for (i = 0; i < 20; ++i)
{
- const char *filename1 = "pap-original";
- const char *filename2 = "pap-modified1";
- const char *filename3 = "pap-modified2";
- const char *filename4 = "pap-combined";
svn_stringbuf_t *original, *modified1, *modified2, *combined;
int num_lines = 200, num_src = 20, num_dst = 20;
svn_boolean_t *lines = apr_pcalloc(subpool, sizeof(*lines) * num_lines);
@@ -2345,12 +2380,12 @@ merge_with_part_already_present(apr_pool
SVN_ERR(svn_stringbuf_from_file2(&modified2, filename3, pool));
SVN_ERR(svn_stringbuf_from_file2(&combined, filename4, pool));
- SVN_ERR(three_way_merge(filename1, filename2, filename3,
+ SVN_ERR(three_way_merge(base_filename1, base_filename2, base_filename3,
original->data, modified1->data,
modified2->data, combined->data, NULL,
svn_diff_conflict_display_modified_latest,
subpool));
- SVN_ERR(three_way_merge(filename1, filename3, filename2,
+ SVN_ERR(three_way_merge(base_filename1, base_filename3, base_filename2,
original->data, modified2->data,
modified1->data, combined->data, NULL,
svn_diff_conflict_display_modified_latest,
@@ -2915,6 +2950,9 @@ two_way_issue_3362_v2(apr_pool_t *pool)
/* ========================================================================== */
+
+int svn_test_max_threads = 4;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_diff/parse-diff-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_diff/parse-diff-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_diff/parse-diff-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_diff/parse-diff-test.c Wed Nov 27 11:52:35 2013
@@ -961,6 +961,9 @@ test_parse_unidiff_lacking_trailing_eol(
/* ========================================================================== */
+
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/fs-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/fs-test.c Wed Nov 27 11:52:35 2013
@@ -27,6 +27,7 @@
#include "../svn_test.h"
+#include "svn_private_config.h"
#include "svn_hash.h"
#include "svn_pools.h"
#include "svn_time.h"
@@ -1019,7 +1020,7 @@ static svn_error_t *
check_entry_present(svn_fs_root_t *root, const char *path,
const char *name, apr_pool_t *pool)
{
- svn_boolean_t present;
+ svn_boolean_t present = FALSE;
SVN_ERR(check_entry(root, path, name, &present, pool));
if (! present)
@@ -1036,7 +1037,7 @@ static svn_error_t *
check_entry_absent(svn_fs_root_t *root, const char *path,
const char *name, apr_pool_t *pool)
{
- svn_boolean_t present;
+ svn_boolean_t present = TRUE;
SVN_ERR(check_entry(root, path, name, &present, pool));
if (present)
@@ -5048,15 +5049,27 @@ test_fs_info_format(const svn_test_opts_
int fs_format;
svn_version_t *supports_version;
svn_version_t v1_5_0 = {1, 5, 0, ""};
+ svn_version_t v1_9_0 = {1, 9, 0, ""};
svn_test_opts_t opts2;
+ svn_boolean_t is_fsx = strcmp(opts->fs_type, "fsx") == 0;
opts2 = *opts;
- opts2.server_minor_version = 5;
+ opts2.server_minor_version = is_fsx ? 9 : 5;
SVN_ERR(svn_test__create_fs(&fs, "test-fs-format-info", &opts2, pool));
SVN_ERR(svn_fs_info_format(&fs_format, &supports_version, fs, pool, pool));
- SVN_TEST_ASSERT(fs_format == 3); /* happens to be the same for FSFS and BDB */
- SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_5_0));
+
+ if (is_fsx)
+ {
+ SVN_TEST_ASSERT(fs_format == 1);
+ SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_9_0));
+ }
+ else
+ {
+ /* happens to be the same for FSFS and BDB */
+ SVN_TEST_ASSERT(fs_format == 3);
+ SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_5_0));
+ }
return SVN_NO_ERROR;
}
@@ -5065,6 +5078,8 @@ test_fs_info_format(const svn_test_opts_
/* The test table. */
+int svn_test_max_threads = 8;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
@@ -5080,6 +5095,12 @@ struct svn_test_descriptor_t test_funcs[
"check that transaction names are not reused"),
SVN_TEST_OPTS_PASS(write_and_read_file,
"write and read a file's contents"),
+ SVN_TEST_OPTS_PASS(almostmedium_file_integrity,
+ "create and modify almostmedium file"),
+ SVN_TEST_OPTS_PASS(medium_file_integrity,
+ "create and modify medium file"),
+ SVN_TEST_OPTS_PASS(large_file_integrity,
+ "create and modify large file"),
SVN_TEST_OPTS_PASS(create_mini_tree_transaction,
"test basic file and subdirectory creation"),
SVN_TEST_OPTS_PASS(create_greek_tree_transaction,
@@ -5111,12 +5132,6 @@ struct svn_test_descriptor_t test_funcs[
"check old revisions"),
SVN_TEST_OPTS_PASS(check_all_revisions,
"after each commit, check all revisions"),
- SVN_TEST_OPTS_PASS(almostmedium_file_integrity,
- "create and modify almostmedium file"),
- SVN_TEST_OPTS_PASS(medium_file_integrity,
- "create and modify medium file"),
- SVN_TEST_OPTS_PASS(large_file_integrity,
- "create and modify large file"),
SVN_TEST_OPTS_PASS(check_root_revision,
"ensure accurate storage of root node"),
SVN_TEST_OPTS_PASS(test_node_created_rev,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/locks-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/locks-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/locks-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_fs/locks-test.c Wed Nov 27 11:52:35 2013
@@ -608,9 +608,9 @@ lock_expiration(const svn_test_opts_t *o
SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
SVN_ERR(svn_fs_set_access(fs, access));
- /* Lock /A/D/G/rho, with an expiration 3 seconds from now. */
+ /* Lock /A/D/G/rho, with an expiration 2 seconds from now. */
SVN_ERR(svn_fs_lock(&mylock, fs, "/A/D/G/rho", NULL, "", 0,
- apr_time_now() + apr_time_from_sec(3),
+ apr_time_now() + apr_time_from_sec(2),
SVN_INVALID_REVNUM, FALSE, pool));
/* Become nobody. */
@@ -640,9 +640,9 @@ lock_expiration(const svn_test_opts_t *o
num_expected_paths, pool));
}
- /* Sleep 5 seconds, so the lock auto-expires. Anonymous commit
+ /* Sleep 2 seconds, so the lock auto-expires. Anonymous commit
should then succeed. */
- apr_sleep(apr_time_from_sec(5));
+ apr_sleep(apr_time_from_sec(3));
/* Verify that the lock auto-expired even in the recursive case. */
{
@@ -792,9 +792,13 @@ lock_out_of_date(const svn_test_opts_t *
/* The test table. */
+int svn_test_max_threads = 2;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
+ SVN_TEST_OPTS_PASS(lock_expiration,
+ "test that locks can expire"),
SVN_TEST_OPTS_PASS(lock_only,
"lock only"),
SVN_TEST_OPTS_PASS(lookup_lock_by_path,
@@ -811,8 +815,6 @@ struct svn_test_descriptor_t test_funcs[
"test that locking is enforced in final commit step"),
SVN_TEST_OPTS_PASS(lock_dir_propchange,
"dir propchange can be committed with locked child"),
- SVN_TEST_OPTS_PASS(lock_expiration,
- "test that locks can expire"),
SVN_TEST_OPTS_PASS(lock_break_steal_refresh,
"breaking, stealing, refreshing a lock"),
SVN_TEST_OPTS_PASS(lock_out_of_date,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/changes-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/changes-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/changes-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/changes-test.c Wed Nov 27 11:52:35 2013
@@ -193,7 +193,7 @@ changes_fetch_raw(const svn_test_opts_t
struct changes_args args;
/* Create a new fs and repos */
- SVN_ERR(svn_test__create_bdb_fs(&fs, "test-repo-changes-fetch", opts,
+ SVN_ERR(svn_test__create_bdb_fs(&fs, "test-repo-changes-fetch-raw", opts,
pool));
/* First, verify that we can request changes for an arbitrary key
@@ -903,6 +903,8 @@ changes_bad_sequences(const svn_test_opt
/* The test table. */
+int svn_test_max_threads = 4;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/fs-base-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/fs-base-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/fs-base-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/fs-base-test.c Wed Nov 27 11:52:35 2013
@@ -124,7 +124,7 @@ static svn_error_t *
check_entry_present(svn_fs_root_t *root, const char *path,
const char *name, apr_pool_t *pool)
{
- svn_boolean_t present;
+ svn_boolean_t present = FALSE;
SVN_ERR(check_entry(root, path, name, &present, pool));
if (! present)
@@ -141,7 +141,7 @@ static svn_error_t *
check_entry_absent(svn_fs_root_t *root, const char *path,
const char *name, apr_pool_t *pool)
{
- svn_boolean_t present;
+ svn_boolean_t present = TRUE;
SVN_ERR(check_entry(root, path, name, &present, pool));
if (present)
@@ -213,7 +213,7 @@ check_id(svn_fs_t *fs, const svn_fs_id_t
static svn_error_t *
check_id_present(svn_fs_t *fs, const svn_fs_id_t *id, apr_pool_t *pool)
{
- svn_boolean_t present;
+ svn_boolean_t present = FALSE;
SVN_ERR(check_id(fs, id, &present, pool));
if (! present)
@@ -233,7 +233,7 @@ check_id_present(svn_fs_t *fs, const svn
static svn_error_t *
check_id_absent(svn_fs_t *fs, const svn_fs_id_t *id, apr_pool_t *pool)
{
- svn_boolean_t present;
+ svn_boolean_t present = TRUE;
SVN_ERR(check_id(fs, id, &present, pool));
if (present)
@@ -1519,6 +1519,8 @@ key_test(apr_pool_t *pool)
/* The test table. */
+int svn_test_max_threads = 2;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/strings-reps-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/strings-reps-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/strings-reps-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_base/strings-reps-test.c Wed Nov 27 11:52:35 2013
@@ -612,7 +612,7 @@ write_null_string(const svn_test_opts_t
/* Create a new fs and repos */
SVN_ERR(svn_test__create_bdb_fs
- (&fs, "test-repo-test-strings", opts,
+ (&fs, "test-repo-write-null-string", opts,
pool));
args.fs = fs;
@@ -732,6 +732,8 @@ copy_string(const svn_test_opts_t *opts,
/* The test table. */
+int svn_test_max_threads = 3;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Propchange: subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_fs/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Nov 27 11:52:35 2013
@@ -3,10 +3,11 @@ Release
.libs
test-repo-*
fs-pack-test
+fs-fs-pack-test
test-get-set-revprop-packed-fs
+get_set_multiple_huge_revprops_packed_fs
*.o
*.lo
*~
.*~
*.exe
-
Propchange: subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Nov 27 11:52:35 2013
@@ -0,0 +1,12 @@
+Debug
+Release
+.libs
+test-repo-*
+fs-x-pack-test
+string-table-test
+test-get-set-revprop-packed-fs
+*.o
+*.lo
+*~
+.*~
+*.exe
Propchange: subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Nov 27 11:52:35 2013
@@ -0,0 +1,81 @@
+/subversion/branches/1.5.x-r30215/subversion/tests/libsvn_fs_x:870312
+/subversion/branches/1.7.x-fs-verify/subversion/tests/libsvn_fs_x:1146708,1161180
+/subversion/branches/10Gb/subversion/tests/libsvn_fs_x:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955
+/subversion/branches/atomic-revprop/subversion/tests/libsvn_fs_x:965046-1000689
+/subversion/branches/auto-props-sdc/subversion/tests/libsvn_fs_x:1384106-1401643
+/subversion/branches/bdb-reverse-deltas/subversion/tests/libsvn_fs_x:872050-872529
+/subversion/branches/cache-server/subversion/tests/libsvn_fs_x:1458643-1476567
+/subversion/branches/diff-callbacks3/subversion/tests/libsvn_fs_x:870059-870761
+/subversion/branches/diff-optimizations/subversion/tests/libsvn_fs_x:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_fs_x:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/tests/libsvn_fs_x:870728-871118
+/subversion/branches/double-delete/subversion/tests/libsvn_fs_x:870511-872970
+/subversion/branches/ev2-export/subversion/tests/libsvn_fs_x:1325914,1332738,1413107
+/subversion/branches/explore-wc/subversion/tests/libsvn_fs_x:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
+/subversion/branches/file-externals/subversion/tests/libsvn_fs_x:871779-873302
+/subversion/branches/fs-rep-sharing/subversion/tests/libsvn_fs_x:869036-873803
+/subversion/branches/fsfs-format7/subversion/tests/libsvn_fs_x:1426304,1430673,1433848,1438408,1438982,1441129,1442051,1442068,1442504,1442910,1443171,1443803,1444690,1444693,1444695,1445040,1445080,1446103,1451129,1453590,1454307,1460579,1461851,1461865,1462837,1462904,1463120,1467362,1467382,1469487,1471208,1477166,1478055,1481447,1489817,1489949,1490673-1490674,1491784,1493042,1498029,1498103,1498155,1500054,1507729-1507731,1507735-1507736
+/subversion/branches/fsfs-improvements/subversion/tests/libsvn_fs_x:1499981-1517476
+/subversion/branches/fsfs-pack/subversion/tests/libsvn_fs_x:873717-874575
+/subversion/branches/fsx/subversion/tests/libsvn_fs_x:1507845-1509914
+/subversion/branches/gnome-keyring/subversion/tests/libsvn_fs_x:870558-871410
+/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_x:1005036-1150766
+/subversion/branches/gtest_addition/subversion/tests/libsvn_fs_x:1452117-1502138
+/subversion/branches/http-protocol-v2/subversion/tests/libsvn_fs_x:874395-876041
+/subversion/branches/in-memory-cache/subversion/tests/libsvn_fs_x:869829-871452
+/subversion/branches/in-repo-authz/subversion/tests/libsvn_fs_x:1414342-1424779
+/subversion/branches/inheritable-props/subversion/tests/libsvn_fs_x:1297080-1395089
+/subversion/branches/integrate-cache-item-serialization/subversion/tests/libsvn_fs_x:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/subversion/tests/libsvn_fs_x:998649-998852
+/subversion/branches/integrate-compression-level/subversion/tests/libsvn_fs_x:1068651-1072287
+/subversion/branches/integrate-io-improvements/subversion/tests/libsvn_fs_x:1068684-1072297
+/subversion/branches/integrate-is-cachable/subversion/tests/libsvn_fs_x:1072568-1074082
+/subversion/branches/integrate-partial-getter/subversion/tests/libsvn_fs_x:1072558-1076552
+/subversion/branches/integrate-readline-speedup/subversion/tests/libsvn_fs_x:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/subversion/tests/libsvn_fs_x:1068695-1072516
+/subversion/branches/integrate-string-improvements/subversion/tests/libsvn_fs_x:1068251-1190617
+/subversion/branches/integrate-txdelta-caching/subversion/tests/libsvn_fs_x:1072541-1078213
+/subversion/branches/issue-2779-dev/subversion/tests/libsvn_fs_x:965496-984198
+/subversion/branches/issue-2843-dev/subversion/tests/libsvn_fs_x:871432-874179
+/subversion/branches/issue-3000/subversion/tests/libsvn_fs_x:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/subversion/tests/libsvn_fs_x:873375-874084
+/subversion/branches/issue-3148-dev/subversion/tests/libsvn_fs_x:875193-875204
+/subversion/branches/issue-3220-dev/subversion/tests/libsvn_fs_x:872210-872226
+/subversion/branches/issue-3242-dev/subversion/tests/libsvn_fs_x:879653-896436
+/subversion/branches/issue-3334-dirs/subversion/tests/libsvn_fs_x:875156-875867
+/subversion/branches/issue-3975/subversion/tests/libsvn_fs_x:1152931-1160746
+/subversion/branches/issue-4116-dev/subversion/tests/libsvn_fs_x:1424719-1425040
+/subversion/branches/issue-4194-dev/subversion/tests/libsvn_fs_x:1410507-1414880
+/subversion/branches/javahl-ra/subversion/tests/libsvn_fs_x:991978-1494640
+/subversion/branches/kwallet/subversion/tests/libsvn_fs_x:870785-871314
+/subversion/branches/log-g-performance/subversion/tests/libsvn_fs_x:870941-871032
+/subversion/branches/merge-skips-obstructions/subversion/tests/libsvn_fs_x:874525-874615
+/subversion/branches/multi-layer-moves/subversion/tests/libsvn_fs_x:1239019-1300930
+/subversion/branches/nfc-nfd-aware-client/subversion/tests/libsvn_fs_x:870276,870376
+/subversion/branches/node_pool/subversion/tests/libsvn_fs_x:1304828-1305388
+/subversion/branches/performance/subversion/tests/libsvn_fs_x:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232,1029335-10293
36,1029339-1029340,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
+/subversion/branches/py-tests-as-modules/subversion/tests/libsvn_fs_x:956579-1033052
+/subversion/branches/ra_serf-digest-authn/subversion/tests/libsvn_fs_x:875693-876404
+/subversion/branches/reintegrate-improvements/subversion/tests/libsvn_fs_x:873853-874164
+/subversion/branches/revprop-cache/subversion/tests/libsvn_fs_x:1298521-1326293
+/subversion/branches/revprop-packing/subversion/tests/libsvn_fs_x:1143907,1143971,1143997,1144017,1144499,1144568,1146145
+/subversion/branches/subtree-mergeinfo/subversion/tests/libsvn_fs_x:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/subversion/tests/libsvn_fs_x:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/subversion/tests/libsvn_fs_x:918519-934609
+/subversion/branches/svn_mutex/subversion/tests/libsvn_fs_x:1141683-1182099
+/subversion/branches/svnpatch-diff/subversion/tests/libsvn_fs_x:865738-876477
+/subversion/branches/svnraisetc/subversion/tests/libsvn_fs_x:874709-875149
+/subversion/branches/svnserve-logging/subversion/tests/libsvn_fs_x:869828-870893
+/subversion/branches/tc-issue-3334/subversion/tests/libsvn_fs_x:874697-874773
+/subversion/branches/tc-merge-notify/subversion/tests/libsvn_fs_x:874017-874062
+/subversion/branches/tc-resolve/subversion/tests/libsvn_fs_x:874191-874239
+/subversion/branches/tc_url_rev/subversion/tests/libsvn_fs_x:874351-874483
+/subversion/branches/tree-conflicts/subversion/tests/libsvn_fs_x:868291-873154
+/subversion/branches/tree-conflicts-notify/subversion/tests/libsvn_fs_x:873926-874008
+/subversion/branches/tristate-chunked-request/subversion/tests/libsvn_fs_x:1502394-1502681
+/subversion/branches/tweak-build-take-two/subversion/tests/libsvn_fs_x:1424288-1425049,1425051-1425613
+/subversion/branches/uris-as-urls/subversion/tests/libsvn_fs_x:1060426-1064427
+/subversion/branches/verify-at-commit/subversion/tests/libsvn_fs_x:1462039-1462408
+/subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_x:1439280-1492639
+/subversion/branches/wc-collate-path/subversion/tests/libsvn_fs_x:1402685-1480384
+/subversion/trunk/subversion/tests/libsvn_fs_x:1414756-1545994
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_ra/ra-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_ra/ra-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_ra/ra-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_ra/ra-test.c Wed Nov 27 11:52:35 2013
@@ -25,17 +25,23 @@
#include <apr_general.h>
#include <apr_pools.h>
+#include <apr_file_io.h>
#define SVN_DEPRECATED
#include "svn_error.h"
#include "svn_delta.h"
#include "svn_ra.h"
+#include "svn_pools.h"
+#include "svn_cmdline.h"
+#include "svn_dirent_uri.h"
#include "../svn_test.h"
#include "../svn_test_fs.h"
#include "../../libsvn_ra_local/ra_local.h"
+static const char tunnel_repos_name[] = "test-repo-tunnel";
+
/*-------------------------------------------------------------------*/
/** Helper routines. **/
@@ -58,7 +64,7 @@ make_and_open_local_repos(svn_ra_session
SVN_ERR(svn_uri_get_file_url_from_dirent(&url, repos_name, pool));
- SVN_ERR(svn_ra_open3(session, url, NULL, cbtable, NULL, NULL, pool));
+ SVN_ERR(svn_ra_open4(session, NULL, url, NULL, cbtable, NULL, NULL, pool));
return SVN_NO_ERROR;
}
@@ -88,6 +94,91 @@ commit_changes(svn_ra_session_t *session
return SVN_NO_ERROR;
}
+static svn_boolean_t last_tunnel_check;
+static int tunnel_open_count;
+static void *check_tunnel_baton;
+static void *open_tunnel_context;
+
+static svn_boolean_t
+check_tunnel(void *tunnel_baton, const char *tunnel_name)
+{
+ if (tunnel_baton != check_tunnel_baton)
+ abort();
+ last_tunnel_check = (0 == strcmp(tunnel_name, "test"));
+ return last_tunnel_check;
+}
+
+static svn_error_t *
+open_tunnel(apr_file_t **request, apr_file_t **response,
+ void **tunnel_context, void *tunnel_baton,
+ const char *tunnel_name, const char *user,
+ const char *hostname, int port,
+ apr_pool_t *pool)
+{
+ svn_node_kind_t kind;
+ apr_proc_t *proc;
+ apr_procattr_t *attr;
+ apr_status_t status;
+ const char *args[] = { "svnserve", "-t", "-r", ".", NULL };
+ const char *svnserve;
+
+ SVN_TEST_ASSERT(tunnel_baton == check_tunnel_baton);
+
+ SVN_ERR(svn_dirent_get_absolute(&svnserve, "../../svnserve/svnserve", pool));
+#ifdef WIN32
+ svnserve = apr_pstrcat(pool, svnserve, ".exe", SVN_VA_NULL);
+#endif
+ SVN_ERR(svn_io_check_path(svnserve, &kind, pool));
+ if (kind != svn_node_file)
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "Could not find svnserve at %s",
+ svn_dirent_local_style(svnserve, pool));
+
+ status = apr_procattr_create(&attr, pool);
+ if (status == APR_SUCCESS)
+ status = apr_procattr_io_set(attr, 1, 1, 0);
+ if (status == APR_SUCCESS)
+ status = apr_procattr_cmdtype_set(attr, APR_PROGRAM);
+ proc = apr_palloc(pool, sizeof(*proc));
+ if (status == APR_SUCCESS)
+ status = apr_proc_create(proc,
+ svn_dirent_local_style(svnserve, pool),
+ args, NULL, attr, pool);
+ if (status != APR_SUCCESS)
+ return svn_error_wrap_apr(status, "Could not run svnserve");
+#ifdef WIN32
+ apr_pool_note_subprocess(pool, proc, APR_KILL_NEVER);
+#else
+ apr_pool_note_subprocess(pool, proc, APR_KILL_ONLY_ONCE);
+#endif
+
+ /* APR pipe objects inherit by default. But we don't want the
+ * tunnel agent's pipes held open by future child processes
+ * (such as other ra_svn sessions), so turn that off. */
+ apr_file_inherit_unset(proc->in);
+ apr_file_inherit_unset(proc->out);
+
+ *request = proc->in;
+ *response = proc->out;
+ open_tunnel_context = *tunnel_context = &kind;
+ ++tunnel_open_count;
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+close_tunnel(void *tunnel_context, void *tunnel_baton,
+ const char *tunnel_name, const char *user,
+ const char *hostname, int port)
+{
+ SVN_TEST_ASSERT(tunnel_context == open_tunnel_context);
+ SVN_TEST_ASSERT(tunnel_baton == check_tunnel_baton);
+ --tunnel_open_count;
+ return SVN_NO_ERROR;
+}
+
+
+
+
/*-------------------------------------------------------------------*/
/** The tests **/
@@ -151,12 +242,101 @@ location_segments_test(const svn_test_op
}
+/* Test ra_svn tunnel callbacks. */
+
+static svn_error_t *
+check_tunnel_callback_test(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_ra_callbacks2_t *cbtable;
+ svn_ra_session_t *session;
+ svn_error_t *err;
+
+ SVN_ERR(svn_ra_create_callbacks(&cbtable, pool));
+ cbtable->check_tunnel_func = check_tunnel;
+ cbtable->open_tunnel_func = open_tunnel;
+ cbtable->close_tunnel_func = close_tunnel;
+ cbtable->tunnel_baton = check_tunnel_baton = &cbtable;
+ SVN_ERR(svn_cmdline_create_auth_baton(&cbtable->auth_baton,
+ TRUE /* non_interactive */,
+ "jrandom", "rayjandom",
+ NULL,
+ TRUE /* no_auth_cache */,
+ FALSE /* trust_server_cert */,
+ NULL, NULL, NULL, pool));
+
+ last_tunnel_check = TRUE;
+ open_tunnel_context = NULL;
+ err = svn_ra_open4(&session, NULL, "svn+foo://localhost/no-repo",
+ NULL, cbtable, NULL, NULL, pool);
+ svn_error_clear(err);
+ SVN_TEST_ASSERT(err);
+ SVN_TEST_ASSERT(!last_tunnel_check);
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+tunel_callback_test(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ apr_pool_t *connection_pool;
+ svn_repos_t *repos;
+ const char *url;
+ svn_ra_callbacks2_t *cbtable;
+ svn_ra_session_t *session;
+ svn_error_t *err;
+
+ SVN_ERR(svn_test__create_repos(&repos, tunnel_repos_name, opts, pool));
+
+ url = apr_pstrcat(pool, "svn+test://localhost/", tunnel_repos_name,
+ SVN_VA_NULL);
+ SVN_ERR(svn_ra_create_callbacks(&cbtable, pool));
+ cbtable->check_tunnel_func = check_tunnel;
+ cbtable->open_tunnel_func = open_tunnel;
+ cbtable->close_tunnel_func = close_tunnel;
+ cbtable->tunnel_baton = check_tunnel_baton = &cbtable;
+ SVN_ERR(svn_cmdline_create_auth_baton(&cbtable->auth_baton,
+ TRUE /* non_interactive */,
+ "jrandom", "rayjandom",
+ NULL,
+ TRUE /* no_auth_cache */,
+ FALSE /* trust_server_cert */,
+ NULL, NULL, NULL, pool));
+
+ last_tunnel_check = FALSE;
+ open_tunnel_context = NULL;
+ tunnel_open_count = 0;
+ connection_pool = svn_pool_create(pool);
+ err = svn_ra_open4(&session, NULL, url, NULL, cbtable, NULL, NULL,
+ connection_pool);
+ if (err && err->apr_err == SVN_ERR_TEST_FAILED)
+ {
+ svn_handle_error2(err, stderr, FALSE, "svn_tests: ");
+ svn_error_clear(err);
+ return SVN_NO_ERROR;
+ }
+ SVN_ERR(err);
+ SVN_TEST_ASSERT(last_tunnel_check);
+ SVN_TEST_ASSERT(tunnel_open_count > 0);
+ svn_pool_destroy(connection_pool);
+ SVN_TEST_ASSERT(tunnel_open_count == 0);
+ return SVN_NO_ERROR;
+}
+
+
/* The test table. */
+
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
SVN_TEST_OPTS_PASS(location_segments_test,
"test svn_ra_get_location_segments"),
+ SVN_TEST_OPTS_PASS(check_tunnel_callback_test,
+ "test ra_svn tunnel callback check"),
+ SVN_TEST_OPTS_PASS(tunel_callback_test,
+ "test ra_svn tunnel creation callbacks"),
SVN_TEST_NULL
};
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_ra_local/ra-local-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_ra_local/ra-local-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_ra_local/ra-local-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_ra_local/ra-local-test.c Wed Nov 27 11:52:35 2013
@@ -220,7 +220,7 @@ check_split_url(const char *repos_path,
SVN_ERR(svn_uri_get_file_url_from_dirent(&root_url, repos_path, pool));
if (in_repos_path)
- url = apr_pstrcat(pool, root_url, in_repos_path, (char *)NULL);
+ url = apr_pstrcat(pool, root_url, in_repos_path, SVN_VA_NULL);
else
url = root_url;
@@ -279,6 +279,8 @@ split_url_test(const svn_test_opts_t *op
#define HAS_UNC_HOST 0
#endif
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Propchange: subversion/branches/verify-keep-going/subversion/tests/libsvn_repos/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Nov 27 11:52:35 2013
@@ -3,6 +3,7 @@ Release
.libs
repos-test
test-repo-*
+config-pool-test*
md5args
*.o
*.lo
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_repos/repos-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_repos/repos-test.c Wed Nov 27 11:52:35 2013
@@ -26,6 +26,7 @@
#include "../svn_test.h"
+#include "svn_private_config.h"
#include "svn_pools.h"
#include "svn_error.h"
#include "svn_fs.h"
@@ -36,6 +37,10 @@
#include "svn_config.h"
#include "svn_props.h"
#include "svn_version.h"
+#include "private/svn_repos_private.h"
+
+/* be able to look into svn_config_t */
+#include "../../libsvn_subr/config_impl.h"
#include "../svn_test_fs.h"
@@ -484,19 +489,19 @@ print_chrevs(const apr_array_header_t *r
outstr = apr_pstrcat(pool,
outstr,
apr_psprintf(pool, "%ld ", rev),
- (char *)NULL);
+ SVN_VA_NULL);
}
}
- outstr = apr_pstrcat(pool, outstr, "} Expected: { ", (char *)NULL);
+ outstr = apr_pstrcat(pool, outstr, "} Expected: { ", SVN_VA_NULL);
for (i = 0; i < num_revs_expected; i++)
{
outstr = apr_pstrcat(pool,
outstr,
apr_psprintf(pool, "%ld ",
revs_expected[i]),
- (char *)NULL);
+ SVN_VA_NULL);
}
- return apr_pstrcat(pool, outstr, "}", (char *)NULL);
+ return apr_pstrcat(pool, outstr, "}", SVN_VA_NULL);
}
@@ -1454,8 +1459,8 @@ in_repo_authz(const svn_test_opts_t *opt
repos_root = svn_repos_path(repos, pool);
SVN_ERR(svn_uri_get_file_url_from_dirent(&repos_url, repos_root, pool));
- authz_url = apr_pstrcat(pool, repos_url, "/authz", (char *)NULL);
- noent_authz_url = apr_pstrcat(pool, repos_url, "/A/authz", (char *)NULL);
+ authz_url = svn_path_url_add_component2(repos_url, "authz", pool);
+ noent_authz_url = svn_path_url_add_component2(repos_url, "A/authz", pool);
/* absolute file URL. */
SVN_ERR(svn_repos_authz_read2(&authz_cfg, authz_url, NULL, TRUE, pool));
@@ -1593,11 +1598,11 @@ in_repo_groups_authz(const svn_test_opts
/* Calculate URLs */
repos_root = svn_repos_path(repos, pool);
SVN_ERR(svn_uri_get_file_url_from_dirent(&repos_url, repos_root, pool));
- authz_url = apr_pstrcat(pool, repos_url, "/authz", (char *)NULL);
- empty_authz_url = apr_pstrcat(pool, repos_url, "/empty-authz", (char *)NULL);
- noent_authz_url = apr_pstrcat(pool, repos_url, "/A/authz", (char *)NULL);
- groups_url = apr_pstrcat(pool, repos_url, "/groups", (char *)NULL);
- noent_groups_url = apr_pstrcat(pool, repos_url, "/A/groups", (char *)NULL);
+ authz_url = svn_path_url_add_component2(repos_url, "authz", pool);
+ empty_authz_url = svn_path_url_add_component2(repos_url, "empty-authz", pool);
+ noent_authz_url = svn_path_url_add_component2(repos_url, "A/authz", pool);
+ groups_url = svn_path_url_add_component2(repos_url, "groups", pool);
+ noent_groups_url = svn_path_url_add_component2(repos_url, "A/groups", pool);
/* absolute file URLs. */
@@ -3270,21 +3275,26 @@ test_repos_info(const svn_test_opts_t *o
svn_version_t v1_0_0 = {1, 0, 0, ""};
svn_version_t v1_4_0 = {1, 4, 0, ""};
int repos_format;
+ svn_boolean_t is_fsx = strcmp(opts->fs_type, "fsx") == 0;
opts2 = *opts;
- opts2.server_minor_version = 3;
- SVN_ERR(svn_test__create_repos(&repos, "test-repo-info-3",
- &opts2, pool));
- SVN_ERR(svn_repos_capabilities(&capabilities, repos, pool, pool));
- SVN_TEST_ASSERT(apr_hash_count(capabilities) == 0);
- SVN_ERR(svn_repos_info_format(&repos_format, &supports_version, repos,
- pool, pool));
- SVN_TEST_ASSERT(repos_format == 3);
- SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_0_0));
+ /* for repo types that have been around before 1.4 */
+ if (!is_fsx)
+ {
+ opts2.server_minor_version = 3;
+ SVN_ERR(svn_test__create_repos(&repos, "test-repo-info-3",
+ &opts2, pool));
+ SVN_ERR(svn_repos_capabilities(&capabilities, repos, pool, pool));
+ SVN_TEST_ASSERT(apr_hash_count(capabilities) == 0);
+ SVN_ERR(svn_repos_info_format(&repos_format, &supports_version, repos,
+ pool, pool));
+ SVN_TEST_ASSERT(repos_format == 3);
+ SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_0_0));
+ }
- opts2.server_minor_version = 8;
- SVN_ERR(svn_test__create_repos(&repos, "test-repo-info-8",
+ opts2.server_minor_version = 9;
+ SVN_ERR(svn_test__create_repos(&repos, "test-repo-info-9",
&opts2, pool));
SVN_ERR(svn_repos_capabilities(&capabilities, repos, pool, pool));
SVN_TEST_ASSERT(apr_hash_count(capabilities) == 1);
@@ -3297,9 +3307,246 @@ test_repos_info(const svn_test_opts_t *o
return SVN_NO_ERROR;
}
-
+static svn_error_t *
+test_config_pool(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ const char *repo_name = "test-repo-config-pool";
+ svn_repos_t *repos;
+ svn_stringbuf_t *cfg_buffer1, *cfg_buffer2;
+ svn_config_t *cfg;
+ apr_hash_t *sections1, *sections2;
+ int i;
+ svn_boolean_t bvalue;
+ svn_fs_txn_t *txn;
+ svn_fs_root_t *root, *rev_root;
+ svn_revnum_t rev;
+ const char *repo_root_url;
+ svn_error_t *err;
+
+ svn_repos__config_pool_t *config_pool;
+ apr_pool_t *config_pool_pool;
+ apr_pool_t *subpool = svn_pool_create(pool);
+
+ const char *wrk_dir = svn_test_data_path("config_pool", pool);
+
+ SVN_ERR(svn_io_make_dir_recursively(wrk_dir, pool));
+
+ /* read all config info through a single config pool and we want to be
+ able to control its lifetime. The latter requires a separate pool. */
+ config_pool_pool = svn_pool_create(pool);
+ SVN_ERR(svn_repos__config_pool_create(&config_pool, TRUE,
+ config_pool_pool));
+
+ /* have two different configurations */
+ SVN_ERR(svn_stringbuf_from_file2(
+ &cfg_buffer1,
+ svn_dirent_join(opts->srcdir,
+ "../libsvn_subr/config-test.cfg",
+ pool),
+ pool));
+ cfg_buffer2 = svn_stringbuf_dup(cfg_buffer1, pool);
+ svn_stringbuf_appendcstr(cfg_buffer2, "\n[more]\nU=\"X\"\n");
+
+ /* write them to 2x2 files */
+ SVN_ERR(svn_io_write_atomic(svn_dirent_join(wrk_dir,
+ "config-pool-test1.cfg",
+ pool),
+ cfg_buffer1->data, cfg_buffer1->len, NULL,
+ pool));
+ SVN_ERR(svn_io_write_atomic(svn_dirent_join(wrk_dir,
+ "config-pool-test2.cfg",
+ pool),
+ cfg_buffer1->data, cfg_buffer1->len, NULL,
+ pool));
+ SVN_ERR(svn_io_write_atomic(svn_dirent_join(wrk_dir,
+ "config-pool-test3.cfg",
+ pool),
+ cfg_buffer2->data, cfg_buffer2->len, NULL,
+ pool));
+ SVN_ERR(svn_io_write_atomic(svn_dirent_join(wrk_dir,
+ "config-pool-test4.cfg",
+ pool),
+ cfg_buffer2->data, cfg_buffer2->len, NULL,
+ pool));
+
+ /* requesting a config over and over again should return the same
+ (even though it is not being referenced) */
+ sections1 = NULL;
+ for (i = 0; i < 4; ++i)
+ {
+ SVN_ERR(svn_repos__config_pool_get(
+ &cfg, NULL, config_pool,
+ svn_dirent_join(wrk_dir,
+ "config-pool-test1.cfg",
+ pool),
+ TRUE, TRUE, NULL, subpool));
+
+ if (sections1 == NULL)
+ sections1 = cfg->sections;
+ else
+ SVN_TEST_ASSERT(cfg->sections == sections1);
+
+ svn_pool_clear(subpool);
+ }
+
+ /* requesting the same config from another file should return the same
+ (even though it is not being referenced) */
+ for (i = 0; i < 4; ++i)
+ {
+ SVN_ERR(svn_repos__config_pool_get(
+ &cfg, NULL, config_pool,
+ svn_dirent_join(wrk_dir,
+ "config-pool-test2.cfg",
+ pool),
+ TRUE, TRUE, NULL, subpool));
+
+ SVN_TEST_ASSERT(cfg->sections == sections1);
+
+ svn_pool_clear(subpool);
+ }
+
+ /* reading a different configuration should return a different pointer */
+ sections2 = NULL;
+ for (i = 0; i < 2; ++i)
+ {
+ SVN_ERR(svn_repos__config_pool_get(
+ &cfg, NULL, config_pool,
+ svn_dirent_join(wrk_dir,
+ "config-pool-test3.cfg",
+ pool),
+ TRUE, TRUE, NULL, subpool));
+
+ if (sections2 == NULL)
+ sections2 = cfg->sections;
+ else
+ SVN_TEST_ASSERT(cfg->sections == sections2);
+
+ SVN_TEST_ASSERT(sections1 != sections2);
+ svn_pool_clear(subpool);
+ }
+
+ /* create an in-repo config */
+ SVN_ERR(svn_dirent_get_absolute(&repo_root_url, repo_name, pool));
+ SVN_ERR(svn_uri_get_file_url_from_dirent(&repo_root_url, repo_root_url,
+ pool));
+
+ SVN_ERR(svn_test__create_repos(&repos, repo_name, opts, pool));
+ SVN_ERR(svn_fs_begin_txn2(&txn, svn_repos_fs(repos), 0, 0, pool));
+ SVN_ERR(svn_fs_txn_root(&root, txn, pool));
+ SVN_ERR(svn_fs_make_dir(root, "dir", pool));
+ SVN_ERR(svn_fs_make_file(root, "dir/config", pool));
+ SVN_ERR(svn_test__set_file_contents(root, "dir/config",
+ cfg_buffer1->data, pool));
+ SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, pool));
+
+ /* reading the config from the repo should still give cfg1 */
+ SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
+ svn_path_url_add_component2(
+ repo_root_url,
+ "dir/config", pool),
+ TRUE, TRUE, NULL, subpool));
+ SVN_TEST_ASSERT(cfg->sections == sections1);
+ svn_pool_clear(subpool);
+
+ /* create another in-repo config */
+ SVN_ERR(svn_fs_begin_txn2(&txn, svn_repos_fs(repos), rev, 0, pool));
+ SVN_ERR(svn_fs_txn_root(&root, txn, pool));
+ SVN_ERR(svn_fs_revision_root(&rev_root, svn_repos_fs(repos), rev, pool));
+ SVN_ERR(svn_fs_copy(rev_root, "dir", root, "another-dir", pool));
+ SVN_ERR(svn_test__set_file_contents(root, "dir/config",
+ cfg_buffer2->data, pool));
+ SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, pool));
+
+ /* reading the config from the repo should give cfg2 now */
+ SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
+ svn_path_url_add_component2(
+ repo_root_url,
+ "dir/config", pool),
+ TRUE, TRUE, NULL, subpool));
+ SVN_TEST_ASSERT(cfg->sections == sections2);
+ svn_pool_clear(subpool);
+
+ /* reading the copied config should still give cfg1 */
+ SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
+ svn_path_url_add_component2(
+ repo_root_url,
+ "another-dir/config",
+ pool),
+ TRUE, TRUE, NULL, subpool));
+ SVN_TEST_ASSERT(cfg->sections == sections1);
+ svn_pool_clear(subpool);
+
+ /* once again: repeated reads. This triggers a different code path. */
+ SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
+ svn_path_url_add_component2(
+ repo_root_url,
+ "dir/config", pool),
+ TRUE, TRUE, NULL, subpool));
+ SVN_TEST_ASSERT(cfg->sections == sections2);
+ SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
+ svn_path_url_add_component2(
+ repo_root_url,
+ "another-dir/config",
+ pool),
+ TRUE, TRUE, NULL, subpool));
+ SVN_TEST_ASSERT(cfg->sections == sections1);
+ svn_pool_clear(subpool);
+
+ /* access paths that don't exist */
+ SVN_TEST_ASSERT_ERROR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
+ svn_path_url_add_component2(repo_root_url, "X",
+ pool),
+ TRUE, TRUE, NULL, subpool),
+ SVN_ERR_ILLEGAL_TARGET);
+ err = svn_repos__config_pool_get(&cfg, NULL, config_pool, "X.cfg",
+ TRUE, TRUE, NULL, subpool);
+ SVN_TEST_ASSERT(err && APR_STATUS_IS_ENOENT(err->apr_err));
+ svn_error_clear(err);
+ svn_pool_clear(subpool);
+
+ /* as long as we keep a reference to a config, clearing the config pool
+ should not invalidate that reference */
+ SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
+ svn_dirent_join(wrk_dir,
+ "config-pool-test1.cfg",
+ pool),
+ TRUE, TRUE, NULL, pool));
+ svn_pool_clear(config_pool_pool);
+ for (i = 0; i < 64000; ++i)
+ apr_pcalloc(config_pool_pool, 80);
+
+ SVN_ERR(svn_config_get_bool(cfg, &bvalue, "booleans", "true3", FALSE));
+ SVN_TEST_ASSERT(bvalue);
+
+ return SVN_NO_ERROR;
+}
+
+
+static svn_error_t *
+test_repos_fs_type(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_repos_t *repos;
+
+ /* Create test repository. */
+ SVN_ERR(svn_test__create_repos(&repos, "test-repo-repos_fs_type",
+ opts, pool));
+
+ SVN_TEST_STRING_ASSERT(svn_repos_fs_type(repos, pool), opts->fs_type);
+
+ /* Re-open repository and verify fs-type again. */
+ SVN_ERR(svn_repos_open2(&repos, svn_repos_path(repos, pool), NULL, pool));
+
+ SVN_TEST_STRING_ASSERT(svn_repos_fs_type(repos, pool), opts->fs_type);
+
+ return SVN_NO_ERROR;
+}
+
/* The test table. */
+int svn_test_max_threads = 4;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
@@ -3345,5 +3592,9 @@ struct svn_test_descriptor_t test_funcs[
"test filenames with control characters"),
SVN_TEST_OPTS_PASS(test_repos_info,
"test svn_repos_info_*"),
+ SVN_TEST_OPTS_PASS(test_config_pool,
+ "test svn_repos__config_pool_*"),
+ SVN_TEST_OPTS_PASS(test_repos_fs_type,
+ "test test_repos_fs_type"),
SVN_TEST_NULL
};
Propchange: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Nov 27 11:52:35 2013
@@ -22,6 +22,7 @@ opt-test
path-test
revision-test
skel-test
+sqlite-test
stream-test
string-test
string-test.tmp
@@ -42,3 +43,9 @@ named_atomic-proc-test
io-test
io-test-temp
auth-clear
+prefix-string-test
+priority-queue-test
+packed-data-test
+root-pools-test
+aligned_seek_tmp
+read_length_tmp
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/auth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/auth-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/auth-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/auth-test.c Wed Nov 27 11:52:35 2013
@@ -63,13 +63,14 @@ test_platform_specific_auth_providers(ap
number_of_providers += 2;
#endif
#if defined(WIN32) && !defined(__MINGW32__)
- number_of_providers += 2;
+ number_of_providers += 4;
#endif
if (providers->nelts != number_of_providers)
return svn_error_createf
(SVN_ERR_TEST_FAILED, NULL,
"svn_auth_get_platform_specific_client_providers should return " \
- "an array of %d providers", number_of_providers);
+ "an array of %d providers, but returned %d providers",
+ number_of_providers, providers->nelts);
/* Test Keychain auth providers */
#ifdef SVN_HAVE_KEYCHAIN_SERVICES
@@ -314,6 +315,8 @@ test_auth_clear(apr_pool_t *pool)
/* The test table. */
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/cache-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/cache-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/cache-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/cache-test.c Wed Nov 27 11:52:35 2013
@@ -193,6 +193,7 @@ test_membuffer_cache_basic(apr_pool_t *p
deserialize_revnum,
APR_HASH_KEY_STRING,
"cache:",
+ SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY,
FALSE,
pool));
@@ -258,6 +259,8 @@ test_memcache_long_key(const svn_test_op
/* The test table. */
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/checksum-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/checksum-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/checksum-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/checksum-test.c Wed Nov 27 11:52:35 2013
@@ -23,7 +23,10 @@
#include <apr_pools.h>
+#include <zlib.h>
+
#include "svn_error.h"
+#include "svn_io.h"
#include "private/svn_pseudo_md5.h"
#include "../svn_test.h"
@@ -155,7 +158,91 @@ zero_match(apr_pool_t *pool)
return SVN_NO_ERROR;
}
+static svn_error_t *
+zlib_expansion_test(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ const char *data_path;
+ svn_stringbuf_t *deflated;
+ Byte dst_buffer[256 * 1024];
+ Byte *src_buffer;
+ apr_size_t sz;
+
+ data_path = svn_dirent_join(opts->srcdir, "zlib.deflated", pool);
+
+ SVN_ERR(svn_stringbuf_from_file2(&deflated, data_path, pool));
+ src_buffer = (Byte*)deflated->data;
+
+ /* Try to decompress the same data with different blocksizes */
+ for (sz = 1; sz < 256; sz++)
+ {
+ z_stream stream;
+ memset(&stream, 0, sizeof(stream));
+ inflateInit2(&stream, -15 /* DEFLATE_WINDOW_SIZE */);
+
+ stream.avail_in = sz;
+ stream.next_in = src_buffer;
+ stream.avail_out = sizeof(dst_buffer);
+ stream.next_out = dst_buffer;
+
+ do
+ {
+ int zr = inflate(&stream, Z_NO_FLUSH);
+
+ if (zr != Z_OK && zr != Z_STREAM_END)
+ {
+ return svn_error_createf(
+ SVN_ERR_TEST_FAILED, NULL,
+ "Failure decompressing with blocksize %d", (int)sz);
+ }
+ stream.avail_in += sz;
+ } while (stream.next_in + stream.avail_in < src_buffer + deflated->len);
+
+ stream.avail_in = (src_buffer + deflated->len) - stream.next_in;
+
+ {
+ int zr = inflate(&stream, Z_NO_FLUSH);
+
+ if (zr != Z_STREAM_END)
+ {
+ return svn_error_createf(
+ SVN_ERR_TEST_FAILED, NULL,
+ "Final flush failed with blocksize %d", (int)sz);
+ }
+
+ zr = inflateEnd(&stream);
+
+ if (zr != Z_OK)
+ {
+ return svn_error_createf(
+ SVN_ERR_TEST_FAILED, NULL,
+ "End of stream handling failed with blocksize %d",
+ (int)sz);
+ }
+ }
+
+ {
+ apr_uint32_t crc = crc32(0, dst_buffer, stream.total_out);
+
+ if (stream.total_out != 242014 || crc != 0x8f03d934)
+ {
+ return svn_error_createf(
+ SVN_ERR_TEST_FAILED, NULL,
+ "Decompressed data doesn't match expected size or crc with "
+ "blocksize %d: Found crc32=0x%08x, size=%d.\n"
+ "Verify your ZLib installation, as this should never happen",
+ (int)sz, (unsigned)crc, (int)stream.total_out);
+ }
+ }
+ }
+
+ return SVN_NO_ERROR;
+}
+
/* An array of all test functions */
+
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
@@ -167,5 +254,7 @@ struct svn_test_descriptor_t test_funcs[
"pseudo-md5 compatibility"),
SVN_TEST_PASS2(zero_match,
"zero checksum matching"),
+ SVN_TEST_OPTS_PASS(zlib_expansion_test,
+ "zlib expansion test (zlib regression)"),
SVN_TEST_NULL
};
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/compat-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/compat-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/compat-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/compat-test.c Wed Nov 27 11:52:35 2013
@@ -209,6 +209,9 @@ test_version_at_least(apr_pool_t *pool)
}
/* An array of all test functions */
+
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/config-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/config-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/config-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/config-test.c Wed Nov 27 11:52:35 2013
@@ -33,48 +33,14 @@
#include <apr_getopt.h>
#include <apr_pools.h>
+#include "svn_dirent_uri.h"
#include "svn_error.h"
#include "svn_config.h"
+#include "private/svn_subr_private.h"
#include "../svn_test.h"
-/* Initialize parameters for the tests. */
-extern int test_argc;
-extern const char **test_argv;
-
-static const apr_getopt_option_t opt_def[] =
- {
- {"srcdir", 'S', 1, "the source directory for VPATH test runs"},
- {0, 0, 0, 0}
- };
-static const char *srcdir = NULL;
-
-static svn_error_t *init_params(apr_pool_t *pool)
-{
- apr_getopt_t *opt;
- int optch;
- const char *opt_arg;
- apr_status_t status;
-
- apr_getopt_init(&opt, pool, test_argc, test_argv);
- while (!(status = apr_getopt_long(opt, opt_def, &optch, &opt_arg)))
- {
- switch (optch)
- {
- case 'S':
- srcdir = opt_arg;
- break;
- }
- }
-
- if (!srcdir)
- return svn_error_create(SVN_ERR_TEST_FAILED, 0,
- "missing required parameter '--srcdir'");
-
- return SVN_NO_ERROR;
-}
-
/* A quick way to create error messages. */
static svn_error_t *
fail(apr_pool_t *pool, const char *fmt, ...)
@@ -99,16 +65,14 @@ static const char *config_values[] = { "
"Aa 100", NULL };
static svn_error_t *
-test_text_retrieval(apr_pool_t *pool)
+test_text_retrieval(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
{
svn_config_t *cfg;
int i;
const char *cfg_file;
- if (!srcdir)
- SVN_ERR(init_params(pool));
-
- cfg_file = apr_pstrcat(pool, srcdir, "/", "config-test.cfg", (char *)NULL);
+ cfg_file = svn_dirent_join(opts->srcdir, "config-test.cfg", pool);
SVN_ERR(svn_config_read3(&cfg, cfg_file, TRUE, FALSE, FALSE, pool));
/* Test values retrieved from our ConfigParser instance against
@@ -150,16 +114,14 @@ static const char *false_keys[] = {"fals
NULL};
static svn_error_t *
-test_boolean_retrieval(apr_pool_t *pool)
+test_boolean_retrieval(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
{
svn_config_t *cfg;
int i;
const char *cfg_file;
- if (!srcdir)
- SVN_ERR(init_params(pool));
-
- cfg_file = apr_pstrcat(pool, srcdir, "/", "config-test.cfg", (char *)NULL);
+ cfg_file = svn_dirent_join(opts->srcdir, "config-test.cfg", pool);
SVN_ERR(svn_config_read3(&cfg, cfg_file, TRUE, FALSE, FALSE, pool));
for (i = 0; true_keys[i] != NULL; i++)
@@ -211,15 +173,13 @@ test_boolean_retrieval(apr_pool_t *pool)
}
static svn_error_t *
-test_has_section_case_insensitive(apr_pool_t *pool)
+test_has_section_case_insensitive(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
{
svn_config_t *cfg;
const char *cfg_file;
- if (!srcdir)
- SVN_ERR(init_params(pool));
-
- cfg_file = apr_pstrcat(pool, srcdir, "/", "config-test.cfg", (char *)NULL);
+ cfg_file = svn_dirent_join(opts->srcdir, "config-test.cfg", pool);
SVN_ERR(svn_config_read3(&cfg, cfg_file, TRUE, FALSE, FALSE, pool));
if (! svn_config_has_section(cfg, "section1"))
@@ -241,15 +201,13 @@ test_has_section_case_insensitive(apr_po
}
static svn_error_t *
-test_has_section_case_sensitive(apr_pool_t *pool)
+test_has_section_case_sensitive(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
{
svn_config_t *cfg;
const char *cfg_file;
- if (!srcdir)
- SVN_ERR(init_params(pool));
-
- cfg_file = apr_pstrcat(pool, srcdir, "/", "config-test.cfg", (char *)NULL);
+ cfg_file = svn_dirent_join(opts->srcdir, "config-test.cfg", pool);
SVN_ERR(svn_config_read3(&cfg, cfg_file, TRUE, TRUE, FALSE, pool));
if (! svn_config_has_section(cfg, "section1"))
@@ -271,7 +229,8 @@ test_has_section_case_sensitive(apr_pool
}
static svn_error_t *
-test_has_option_case_sensitive(apr_pool_t *pool)
+test_has_option_case_sensitive(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
{
svn_config_t *cfg;
const char *cfg_file;
@@ -289,10 +248,7 @@ test_has_option_case_sensitive(apr_pool_
};
static const int test_data_size = sizeof(test_data)/sizeof(*test_data);
- if (!srcdir)
- SVN_ERR(init_params(pool));
-
- cfg_file = apr_pstrcat(pool, srcdir, "/", "config-test.cfg", (char *)NULL);
+ cfg_file = svn_dirent_join(opts->srcdir, "config-test.cfg", pool);
SVN_ERR(svn_config_read3(&cfg, cfg_file, TRUE, TRUE, TRUE, pool));
for (i = 0; i < test_data_size; ++i)
@@ -313,16 +269,14 @@ test_has_option_case_sensitive(apr_pool_
}
static svn_error_t *
-test_stream_interface(apr_pool_t *pool)
+test_stream_interface(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
{
svn_config_t *cfg;
const char *cfg_file;
svn_stream_t *stream;
- if (!srcdir)
- SVN_ERR(init_params(pool));
-
- cfg_file = apr_pstrcat(pool, srcdir, "/", "config-test.cfg", (char *)NULL);
+ cfg_file = svn_dirent_join(opts->srcdir, "config-test.cfg", pool);
SVN_ERR(svn_stream_open_readonly(&stream, cfg_file, pool, pool));
SVN_ERR(svn_config_parse(&cfg, stream, TRUE, TRUE, pool));
@@ -352,6 +306,35 @@ test_ignore_bom(apr_pool_t *pool)
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_read_only_mode(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_config_t *cfg;
+ svn_config_t *cfg2;
+ const char *cfg_file;
+
+ cfg_file = svn_dirent_join(opts->srcdir, "config-test.cfg", pool);
+ SVN_ERR(svn_config_read3(&cfg, cfg_file, TRUE, TRUE, FALSE, pool));
+
+ /* setting CFG to r/o mode shall toggle the r/o mode and expand values */
+
+ SVN_TEST_ASSERT(!svn_config__is_read_only(cfg));
+ SVN_TEST_ASSERT(!svn_config__is_expanded(cfg, "section1", "i"));
+
+ svn_config__set_read_only(cfg, pool);
+
+ SVN_TEST_ASSERT(svn_config__is_read_only(cfg));
+ SVN_TEST_ASSERT(svn_config__is_expanded(cfg, "section1", "i"));
+
+ /* copies should be r/w with values */
+
+ SVN_ERR(svn_config_dup(&cfg2, cfg, pool));
+ SVN_TEST_ASSERT(!svn_config__is_read_only(cfg2));
+
+ return SVN_NO_ERROR;
+}
+
/*
====================================================================
If you add a new test to this file, update this array.
@@ -360,21 +343,27 @@ test_ignore_bom(apr_pool_t *pool)
*/
/* An array of all test functions */
+
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
- SVN_TEST_PASS2(test_text_retrieval,
- "test svn_config"),
- SVN_TEST_PASS2(test_boolean_retrieval,
- "test svn_config boolean conversion"),
- SVN_TEST_PASS2(test_has_section_case_insensitive,
- "test svn_config_has_section (case insensitive)"),
- SVN_TEST_PASS2(test_has_section_case_sensitive,
- "test svn_config_has_section (case sensitive)"),
- SVN_TEST_PASS2(test_has_option_case_sensitive,
- "test case-sensitive option name lookup"),
- SVN_TEST_PASS2(test_stream_interface,
- "test svn_config_parse"),
- SVN_TEST_PASS2(test_ignore_bom, "test parsing config file with BOM"),
+ SVN_TEST_OPTS_PASS(test_text_retrieval,
+ "test svn_config"),
+ SVN_TEST_OPTS_PASS(test_boolean_retrieval,
+ "test svn_config boolean conversion"),
+ SVN_TEST_OPTS_PASS(test_has_section_case_insensitive,
+ "test svn_config_has_section (case insensitive)"),
+ SVN_TEST_OPTS_PASS(test_has_section_case_sensitive,
+ "test svn_config_has_section (case sensitive)"),
+ SVN_TEST_OPTS_PASS(test_has_option_case_sensitive,
+ "test case-sensitive option name lookup"),
+ SVN_TEST_OPTS_PASS(test_stream_interface,
+ "test svn_config_parse"),
+ SVN_TEST_PASS2(test_ignore_bom,
+ "test parsing config file with BOM"),
+ SVN_TEST_OPTS_PASS(test_read_only_mode,
+ "test r/o mode"),
SVN_TEST_NULL
};
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/crypto-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/crypto-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/crypto-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/crypto-test.c Wed Nov 27 11:52:35 2013
@@ -177,6 +177,8 @@ test_passphrase_check(apr_pool_t *pool)
/* The test table. */
+int svn_test_max_threads = -1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/dirent_uri-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/dirent_uri-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/dirent_uri-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/dirent_uri-test.c Wed Nov 27 11:52:35 2013
@@ -269,7 +269,7 @@ test_dirent_join(apr_pool_t *pool)
"\"%s\". expected \"%s\"",
base, comp, result, expect);
- result = svn_dirent_join_many(pool, base, comp, NULL);
+ result = svn_dirent_join_many(pool, base, comp, SVN_VA_NULL);
if (strcmp(result, expect))
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
"svn_dirent_join_many(\"%s\", \"%s\") returned "
@@ -285,72 +285,72 @@ test_dirent_join(apr_pool_t *pool)
"expected \"%s\"", \
result, expect);
- TEST_MANY((pool, "abc", NULL), "abc");
- TEST_MANY((pool, "/abc", NULL), "/abc");
- TEST_MANY((pool, "/", NULL), "/");
-
- TEST_MANY((pool, "abc", "def", "ghi", NULL), "abc/def/ghi");
- TEST_MANY((pool, "abc", "/def", "ghi", NULL), "/def/ghi");
- TEST_MANY((pool, "/abc", "def", "ghi", NULL), "/abc/def/ghi");
- TEST_MANY((pool, "abc", "def", "/ghi", NULL), "/ghi");
- TEST_MANY((pool, "/", "def", "/ghi", NULL), "/ghi");
- TEST_MANY((pool, "/", "/def", "/ghi", NULL), "/ghi");
-
- TEST_MANY((pool, SVN_EMPTY_PATH, "def", "ghi", NULL), "def/ghi");
- TEST_MANY((pool, "abc", SVN_EMPTY_PATH, "ghi", NULL), "abc/ghi");
- TEST_MANY((pool, "abc", "def", SVN_EMPTY_PATH, NULL), "abc/def");
- TEST_MANY((pool, SVN_EMPTY_PATH, "def", SVN_EMPTY_PATH, NULL), "def");
- TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "ghi", NULL), "ghi");
- TEST_MANY((pool, "abc", SVN_EMPTY_PATH, SVN_EMPTY_PATH, NULL), "abc");
- TEST_MANY((pool, SVN_EMPTY_PATH, "def", "/ghi", NULL), "/ghi");
- TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "/ghi", NULL), "/ghi");
-
- TEST_MANY((pool, "/", "def", "ghi", NULL), "/def/ghi");
- TEST_MANY((pool, "abc", "/", "ghi", NULL), "/ghi");
- TEST_MANY((pool, "abc", "def", "/", NULL), "/");
- TEST_MANY((pool, "/", "/", "ghi", NULL), "/ghi");
- TEST_MANY((pool, "/", "/", "/", NULL), "/");
- TEST_MANY((pool, "/", SVN_EMPTY_PATH, "ghi", NULL), "/ghi");
- TEST_MANY((pool, "/", "def", SVN_EMPTY_PATH, NULL), "/def");
- TEST_MANY((pool, SVN_EMPTY_PATH, "/", "ghi", NULL), "/ghi");
- TEST_MANY((pool, "/", SVN_EMPTY_PATH, SVN_EMPTY_PATH, NULL), "/");
- TEST_MANY((pool, SVN_EMPTY_PATH, "/", SVN_EMPTY_PATH, NULL), "/");
- TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "/", NULL), "/");
-
-#ifdef SVN_USE_DOS_PATHS
- TEST_MANY((pool, "X:/", "def", "ghi", NULL), "X:/def/ghi");
- TEST_MANY((pool, "abc", "X:/", "ghi", NULL), "X:/ghi");
- TEST_MANY((pool, "abc", "def", "X:/", NULL), "X:/");
- TEST_MANY((pool, "X:/", "X:/", "ghi", NULL), "X:/ghi");
- TEST_MANY((pool, "X:/", "X:/", "/", NULL), "/");
- TEST_MANY((pool, "X:/", SVN_EMPTY_PATH, "ghi", NULL), "X:/ghi");
- TEST_MANY((pool, "X:/", "def", SVN_EMPTY_PATH, NULL), "X:/def");
- TEST_MANY((pool, SVN_EMPTY_PATH, "X:/", "ghi", NULL), "X:/ghi");
- TEST_MANY((pool, "X:/", SVN_EMPTY_PATH, SVN_EMPTY_PATH, NULL), "X:/");
- TEST_MANY((pool, SVN_EMPTY_PATH, "X:/", SVN_EMPTY_PATH, NULL), "X:/");
- TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "X:/", NULL), "X:/");
-
- TEST_MANY((pool, "X:", "def", "ghi", NULL), "X:def/ghi");
- TEST_MANY((pool, "X:", "X:/", "ghi", NULL), "X:/ghi");
- TEST_MANY((pool, "X:", "X:/", "/", NULL), "/");
- TEST_MANY((pool, "X:", SVN_EMPTY_PATH, "ghi", NULL), "X:ghi");
- TEST_MANY((pool, "X:", "def", SVN_EMPTY_PATH, NULL), "X:def");
- TEST_MANY((pool, SVN_EMPTY_PATH, "X:", "ghi", NULL), "X:ghi");
- TEST_MANY((pool, "//srv/shr", "def", "ghi", NULL), "//srv/shr/def/ghi");
- TEST_MANY((pool, "//srv/shr/fld", "def", "ghi", NULL), "//srv/shr/fld/def/ghi");
- TEST_MANY((pool, "//srv/shr/fld", "def", "//srv/shr", NULL), "//srv/shr");
- TEST_MANY((pool, "//srv/s r/fld", "def", "//srv/s r", NULL), "//srv/s r");
- TEST_MANY((pool, SVN_EMPTY_PATH, "//srv/shr/fld", "def", "ghi", NULL), "//srv/shr/fld/def/ghi");
- TEST_MANY((pool, SVN_EMPTY_PATH, "//srv/shr/fld", "def", "//srv/shr", NULL), "//srv/shr");
+ TEST_MANY((pool, "abc", SVN_VA_NULL), "abc");
+ TEST_MANY((pool, "/abc", SVN_VA_NULL), "/abc");
+ TEST_MANY((pool, "/", SVN_VA_NULL), "/");
+
+ TEST_MANY((pool, "abc", "def", "ghi", SVN_VA_NULL), "abc/def/ghi");
+ TEST_MANY((pool, "abc", "/def", "ghi", SVN_VA_NULL), "/def/ghi");
+ TEST_MANY((pool, "/abc", "def", "ghi", SVN_VA_NULL), "/abc/def/ghi");
+ TEST_MANY((pool, "abc", "def", "/ghi", SVN_VA_NULL), "/ghi");
+ TEST_MANY((pool, "/", "def", "/ghi", SVN_VA_NULL), "/ghi");
+ TEST_MANY((pool, "/", "/def", "/ghi", SVN_VA_NULL), "/ghi");
+
+ TEST_MANY((pool, SVN_EMPTY_PATH, "def", "ghi", SVN_VA_NULL), "def/ghi");
+ TEST_MANY((pool, "abc", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "abc/ghi");
+ TEST_MANY((pool, "abc", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "abc/def");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "def", SVN_EMPTY_PATH, SVN_VA_NULL), "def");
+ TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "ghi");
+ TEST_MANY((pool, "abc", SVN_EMPTY_PATH, SVN_EMPTY_PATH, SVN_VA_NULL), "abc");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "def", "/ghi", SVN_VA_NULL), "/ghi");
+ TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "/ghi", SVN_VA_NULL), "/ghi");
+
+ TEST_MANY((pool, "/", "def", "ghi", SVN_VA_NULL), "/def/ghi");
+ TEST_MANY((pool, "abc", "/", "ghi", SVN_VA_NULL), "/ghi");
+ TEST_MANY((pool, "abc", "def", "/", SVN_VA_NULL), "/");
+ TEST_MANY((pool, "/", "/", "ghi", SVN_VA_NULL), "/ghi");
+ TEST_MANY((pool, "/", "/", "/", SVN_VA_NULL), "/");
+ TEST_MANY((pool, "/", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "/ghi");
+ TEST_MANY((pool, "/", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "/def");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "/", "ghi", SVN_VA_NULL), "/ghi");
+ TEST_MANY((pool, "/", SVN_EMPTY_PATH, SVN_EMPTY_PATH, SVN_VA_NULL), "/");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "/", SVN_EMPTY_PATH, SVN_VA_NULL), "/");
+ TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "/", SVN_VA_NULL), "/");
+
+#ifdef SVN_USE_DOS_PATHS
+ TEST_MANY((pool, "X:/", "def", "ghi", SVN_VA_NULL), "X:/def/ghi");
+ TEST_MANY((pool, "abc", "X:/", "ghi", SVN_VA_NULL), "X:/ghi");
+ TEST_MANY((pool, "abc", "def", "X:/", SVN_VA_NULL), "X:/");
+ TEST_MANY((pool, "X:/", "X:/", "ghi", SVN_VA_NULL), "X:/ghi");
+ TEST_MANY((pool, "X:/", "X:/", "/", SVN_VA_NULL), "/");
+ TEST_MANY((pool, "X:/", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "X:/ghi");
+ TEST_MANY((pool, "X:/", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "X:/def");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "X:/", "ghi", SVN_VA_NULL), "X:/ghi");
+ TEST_MANY((pool, "X:/", SVN_EMPTY_PATH, SVN_EMPTY_PATH, SVN_VA_NULL), "X:/");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "X:/", SVN_EMPTY_PATH, SVN_VA_NULL), "X:/");
+ TEST_MANY((pool, SVN_EMPTY_PATH, SVN_EMPTY_PATH, "X:/", SVN_VA_NULL), "X:/");
+
+ TEST_MANY((pool, "X:", "def", "ghi", SVN_VA_NULL), "X:def/ghi");
+ TEST_MANY((pool, "X:", "X:/", "ghi", SVN_VA_NULL), "X:/ghi");
+ TEST_MANY((pool, "X:", "X:/", "/", SVN_VA_NULL), "/");
+ TEST_MANY((pool, "X:", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "X:ghi");
+ TEST_MANY((pool, "X:", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "X:def");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "X:", "ghi", SVN_VA_NULL), "X:ghi");
+ TEST_MANY((pool, "//srv/shr", "def", "ghi", SVN_VA_NULL), "//srv/shr/def/ghi");
+ TEST_MANY((pool, "//srv/shr/fld", "def", "ghi", SVN_VA_NULL), "//srv/shr/fld/def/ghi");
+ TEST_MANY((pool, "//srv/shr/fld", "def", "//srv/shr", SVN_VA_NULL), "//srv/shr");
+ TEST_MANY((pool, "//srv/s r/fld", "def", "//srv/s r", SVN_VA_NULL), "//srv/s r");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "//srv/shr/fld", "def", "ghi", SVN_VA_NULL), "//srv/shr/fld/def/ghi");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "//srv/shr/fld", "def", "//srv/shr", SVN_VA_NULL), "//srv/shr");
- TEST_MANY((pool, "abcd", "/dir", "A:", "file", NULL), "A:file");
- TEST_MANY((pool, "abcd", "A:", "/dir", "file", NULL), "A:/dir/file");
+ TEST_MANY((pool, "abcd", "/dir", "A:", "file", SVN_VA_NULL), "A:file");
+ TEST_MANY((pool, "abcd", "A:", "/dir", "file", SVN_VA_NULL), "A:/dir/file");
#else /* !SVN_USE_DOS_PATHS */
- TEST_MANY((pool, "X:", "def", "ghi", NULL), "X:/def/ghi");
- TEST_MANY((pool, "X:", SVN_EMPTY_PATH, "ghi", NULL), "X:/ghi");
- TEST_MANY((pool, "X:", "def", SVN_EMPTY_PATH, NULL), "X:/def");
- TEST_MANY((pool, SVN_EMPTY_PATH, "X:", "ghi", NULL), "X:/ghi");
+ TEST_MANY((pool, "X:", "def", "ghi", SVN_VA_NULL), "X:/def/ghi");
+ TEST_MANY((pool, "X:", SVN_EMPTY_PATH, "ghi", SVN_VA_NULL), "X:/ghi");
+ TEST_MANY((pool, "X:", "def", SVN_EMPTY_PATH, SVN_VA_NULL), "X:/def");
+ TEST_MANY((pool, SVN_EMPTY_PATH, "X:", "ghi", SVN_VA_NULL), "X:/ghi");
#endif /* SVN_USE_DOS_PATHS */
/* ### probably need quite a few more tests... */
@@ -911,6 +911,9 @@ static const testcase_canonicalize_t uri
{ "file:///C:/temp/REPOS", "file:///C:/temp/REPOS" },
{ "file:///c:/", "file:///c:" },
#endif /* SVN_USE_DOS_PATHS */
+ /* Hostnames that look like non-canonical paths */
+ { "file://./foo", "file://./foo" },
+ { "http://./foo", "http://./foo" },
/* svn_uri_is_canonical() was a private function in the 1.6 API, and
has since taken a MAJOR change of direction, namely that only
absolute URLs are considered canonical uris now. */
@@ -1933,13 +1936,13 @@ test_dirent_get_absolute(apr_pool_t *poo
expect_abs = expect;
if (*expect == '%')
- expect_abs = apr_pstrcat(pool, curdir, expect + 1, (char *)NULL);
+ expect_abs = apr_pstrcat(pool, curdir, expect + 1, SVN_VA_NULL);
#ifdef SVN_USE_DOS_PATHS
if (*expect == '@')
- expect_abs = apr_pstrcat(pool, curdironc, expect + 1, NULL);
+ expect_abs = apr_pstrcat(pool, curdironc, expect + 1, SVN_VA_NULL);
if (*expect == '$')
- expect_abs = apr_pstrcat(pool, curdrive, expect + 1, NULL);
+ expect_abs = apr_pstrcat(pool, curdrive, expect + 1, SVN_VA_NULL);
/* Remove double '/' when CWD was the root dir (E.g. C:/) */
expect_abs = svn_dirent_canonicalize(expect_abs, pool);
@@ -2714,6 +2717,8 @@ test_fspath_get_longest_ancestor(apr_poo
/* The test table. */
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
Modified: subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/error-code-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/error-code-test.c?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/error-code-test.c (original)
+++ subversion/branches/verify-keep-going/subversion/tests/libsvn_subr/error-code-test.c Wed Nov 27 11:52:35 2013
@@ -74,6 +74,8 @@ check_error_codes_unique(apr_pool_t *poo
/* The test table. */
+int svn_test_max_threads = 1;
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,