Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c Fri Jan 16 14:01:35 2015 @@ -1079,7 +1079,7 @@ metadata_checksumming(const svn_test_opt SVN_ERR(svn_stringbuf_from_file2(&r0, r0_path, pool)); r0->data[21] = '1'; SVN_ERR(svn_io_remove_file2(r0_path, FALSE, pool)); - SVN_ERR(svn_io_file_create_binary(r0_path, r0->data, r0->len, pool)); + SVN_ERR(svn_io_file_create_bytes(r0_path, r0->data, r0->len, pool)); /* Reading the corrupted data on the normal code path triggers no error. * Use a separate namespace to avoid simply reading data from cache. */
Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c Fri Jan 16 14:01:35 2015 @@ -79,7 +79,7 @@ create_greek_repo(svn_repos_t **repos, static svn_error_t * verify_representation_stats(const svn_fs_fs__representation_stats_t *stats, - apr_int64_t expected_count) + apr_uint64_t expected_count) { /* Small items, no packing (but inefficiency due to packing attempt). */ SVN_TEST_ASSERT(stats->total.count == expected_count); @@ -110,7 +110,7 @@ verify_representation_stats(const svn_fs static svn_error_t * verify_node_stats(const svn_fs_fs__node_stats_t *node_stats, - apr_int64_t expected_count) + apr_uint64_t expected_count) { SVN_TEST_ASSERT(node_stats->count == expected_count); SVN_TEST_ASSERT( node_stats->size > 100 * node_stats->count @@ -162,8 +162,8 @@ verify_large_change(const svn_fs_fs__lar static svn_error_t * verify_histogram(const svn_fs_fs__histogram_t *histogram) { - apr_int64_t sum_count = 0; - apr_int64_t sum_size = 0; + apr_uint64_t sum_count = 0; + apr_uint64_t sum_size = 0; int i; for (i = 0; i < 64; ++i) Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_repos/dump-load-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_repos/dump-load-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_repos/dump-load-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_repos/dump-load-test.c Fri Jan 16 14:01:35 2015 @@ -35,7 +35,114 @@ -/* Notification receiver for test_dump_bad_mergeinfo(). This does not +/* Test dumping in the presence of the property PROP_NAME:PROP_VAL. + * Return the dumped data in *DUMP_DATA_P (if DUMP_DATA_P is not null). + * REPOS is an empty repository. + * See svn_repos_dump_fs3() for START_REV, END_REV, NOTIFY_FUNC, NOTIFY_BATON. + */ +static svn_error_t * +test_dump_bad_props(svn_stringbuf_t **dump_data_p, + svn_repos_t *repos, + const char *prop_name, + const svn_string_t *prop_val, + svn_revnum_t start_rev, + svn_revnum_t end_rev, + svn_repos_notify_func_t notify_func, + void *notify_baton, + apr_pool_t *pool) +{ + const char *test_path = "/bar"; + svn_fs_t *fs = svn_repos_fs(repos); + svn_fs_txn_t *txn; + svn_fs_root_t *txn_root; + svn_revnum_t youngest_rev = 0; + svn_stringbuf_t *dump_data = svn_stringbuf_create_empty(pool); + svn_stream_t *stream = svn_stream_from_stringbuf(dump_data, pool); + const char *expected_str; + + /* Revision 1: Any commit will do, here */ + SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool)); + SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool)); + SVN_ERR(svn_fs_make_dir(txn_root, test_path , pool)); + SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool)); + SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev)); + + /* Revision 2: Add the bad property */ + SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool)); + SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool)); + SVN_ERR(svn_fs_change_node_prop(txn_root, test_path , prop_name, prop_val, + pool)); + SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool)); + SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev)); + + /* Test that a dump completes without error. */ + SVN_ERR(svn_repos_dump_fs3(repos, stream, start_rev, end_rev, + FALSE, FALSE, + notify_func, notify_baton, + NULL, NULL, + pool)); + svn_stream_close(stream); + + /* Check that the property appears in the dump data */ + expected_str = apr_psprintf(pool, "K %d\n%s\n" + "V %d\n%s\n" + "PROPS-END\n", + (int)strlen(prop_name), prop_name, + (int)prop_val->len, prop_val->data); + SVN_TEST_ASSERT(strstr(dump_data->data, expected_str)); + + if (dump_data_p) + *dump_data_p = dump_data; + return SVN_NO_ERROR; +} + +/* Test loading in the presence of the property PROP_NAME:PROP_VAL. + * Load data from DUMP_DATA. + * REPOS is an empty repository. + */ +static svn_error_t * +test_load_bad_props(svn_stringbuf_t *dump_data, + svn_repos_t *repos, + const char *prop_name, + const svn_string_t *prop_val, + const char *parent_fspath, + svn_boolean_t validate_props, + svn_repos_notify_func_t notify_func, + void *notify_baton, + apr_pool_t *pool) +{ + const char *test_path = apr_psprintf(pool, "%s%s", + parent_fspath ? parent_fspath : "", + "/bar"); + svn_stream_t *stream = svn_stream_from_stringbuf(dump_data, pool); + svn_fs_t *fs; + svn_fs_root_t *rev_root; + svn_revnum_t youngest_rev; + svn_string_t *loaded_prop_val; + + SVN_ERR(svn_repos_load_fs5(repos, stream, + SVN_INVALID_REVNUM, SVN_INVALID_REVNUM, + svn_repos_load_uuid_default, + parent_fspath, + FALSE, FALSE, /*use_*_commit_hook*/ + validate_props, + FALSE /*ignore_dates*/, + notify_func, notify_baton, + NULL, NULL, /*cancellation*/ + pool)); + svn_stream_close(stream); + + /* Check the loaded property */ + fs = svn_repos_fs(repos); + SVN_ERR(svn_fs_youngest_rev(&youngest_rev, fs, pool)); + SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest_rev, pool)); + SVN_ERR(svn_fs_node_prop(&loaded_prop_val, + rev_root, test_path, prop_name, pool)); + SVN_TEST_ASSERT(svn_string_compare(loaded_prop_val, prop_val)); + return SVN_NO_ERROR; +} + +/* Notification receiver for test_dump_r0_mergeinfo(). This does not need to do anything, it just needs to exist. */ static void @@ -51,44 +158,115 @@ static svn_error_t * test_dump_r0_mergeinfo(const svn_test_opts_t *opts, apr_pool_t *pool) { - svn_repos_t *repos; - svn_fs_t *fs; - svn_fs_txn_t *txn; - svn_fs_root_t *txn_root; - svn_revnum_t youngest_rev = 0; + const char *prop_name = "svn:mergeinfo"; const svn_string_t *bad_mergeinfo = svn_string_create("/foo:0", pool); + svn_repos_t *repos; SVN_ERR(svn_test__create_repos(&repos, "test-repo-dump-r0-mergeinfo", opts, pool)); - fs = svn_repos_fs(repos); - - /* Revision 1: Any commit will do, here */ - SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool)); - SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool)); - SVN_ERR(svn_fs_make_dir(txn_root, "/bar", pool)); - SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool)); - SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev)); - - /* Revision 2: Add bad mergeinfo */ - SVN_ERR(svn_fs_begin_txn2(&txn, fs, youngest_rev, 0, pool)); - SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool)); - SVN_ERR(svn_fs_change_node_prop(txn_root, "/bar", "svn:mergeinfo", bad_mergeinfo, pool)); - SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool)); - SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev)); - - /* Test that a dump completes without error. In order to exercise the + /* In order to exercise the functionality under test -- that is, in order for the dump to try to parse the mergeinfo it is dumping -- the dump must start from a revision greater than 1 and must take a notification callback. */ + SVN_ERR(test_dump_bad_props(NULL, repos, + prop_name, bad_mergeinfo, + 2, SVN_INVALID_REVNUM, + dump_r0_mergeinfo_notifier, NULL, + pool)); + + return SVN_NO_ERROR; +} + +static void +load_r0_mergeinfo_notifier(void *baton, + const svn_repos_notify_t *notify, + apr_pool_t *scratch_pool) +{ + svn_boolean_t *had_mergeinfo_warning = baton; + + if (notify->action == svn_repos_notify_warning) + { + if (notify->warning == svn_repos_notify_warning_invalid_mergeinfo) + { + *had_mergeinfo_warning = TRUE; + } + } +} + +/* Regression test for the 'load' part of issue #4476 "Mergeinfo + * containing r0 makes svnsync and svnadmin dump fail". + * + * Bad mergeinfo should not prevent loading a backup, at least when we do not + * require mergeinfo revision numbers or paths to be adjusted during loading. + */ +static svn_error_t * +test_load_r0_mergeinfo(const svn_test_opts_t *opts, + apr_pool_t *pool) +{ + const char *prop_name = "svn:mergeinfo"; + const svn_string_t *prop_val = svn_string_create("/foo:0", pool); + svn_stringbuf_t *dump_data = svn_stringbuf_create_empty(pool); + + /* Produce a dump file containing bad mergeinfo */ { - svn_stringbuf_t *stringbuf = svn_stringbuf_create_empty(pool); - svn_stream_t *stream = svn_stream_from_stringbuf(stringbuf, pool); + svn_repos_t *repos; + + SVN_ERR(svn_test__create_repos(&repos, "test-repo-load-r0-mi-1", + opts, pool)); + SVN_ERR(test_dump_bad_props(&dump_data, repos, + prop_name, prop_val, + SVN_INVALID_REVNUM, SVN_INVALID_REVNUM, + NULL, NULL, pool)); + } + + /* Test loading without validating properties: should warn and succeed */ + { + svn_repos_t *repos; + svn_boolean_t had_mergeinfo_warning = FALSE; + + SVN_ERR(svn_test__create_repos(&repos, "test-repo-load-r0-mi-2", + opts, pool)); + + /* Without changing revision numbers or paths */ + SVN_ERR(test_load_bad_props(dump_data, repos, + prop_name, prop_val, + NULL /*parent_dir*/, FALSE /*validate_props*/, + load_r0_mergeinfo_notifier, &had_mergeinfo_warning, + pool)); + SVN_TEST_ASSERT(had_mergeinfo_warning); + + /* With changing revision numbers and/or paths (by loading the same data + again, on top of existing revisions, into subdirectory 'bar') */ + had_mergeinfo_warning = FALSE; + SVN_ERR(test_load_bad_props(dump_data, repos, + prop_name, prop_val, + "/bar", FALSE /*validate_props*/, + load_r0_mergeinfo_notifier, &had_mergeinfo_warning, + pool)); + SVN_TEST_ASSERT(had_mergeinfo_warning); + } + + /* Test loading with validating properties: should return an error */ + { + svn_repos_t *repos; + + SVN_ERR(svn_test__create_repos(&repos, "test-repo-load-r0-mi-3", + opts, pool)); - SVN_ERR(svn_repos_dump_fs3(repos, stream, 2, SVN_INVALID_REVNUM, - FALSE, FALSE, - dump_r0_mergeinfo_notifier, NULL, - NULL, NULL, - pool)); + /* Without changing revision numbers or paths */ + SVN_TEST_ASSERT_ANY_ERROR(test_load_bad_props(dump_data, repos, + prop_name, prop_val, + NULL /*parent_dir*/, TRUE /*validate_props*/, + NULL, NULL, + pool)); + + /* With changing revision numbers and/or paths (by loading the same data + again, on top of existing revisions, into subdirectory 'bar') */ + SVN_TEST_ASSERT_ANY_ERROR(test_load_bad_props(dump_data, repos, + prop_name, prop_val, + "/bar", TRUE /*validate_props*/, + NULL, NULL, + pool)); } return SVN_NO_ERROR; @@ -103,6 +281,8 @@ static struct svn_test_descriptor_t test SVN_TEST_NULL, SVN_TEST_OPTS_PASS(test_dump_r0_mergeinfo, "test dumping with r0 mergeinfo"), + SVN_TEST_OPTS_PASS(test_load_r0_mergeinfo, + "test loading with r0 mergeinfo"), SVN_TEST_NULL }; Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/cache-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/cache-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/cache-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/cache-test.c Fri Jan 16 14:01:35 2015 @@ -201,6 +201,102 @@ test_membuffer_cache_basic(apr_pool_t *p return basic_cache_test(cache, FALSE, pool); } +/* Implements svn_cache__deserialize_func_t */ +static svn_error_t * +raise_error_deserialize_func(void **out, + void *data, + apr_size_t data_len, + apr_pool_t *pool) +{ + return svn_error_create(APR_EGENERAL, NULL, NULL); +} + +/* Implements svn_cache__partial_getter_func_t */ +static svn_error_t * +raise_error_partial_getter_func(void **out, + const void *data, + apr_size_t data_len, + void *baton, + apr_pool_t *result_pool) +{ + return svn_error_create(APR_EGENERAL, NULL, NULL); +} + +/* Implements svn_cache__partial_setter_func_t */ +static svn_error_t * +raise_error_partial_setter_func(void **data, + apr_size_t *data_len, + void *baton, + apr_pool_t *result_pool) +{ + return svn_error_create(APR_EGENERAL, NULL, NULL); +} + +static svn_error_t * +test_membuffer_serializer_error_handling(apr_pool_t *pool) +{ + svn_cache__t *cache; + svn_membuffer_t *membuffer; + svn_revnum_t twenty = 20; + svn_boolean_t found; + void *val; + + SVN_ERR(svn_cache__membuffer_cache_create(&membuffer, 10*1024, 1, 0, + TRUE, TRUE, pool)); + + /* Create a cache with just one entry. */ + SVN_ERR(svn_cache__create_membuffer_cache(&cache, + membuffer, + serialize_revnum, + raise_error_deserialize_func, + APR_HASH_KEY_STRING, + "cache:", + SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY, + FALSE, + pool, pool)); + + SVN_ERR(svn_cache__set(cache, "twenty", &twenty, pool)); + + /* Test retrieving data from cache using full getter that + always raises an error. */ + SVN_TEST_ASSERT_ERROR( + svn_cache__get(&val, &found, cache, "twenty", pool), + APR_EGENERAL); + + /* Test retrieving data from cache using partial getter that + always raises an error. */ + SVN_TEST_ASSERT_ERROR( + svn_cache__get_partial(&val, &found, cache, "twenty", + raise_error_partial_getter_func, + NULL, pool), + APR_EGENERAL); + + /* Create a new cache. */ + SVN_ERR(svn_cache__membuffer_cache_create(&membuffer, 10*1024, 1, 0, + TRUE, TRUE, pool)); + SVN_ERR(svn_cache__create_membuffer_cache(&cache, + membuffer, + serialize_revnum, + deserialize_revnum, + APR_HASH_KEY_STRING, + "cache:", + SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY, + FALSE, + pool, pool)); + + /* Store one entry in cache. */ + SVN_ERR(svn_cache__set(cache, "twenty", &twenty, pool)); + + /* Test setting data in cache using partial setter that + always raises an error. */ + SVN_TEST_ASSERT_ERROR( + svn_cache__set_partial(cache, "twenty", + raise_error_partial_setter_func, + NULL, pool), + APR_EGENERAL); + + return SVN_NO_ERROR; +} static svn_error_t * test_memcache_long_key(const svn_test_opts_t *opts, @@ -274,6 +370,8 @@ static struct svn_test_descriptor_t test "memcache svn_cache with very long keys"), SVN_TEST_PASS2(test_membuffer_cache_basic, "basic membuffer svn_cache test"), + SVN_TEST_PASS2(test_membuffer_serializer_error_handling, + "test for error handling in membuffer svn_cache"), SVN_TEST_NULL }; Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/config-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/config-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/config-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/config-test.c Fri Jan 16 14:01:35 2015 @@ -347,6 +347,29 @@ test_read_only_mode(const svn_test_opts_ return SVN_NO_ERROR; } +static svn_error_t * +test_expand(const svn_test_opts_t *opts, + apr_pool_t *pool) +{ + svn_config_t *cfg; + const char *cfg_file, *val; + + SVN_ERR(get_config_file_path(&cfg_file, opts, pool)); + SVN_ERR(svn_config_read3(&cfg, cfg_file, TRUE, TRUE, FALSE, pool)); + + /* Get expanded "g" which requires expanding "c". */ + svn_config_get(cfg, &val, "section1", "g", NULL); + + /* Get expanded "c". */ + svn_config_get(cfg, &val, "section1", "c", NULL); + + /* With pool debugging enabled this ensures that the expanded value + of "c" was not created in a temporary pool when expanding "g". */ + SVN_TEST_STRING_ASSERT(val, "bar"); + + return SVN_NO_ERROR; +} + /* ==================================================================== If you add a new test to this file, update this array. @@ -377,6 +400,8 @@ static struct svn_test_descriptor_t test "test parsing config file with BOM"), SVN_TEST_OPTS_PASS(test_read_only_mode, "test r/o mode"), + SVN_TEST_OPTS_PASS(test_expand, + "test variable expansion"), SVN_TEST_NULL }; Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/mergeinfo-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/mergeinfo-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/mergeinfo-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/mergeinfo-test.c Fri Jan 16 14:01:35 2015 @@ -114,7 +114,7 @@ verify_mergeinfo_parse(const char *input } -#define NBR_MERGEINFO_VALS 24 +#define NBR_MERGEINFO_VALS 25 /* Valid mergeinfo values. */ static const char * const mergeinfo_vals[NBR_MERGEINFO_VALS] = @@ -148,7 +148,8 @@ static const char * const mergeinfo_vals "/A/:7-8", "/A///:7-8", "/A/.:7-8", - "/A/./B:7-8" + "/A/./B:7-8", + ":7-8", }; /* Paths corresponding to mergeinfo_vals. */ static const char * const mergeinfo_paths[NBR_MERGEINFO_VALS] = @@ -181,7 +182,8 @@ static const char * const mergeinfo_path "/A", "/A", "/A", - "/A/B" + "/A/B", + "/", }; /* First ranges from the paths identified by mergeinfo_paths. */ static svn_merge_range_t mergeinfo_ranges[NBR_MERGEINFO_VALS][MAX_NBR_RANGES] = @@ -212,6 +214,7 @@ static svn_merge_range_t mergeinfo_range { {6, 8, TRUE} }, { {6, 8, TRUE} }, { {6, 8, TRUE} }, + { {6, 8, TRUE} }, }; static svn_error_t * @@ -298,7 +301,7 @@ test_parse_combine_rangeinfo(apr_pool_t } -#define NBR_BROKEN_MERGEINFO_VALS 27 +#define NBR_BROKEN_MERGEINFO_VALS 26 /* Invalid mergeinfo values. */ static const char * const broken_mergeinfo_vals[NBR_BROKEN_MERGEINFO_VALS] = { @@ -330,8 +333,6 @@ static const char * const broken_mergein "/trunk:", "/trunk:2-9\n/branch:", "::", - /* No path */ - ":1-3", /* Invalid revisions */ "trunk:a-3", "branch:3-four", Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/string-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/string-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/string-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/string-test.c Fri Jan 16 14:01:35 2015 @@ -604,7 +604,19 @@ test_stringbuf_insert(apr_pool_t *pool) SVN_TEST_STRING_ASSERT(a->data, "test hello, world"); svn_stringbuf_insert(a, 1200, "!", 1); - return expect_stringbuf_equal(a, "test hello, world!", pool); + SVN_TEST_STRING_ASSERT(a->data, "test hello, world!"); + + svn_stringbuf_insert(a, 4, "\0-\0", 3); + SVN_TEST_ASSERT(svn_stringbuf_compare(a, + svn_stringbuf_ncreate("test\0-\0 hello, world!", + 21, pool))); + + svn_stringbuf_insert(a, 14, a->data + 4, 3); + SVN_TEST_ASSERT(svn_stringbuf_compare(a, + svn_stringbuf_ncreate("test\0-\0 hello,\0-\0 world!", + 24, pool))); + + return SVN_NO_ERROR; } static svn_error_t * @@ -643,8 +655,24 @@ test_stringbuf_replace(apr_pool_t *pool) SVN_TEST_STRING_ASSERT(a->data, "test hello, world!"); svn_stringbuf_replace(a, 1200, 199, "!!", 2); + SVN_TEST_STRING_ASSERT(a->data, "test hello, world!!!"); + + svn_stringbuf_replace(a, 10, 2, "\0-\0", 3); + SVN_TEST_ASSERT(svn_stringbuf_compare(a, + svn_stringbuf_ncreate("test hello\0-\0world!!!", + 21, pool))); + + svn_stringbuf_replace(a, 10, 3, a->data + 10, 3); + SVN_TEST_ASSERT(svn_stringbuf_compare(a, + svn_stringbuf_ncreate("test hello\0-\0world!!!", + 21, pool))); + + svn_stringbuf_replace(a, 19, 1, a->data + 10, 3); + SVN_TEST_ASSERT(svn_stringbuf_compare(a, + svn_stringbuf_ncreate("test hello\0-\0world!\0-\0!", + 23, pool))); - return expect_stringbuf_equal(a, "test hello, world!!!", pool); + return SVN_NO_ERROR; } static svn_error_t * Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_wc/op-depth-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_wc/op-depth-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_wc/op-depth-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_wc/op-depth-test.c Fri Jan 16 14:01:35 2015 @@ -9296,14 +9296,42 @@ move4_update_delself_AAA(const svn_test_ /* Update and resolve via mine strategy */ SVN_ERR(sbox_wc_update(&b, "", 2)); + { + nodes_row_t nodes[] = { + + {1, "A_moved", "normal", 1, "A", MOVED_HERE}, + {1, "A_moved/A", "normal", 1, "A/A", MOVED_HERE}, + {1, "A_moved/A/A", "normal", 1, "A/A/A", MOVED_HERE}, + {3, "A_moved/A/A", "base-deleted", NO_COPY_FROM, "AAA_1"}, + {1, "A_moved/A/A/A", "normal", 1, "A/A/A/A", MOVED_HERE}, + {3, "A_moved/A/A/A", "base-deleted", NO_COPY_FROM}, + + { 0 }, + }; + SVN_ERR(check_db_rows(&b, "A_moved", nodes)); + } + /* Resolve a few conflicts manually */ SVN_ERR(sbox_wc_resolve(&b, "A", svn_depth_empty, svn_wc_conflict_choose_mine_conflict)); + + { + nodes_row_t nodes[] = { + + {1, "A_moved", "normal", 2, "A", MOVED_HERE}, + {1, "A_moved/A", "normal", 2, "A/A", MOVED_HERE}, + + { 0 }, + }; + SVN_ERR(check_db_rows(&b, "A_moved", nodes)); + } + SVN_ERR(sbox_wc_resolve(&b, "B", svn_depth_empty, svn_wc_conflict_choose_mine_conflict)); SVN_ERR(sbox_wc_resolve(&b, "C/A", svn_depth_empty, svn_wc_conflict_choose_mine_conflict)); + /* ### These can currently only be resolved to merged ???? */ SVN_ERR(sbox_wc_resolve(&b, "D/A/A", svn_depth_empty, svn_wc_conflict_choose_merged)); @@ -9319,6 +9347,55 @@ move4_update_delself_AAA(const svn_test_ SVN_ERR(sbox_wc_resolve(&b, "", svn_depth_infinity, svn_wc_conflict_choose_mine_conflict)); /* Go back to start position */ SVN_ERR(sbox_wc_update(&b, "", 1)); + { + nodes_row_t nodes[] = { + {0, "", "normal", 1, ""}, + {0, "A", "normal", 1, "A"}, + {1, "A", "normal", 2, "B", FALSE, "A_moved", TRUE}, + {0, "A/A", "normal", 1, "A/A"}, + {1, "A/A", "normal", 2, "B/A", MOVED_HERE}, + {2, "A/A", "normal", 2, "C/A", FALSE, "BA_moved", TRUE}, + {1, "A/A/A", "base-deleted", NO_COPY_FROM}, + {0, "A/A/A", "normal", 1, "A/A/A"}, + {3, "A/A/A", "normal", 1, "D/A/A"}, + {1, "A/A/A/A", "base-deleted", NO_COPY_FROM}, + {0, "A/A/A/A", "normal", 1, "A/A/A/A"}, + {3, "A/A/A/A", "normal", 1, "D/A/A/A"}, + {1, "AAA_1", "normal", 1, "A/A/A"}, + {1, "AAA_1/A", "normal", 1, "A/A/A/A"}, + {1, "AAA_2", "normal", 1, "B/A/A"}, + {1, "AAA_2/A", "normal", 1, "B/A/A/A"}, + {1, "AAA_3", "normal", 1, "C/A/A"}, + {1, "AAA_3/A", "normal", 1, "C/A/A/A"}, + {1, "A_moved", "normal", 2, "A", MOVED_HERE}, + {1, "A_moved/A", "normal", 2, "A/A", MOVED_HERE}, + {1, "B", "base-deleted", NO_COPY_FROM, "A"}, + {0, "B", "normal", 1, "B"}, + {1, "B/A", "base-deleted", NO_COPY_FROM}, + {0, "B/A", "normal", 1, "B/A"}, + {1, "B/A/A", "base-deleted", NO_COPY_FROM}, + {0, "B/A/A", "normal", 1, "B/A/A"}, + {1, "B/A/A/A", "base-deleted", NO_COPY_FROM}, + {0, "B/A/A/A", "normal", 1, "B/A/A/A"}, + {1, "BA_moved", "normal", 1, "A/A", MOVED_HERE}, + {1, "BA_moved/A", "normal", 1, "A/A/A", MOVED_HERE}, + {1, "BA_moved/A/A", "normal", 1, "A/A/A/A", MOVED_HERE}, + {0, "C", "normal", 1, "C"}, + {2, "C/A", "base-deleted", NO_COPY_FROM, "A/A"}, + {0, "C/A", "normal", 1, "C/A"}, + {2, "C/A/A", "base-deleted", NO_COPY_FROM}, + {0, "C/A/A", "normal", 1, "C/A/A"}, + {2, "C/A/A/A", "base-deleted", NO_COPY_FROM}, + {0, "C/A/A/A", "normal", 1, "C/A/A/A"}, + {0, "D", "normal", 1, "D"}, + {0, "D/A", "normal", 1, "D/A"}, + {0, "D/A/A", "normal", 1, "D/A/A"}, + {0, "D/A/A/A", "normal", 1, "D/A/A/A"}, + + { 0 }, + }; + SVN_ERR(check_db_rows(&b, "", nodes)); + } SVN_ERR(sbox_wc_resolve(&b, "", svn_depth_infinity, svn_wc_conflict_choose_mine_conflict)); /* Update and resolve via their strategy */ SVN_ERR(sbox_wc_update(&b, "", 2)); @@ -9733,6 +9810,127 @@ break_move_in_delete(const svn_test_opts } +static svn_error_t * +nested_move_delete(const svn_test_opts_t *opts, apr_pool_t *pool) +{ + svn_test__sandbox_t b; + + SVN_ERR(svn_test__sandbox_create(&b, "nested_move_delete", opts, pool)); + + SVN_ERR(sbox_add_and_commit_greek_tree(&b)); + + SVN_ERR(sbox_wc_mkdir(&b, "A/Z")); + SVN_ERR(sbox_wc_move(&b, "A/B/lambda", "A/Z/lambda")); + + SVN_ERR(sbox_wc_delete(&b, "A/B")); + + { + nodes_row_t nodes_AB[] = { + {0, "A/B", "normal", 1, "A/B"}, + {2, "A/B", "base-deleted", NO_COPY_FROM}, + {0, "A/B/E", "normal", 1, "A/B/E"}, + {2, "A/B/E", "base-deleted", NO_COPY_FROM}, + {0, "A/B/E/alpha", "normal", 1, "A/B/E/alpha"}, + {2, "A/B/E/alpha", "base-deleted", NO_COPY_FROM}, + {0, "A/B/E/beta", "normal", 1, "A/B/E/beta"}, + {2, "A/B/E/beta", "base-deleted", NO_COPY_FROM}, + {0, "A/B/F", "normal", 1, "A/B/F"}, + {2, "A/B/F", "base-deleted", NO_COPY_FROM}, + {0, "A/B/lambda", "normal", 1, "A/B/lambda"}, + {2, "A/B/lambda", "base-deleted", NO_COPY_FROM, "A/Z/lambda"}, + {0} + }; + nodes_row_t nodes_AZ[] = { + {2, "A/Z", "normal", NO_COPY_FROM}, + {3, "A/Z/lambda", "normal", 1, "A/B/lambda", MOVED_HERE }, + {0} + }; + + SVN_ERR(check_db_rows(&b, "A/B", nodes_AB)); + SVN_ERR(check_db_rows(&b, "A/Z", nodes_AZ)); + } + + SVN_ERR(sbox_wc_move(&b, "A", "A_moved")); + + { + nodes_row_t nodes[] = { + {0, "", "normal", 0, ""}, + {0, "A", "normal", 1, "A"}, + {1, "A", "base-deleted", NO_COPY_FROM, "A_moved"}, + {0, "A/B", "normal", 1, "A/B"}, + {1, "A/B", "base-deleted", NO_COPY_FROM}, + {0, "A/B/E", "normal", 1, "A/B/E"}, + {1, "A/B/E", "base-deleted", NO_COPY_FROM}, + {0, "A/B/E/alpha", "normal", 1, "A/B/E/alpha"}, + {1, "A/B/E/alpha", "base-deleted", NO_COPY_FROM}, + {0, "A/B/E/beta", "normal", 1, "A/B/E/beta"}, + {1, "A/B/E/beta", "base-deleted", NO_COPY_FROM}, + {0, "A/B/F", "normal", 1, "A/B/F"}, + {1, "A/B/F", "base-deleted", NO_COPY_FROM}, + {0, "A/B/lambda", "normal", 1, "A/B/lambda"}, + {1, "A/B/lambda", "base-deleted", NO_COPY_FROM}, + {0, "A/C", "normal", 1, "A/C"}, + {1, "A/C", "base-deleted", NO_COPY_FROM}, + {0, "A/D", "normal", 1, "A/D"}, + {1, "A/D", "base-deleted", NO_COPY_FROM}, + {0, "A/D/G", "normal", 1, "A/D/G"}, + {1, "A/D/G", "base-deleted", NO_COPY_FROM}, + {0, "A/D/G/pi", "normal", 1, "A/D/G/pi"}, + {1, "A/D/G/pi", "base-deleted", NO_COPY_FROM}, + {0, "A/D/G/rho", "normal", 1, "A/D/G/rho"}, + {1, "A/D/G/rho", "base-deleted", NO_COPY_FROM}, + {0, "A/D/G/tau", "normal", 1, "A/D/G/tau"}, + {1, "A/D/G/tau", "base-deleted", NO_COPY_FROM}, + {0, "A/D/H", "normal", 1, "A/D/H"}, + {1, "A/D/H", "base-deleted", NO_COPY_FROM}, + {0, "A/D/H/chi", "normal", 1, "A/D/H/chi"}, + {1, "A/D/H/chi", "base-deleted", NO_COPY_FROM}, + {0, "A/D/H/omega", "normal", 1, "A/D/H/omega"}, + {1, "A/D/H/omega", "base-deleted", NO_COPY_FROM}, + {0, "A/D/H/psi", "normal", 1, "A/D/H/psi"}, + {1, "A/D/H/psi", "base-deleted", NO_COPY_FROM}, + {0, "A/D/gamma", "normal", 1, "A/D/gamma"}, + {1, "A/D/gamma", "base-deleted", NO_COPY_FROM}, + {0, "A/mu", "normal", 1, "A/mu"}, + {1, "A/mu", "base-deleted", NO_COPY_FROM}, + {1, "A_moved", "normal", 1, "A", MOVED_HERE}, + {1, "A_moved/B", "normal", 1, "A/B", MOVED_HERE}, + {2, "A_moved/B", "base-deleted", NO_COPY_FROM}, + {2, "A_moved/B/E", "base-deleted", NO_COPY_FROM}, + {1, "A_moved/B/E", "normal", 1, "A/B/E", MOVED_HERE}, + {1, "A_moved/B/E/alpha", "normal", 1, "A/B/E/alpha", MOVED_HERE}, + {2, "A_moved/B/E/alpha", "base-deleted", NO_COPY_FROM}, + {1, "A_moved/B/E/beta", "normal", 1, "A/B/E/beta", MOVED_HERE}, + {2, "A_moved/B/E/beta", "base-deleted", NO_COPY_FROM}, + {1, "A_moved/B/F", "normal", 1, "A/B/F", MOVED_HERE}, + {2, "A_moved/B/F", "base-deleted", NO_COPY_FROM}, + {1, "A_moved/B/lambda", "normal", 1, "A/B/lambda", MOVED_HERE}, + {2, "A_moved/B/lambda", "base-deleted", NO_COPY_FROM, "A_moved/Z/lambda"}, + {1, "A_moved/C", "normal", 1, "A/C", MOVED_HERE}, + {1, "A_moved/D", "normal", 1, "A/D", MOVED_HERE}, + {1, "A_moved/D/G", "normal", 1, "A/D/G", MOVED_HERE}, + {1, "A_moved/D/G/pi", "normal", 1, "A/D/G/pi", MOVED_HERE}, + {1, "A_moved/D/G/rho", "normal", 1, "A/D/G/rho", MOVED_HERE}, + {1, "A_moved/D/G/tau", "normal", 1, "A/D/G/tau", MOVED_HERE}, + {1, "A_moved/D/H", "normal", 1, "A/D/H", MOVED_HERE}, + {1, "A_moved/D/H/chi", "normal", 1, "A/D/H/chi", MOVED_HERE}, + {1, "A_moved/D/H/omega", "normal", 1, "A/D/H/omega", MOVED_HERE}, + {1, "A_moved/D/H/psi", "normal", 1, "A/D/H/psi", MOVED_HERE}, + {1, "A_moved/D/gamma", "normal", 1, "A/D/gamma", MOVED_HERE}, + {2, "A_moved/Z", "normal", NO_COPY_FROM}, + {3, "A_moved/Z/lambda", "normal", 1, "A/B/lambda", MOVED_HERE}, + {1, "A_moved/mu", "normal", 1, "A/mu", MOVED_HERE}, + {0, "iota", "normal", 1, "iota"}, + + {0} + }; + + SVN_ERR(check_db_rows(&b, "", nodes)); + } + + return SVN_NO_ERROR; +} + /* ---------------------------------------------------------------------- */ /* The list of test functions */ @@ -9854,7 +10052,7 @@ static struct svn_test_descriptor_t test "move_replace"), SVN_TEST_OPTS_PASS(layered_moved_to, "layered_moved_to"), - SVN_TEST_OPTS_XFAIL(update_within_move, + SVN_TEST_OPTS_PASS(update_within_move, "update_within_move"), SVN_TEST_OPTS_PASS(commit_moved_descendant, "commit_moved_descendant"), @@ -9876,7 +10074,7 @@ static struct svn_test_descriptor_t test "new_basemove"), SVN_TEST_OPTS_PASS(move_back, "move_back (issue 4302)"), - SVN_TEST_OPTS_XFAIL(move_update_subtree, + SVN_TEST_OPTS_PASS(move_update_subtree, "move_update_subtree (issue 4232)"), SVN_TEST_OPTS_PASS(move_parent_into_child, "move_parent_into_child (issue 4333)"), @@ -9886,7 +10084,7 @@ static struct svn_test_descriptor_t test "move retract (issue 4336)"), SVN_TEST_OPTS_PASS(move_delete_file_externals, "move/delete file externals (issue 4293)"), - SVN_TEST_OPTS_XFAIL(update_with_tree_conflict, + SVN_TEST_OPTS_PASS(update_with_tree_conflict, "update with tree conflict (issue 4347)"), SVN_TEST_OPTS_PASS(move_update_parent_replace, "move update with replaced parent (issue 4388)"), @@ -9916,7 +10114,7 @@ static struct svn_test_descriptor_t test "move4: delete AAA"), SVN_TEST_OPTS_PASS(move4_update_add_AAA, "move4: add AAA"), - SVN_TEST_OPTS_XFAIL(move4_update_delself_AAA, + SVN_TEST_OPTS_PASS(move4_update_delself_AAA, "move4: delete self AAA"), SVN_TEST_OPTS_PASS(simple_move_bump, "simple move bump"), @@ -9924,8 +10122,10 @@ static struct svn_test_descriptor_t test "movedhere extract retract"), SVN_TEST_OPTS_PASS(repo_wc_copy, "repo_wc_copy"), - SVN_TEST_OPTS_XFAIL(break_move_in_delete, + SVN_TEST_OPTS_PASS(break_move_in_delete, "break move in delete (issue 4491)"), + SVN_TEST_OPTS_PASS(nested_move_delete, + "nested move delete"), SVN_TEST_NULL }; Modified: subversion/branches/svn-auth-x509/subversion/tests/libsvn_wc/wc-test.c URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/tests/libsvn_wc/wc-test.c?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/subversion/tests/libsvn_wc/wc-test.c (original) +++ subversion/branches/svn-auth-x509/subversion/tests/libsvn_wc/wc-test.c Fri Jan 16 14:01:35 2015 @@ -141,7 +141,6 @@ test_node_get_base(const svn_test_opts_t NULL, b->wc_ctx, local_abspath, TRUE /* ignore_enoent */, - FALSE /* show_hidden */, b->pool, b->pool)); SVN_TEST_ASSERT(revision == subtest->base_rev); if (SVN_IS_VALID_REVNUM(subtest->base_rev)) Modified: subversion/branches/svn-auth-x509/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh (original) +++ subversion/branches/svn-auth-x509/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh Fri Jan 16 14:01:35 2015 @@ -28,9 +28,10 @@ SVN_VER_MINOR=`awk '/define SVN_VER_MINO cd ../obj grep obj/subversion/tests /etc/mnttab > /dev/null || mount-tmpfs -if [ $SVN_VER_MINOR -eq 8 ]; then - # A bug causes 1.8 --enable-optimize to add -flto which isn't supported - OPTIONS_1_8='--disable-optimize' +# --enable-optimize adds -flto which breaks the 1.8 C tests because +# they link main() from a library. +if [ $SVN_VER_MINOR -gt 8 ]; then + OPTIMIZE_OPTION='--enable-optimize' fi echo "============ configure" @@ -42,7 +43,7 @@ echo "============ configure" --with-sqlite=/export/home/wandisco/buildbot/sqlite-amalgamation-3071501/sqlite3.c \ --enable-optimize \ --disable-shared \ - $OPTIONS_1_8 \ + $OPTIMIZE_OPTION \ || exit $? echo "============ make" Modified: subversion/branches/svn-auth-x509/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh (original) +++ subversion/branches/svn-auth-x509/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh Fri Jan 16 14:01:35 2015 @@ -63,6 +63,14 @@ echo "============ autogen.sh" cd ${abssrc} ./autogen.sh +svnminor=$(awk '/define *SVN_VER_MINOR/ { print $3 }' subversion/include/svn_version.h) + +# --enable-optimize adds -flto which breaks the 1.8 C tests because +# they link main() from a library. +if [ ${svnminor} -gt 8 ]; then + optimizeconfig=' --enable-optimize' +fi + # # Step 3: Configure # @@ -72,8 +80,7 @@ cd ${absbld} env CC=clang CXX=clang++ \ ${abssrc}/configure \ --prefix="${absbld}/.install-prefix" \ - --disable-debug \ - --enable-optimize \ + --disable-debug${optimizeconfig} \ --disable-nls \ --disable-mod-activation \ ${aprconfig}${serfconfig} \ @@ -82,6 +89,7 @@ ${abssrc}/configure \ --enable-javahl \ --without-jikes \ --with-junit="${SVNBB_JUNIT}" + test -f config.log && mv config.log "${abssrc}/.test-logs/config.log" # Modified: subversion/branches/svn-auth-x509/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd (original) +++ subversion/branches/svn-auth-x509/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd Fri Jan 16 14:01:35 2015 @@ -75,7 +75,7 @@ if "%SVN_BRANCH%" GTR "1.9." ( IF ERRORLEVEL 1 ( echo [Perl tests reported error !ERRORLEVEL!] 1>&2 - REM SET result=1 + SET result=1 ) ELSE ( echo Done. ) Modified: subversion/branches/svn-auth-x509/tools/dev/unix-build/Makefile.svn URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/tools/dev/unix-build/Makefile.svn?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/tools/dev/unix-build/Makefile.svn (original) +++ subversion/branches/svn-auth-x509/tools/dev/unix-build/Makefile.svn Fri Jan 16 14:01:35 2015 @@ -1555,6 +1555,9 @@ endif echo >>[email protected] 'RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)$$ /svn-test-work/repositories/$$1' echo >>[email protected] 'RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$$ /svn-test-work/repositories/$$1' echo >>[email protected] 'Include "conf/$(SVN_REL_WC)*-custom.conf"' + echo >> [email protected] '#SVNInMemoryCacheSize 0' + echo >> [email protected] '#SVNCacheTextDeltas Off' + echo >> [email protected] '#SVNCacheRevProps Off' mv -f [email protected] $@ .PHONY: libpath Modified: subversion/branches/svn-auth-x509/tools/hook-scripts/mailer/tests/mailer-init.sh URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/tools/hook-scripts/mailer/tests/mailer-init.sh?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/tools/hook-scripts/mailer/tests/mailer-init.sh (original) +++ subversion/branches/svn-auth-x509/tools/hook-scripts/mailer/tests/mailer-init.sh Fri Jan 16 14:01:35 2015 @@ -101,14 +101,14 @@ echo change C6 >> dir6/file4 svn commit -m "copy dir, then make a change" # add a binary file and set property to binary value -echo -e "\x00\x01\x02\x03\x04" > file11 +printf "\x00\x01\x02\x03\x04\n" > file11 svn add file11 svn ps svn:mime-type application/octect-stream file11 svn ps prop2 -F file11 file9 svn commit -m "add binary file" # change the binary file and set property to non binary value -echo -e "\x20\x01\x02\x20" > file11 +printf "\x20\x01\x02\x20\n" > file11 svn ps prop2 propval2 file9 svn commit -m "change binary file" Modified: subversion/branches/svn-auth-x509/win-tests.py URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/win-tests.py?rev=1652409&r1=1652408&r2=1652409&view=diff ============================================================================== --- subversion/branches/svn-auth-x509/win-tests.py (original) +++ subversion/branches/svn-auth-x509/win-tests.py Fri Jan 16 14:01:35 2015 @@ -866,6 +866,7 @@ elif test_swig == 'perl': perl_exe = 'perl.exe' print('-- Running Swig Perl tests --') + sys.stdout.flush() old_cwd = os.getcwd() try: os.chdir(pm_src) @@ -884,7 +885,6 @@ elif test_swig == 'perl': if (r != 0): print('[Test runner reported failure]') failed = True - sys.exit(1) elif test_swig == 'python': failed = False swig_dir = os.path.join(abs_builddir, 'swig') @@ -916,6 +916,7 @@ elif test_swig == 'python': to_dir=swig_py_svn) print('-- Running Swig Python tests --') + sys.stdout.flush() pythonpath = swig_py_dir if 'PYTHONPATH' in os.environ: @@ -954,6 +955,7 @@ elif test_swig == 'ruby': ] print('-- Running Swig Ruby tests --') + sys.stdout.flush() old_cwd = os.getcwd() try: os.chdir(ruby_subdir)
