You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/05/26 10:57:34 UTC
svn commit: r1681721 [3/3] - in /subversion/branches/move-tracking-2: ./
subversion/ subversion/include/ subversion/include/private/
subversion/libsvn_client/ subversion/libsvn_fs_fs/ subversion/libsvn_fs_x/
subversion/libsvn_subr/ subversion/libsvn_wc...
Modified: subversion/branches/move-tracking-2/subversion/svnrdump/svnrdump.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnrdump/svnrdump.c?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnrdump/svnrdump.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnrdump/svnrdump.c Tue May 26 08:57:33 2015
@@ -85,11 +85,7 @@ enum svn_svnrdump__longopt_t
opt_force_interactive,
opt_incremental,
opt_trust_server_cert,
- opt_trust_server_cert_unknown_ca,
- opt_trust_server_cert_cn_mismatch,
- opt_trust_server_cert_expired,
- opt_trust_server_cert_not_yet_valid,
- opt_trust_server_cert_other_failure,
+ opt_trust_server_cert_failures,
opt_version
};
@@ -99,11 +95,7 @@ enum svn_svnrdump__longopt_t
opt_auth_password, \
opt_auth_nocache, \
opt_trust_server_cert, \
- opt_trust_server_cert_unknown_ca, \
- opt_trust_server_cert_cn_mismatch, \
- opt_trust_server_cert_expired, \
- opt_trust_server_cert_not_yet_valid, \
- opt_trust_server_cert_other_failure, \
+ opt_trust_server_cert_failures, \
opt_non_interactive, \
opt_force_interactive
@@ -164,30 +156,24 @@ static const apr_getopt_option_t svnrdum
"For example:\n"
" "
" servers:global:http-library=serf")},
- {"trust-server-cert", opt_trust_server_cert, 0,
- N_("deprecated; same as --trust-unknown-ca")},
- {"trust-unknown-ca", opt_trust_server_cert_unknown_ca, 0,
- N_("with --non-interactive, accept SSL server\n"
- " "
- "certificates from unknown certificate authorities")},
- {"trust-cn-mismatch", opt_trust_server_cert_cn_mismatch, 0,
- N_("with --non-interactive, accept SSL server\n"
- " "
- "certificates even if the server hostname does not\n"
- " "
- "match the certificate's common name attribute")},
- {"trust-expired", opt_trust_server_cert_expired, 0,
- N_("with --non-interactive, accept expired SSL server\n"
- " "
- "certificates")},
- {"trust-not-yet-valid", opt_trust_server_cert_not_yet_valid, 0,
- N_("with --non-interactive, accept SSL server\n"
- " "
- "certificates from the future")},
- {"trust-other-failure", opt_trust_server_cert_other_failure, 0,
- N_("with --non-interactive, accept SSL server\n"
- " "
- "certificates with failures other than the above")},
+ {"trust-server-cert", opt_trust_server_cert, 0,
+ N_("deprecated; same as\n"
+ " "
+ "--trust-server-cert-failures=unknown-ca")},
+ {"trust-server-cert-failures", opt_trust_server_cert_failures, 1,
+ N_("with --non-interactive, accept SSL server\n"
+ " "
+ "certificates with failures; ARG is comma-separated\n"
+ " "
+ "list of 'unknown-ca' (Unknown Authority),\n"
+ " "
+ "'cn-mismatch' (Hostname mismatch), 'expired'\n"
+ " "
+ "(Expired certificate), 'not-yet-valid' (Not yet\n"
+ " "
+ "valid certificate) and 'other' (all other not\n"
+ " "
+ "separately classified certificate errors).")},
{0, 0, 0, 0}
};
@@ -927,20 +913,17 @@ sub_main(int *exit_code, int argc, const
svn_hash_sets(opt_baton->skip_revprops, opt_arg, opt_arg);
break;
case opt_trust_server_cert: /* backward compat */
- case opt_trust_server_cert_unknown_ca:
trust_unknown_ca = TRUE;
break;
- case opt_trust_server_cert_cn_mismatch:
- trust_cn_mismatch = TRUE;
- break;
- case opt_trust_server_cert_expired:
- trust_expired = TRUE;
- break;
- case opt_trust_server_cert_not_yet_valid:
- trust_not_yet_valid = TRUE;
- break;
- case opt_trust_server_cert_other_failure:
- trust_other_failure = TRUE;
+ case opt_trust_server_cert_failures:
+ SVN_ERR(svn_utf_cstring_to_utf8(&opt_arg, opt_arg, pool));
+ SVN_ERR(svn_cmdline__parse_trust_options(
+ &trust_unknown_ca,
+ &trust_cn_mismatch,
+ &trust_expired,
+ &trust_not_yet_valid,
+ &trust_other_failure,
+ opt_arg, pool));
break;
case opt_config_option:
if (!config_options)
@@ -1061,25 +1044,10 @@ sub_main(int *exit_code, int argc, const
/* --trust-* can only be used with --non-interactive */
if (!non_interactive)
{
- if (trust_unknown_ca)
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-unknown-ca requires "
- "--non-interactive"));
- if (trust_cn_mismatch)
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-cn-mismatch requires "
- "--non-interactive"));
- if (trust_expired)
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-expired requires "
- "--non-interactive"));
- if (trust_not_yet_valid)
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-not-yet-valid requires "
- "--non-interactive"));
- if (trust_other_failure)
+ if (trust_unknown_ca || trust_cn_mismatch || trust_expired
+ || trust_not_yet_valid || trust_other_failure)
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-other-failure requires "
+ _("--trust-server-cert-failures requires "
"--non-interactive"));
}
Modified: subversion/branches/move-tracking-2/subversion/svnsync/svnsync.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnsync/svnsync.c?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnsync/svnsync.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnsync/svnsync.c Tue May 26 08:57:33 2015
@@ -68,11 +68,8 @@ enum svnsync__opt {
svnsync_opt_disable_locking,
svnsync_opt_version,
svnsync_opt_trust_server_cert,
- svnsync_opt_trust_server_cert_unknown_ca,
- svnsync_opt_trust_server_cert_cn_mismatch,
- svnsync_opt_trust_server_cert_expired,
- svnsync_opt_trust_server_cert_not_yet_valid,
- svnsync_opt_trust_server_cert_other_failure,
+ svnsync_opt_trust_server_cert_failures_src,
+ svnsync_opt_trust_server_cert_failures_dst,
svnsync_opt_allow_non_empty,
svnsync_opt_steal_lock
};
@@ -83,11 +80,8 @@ enum svnsync__opt {
svnsync_opt_auth_username, \
svnsync_opt_auth_password, \
svnsync_opt_trust_server_cert, \
- svnsync_opt_trust_server_cert_unknown_ca, \
- svnsync_opt_trust_server_cert_cn_mismatch, \
- svnsync_opt_trust_server_cert_expired, \
- svnsync_opt_trust_server_cert_not_yet_valid, \
- svnsync_opt_trust_server_cert_other_failure, \
+ svnsync_opt_trust_server_cert_failures_src, \
+ svnsync_opt_trust_server_cert_failures_dst, \
svnsync_opt_source_username, \
svnsync_opt_source_password, \
svnsync_opt_sync_username, \
@@ -204,29 +198,37 @@ static const apr_getopt_option_t svnsync
" "
"see --source-password and --sync-password)") },
{"trust-server-cert", svnsync_opt_trust_server_cert, 0,
- N_("deprecated; same as --trust-unknown-ca")},
- {"trust-unknown-ca", svnsync_opt_trust_server_cert_unknown_ca, 0,
- N_("with --non-interactive, accept SSL server\n"
+ N_("deprecated; same as\n"
" "
- "certificates from unknown certificate authorities")},
- {"trust-cn-mismatch", svnsync_opt_trust_server_cert_cn_mismatch, 0,
- N_("with --non-interactive, accept SSL server\n"
+ "--source-trust-server-cert-failures=unknown-ca\n"
" "
- "certificates even if the server hostname does not\n"
+ "--sync-trust-server-cert-failures=unknown-ca")},
+ {"source-trust-server-cert-failures", svnsync_opt_trust_server_cert_failures_src, 1,
+ N_("with --non-interactive, accept SSL\n"
" "
- "match the certificate's common name attribute")},
- {"trust-expired", svnsync_opt_trust_server_cert_expired, 0,
- N_("with --non-interactive, accept expired SSL server\n"
+ "server certificates with failures.\n"
" "
- "certificates")},
- {"trust-not-yet-valid", svnsync_opt_trust_server_cert_not_yet_valid, 0,
- N_("with --non-interactive, accept SSL server\n"
+ "ARG is a comma-separated list of:\n"
" "
- "certificates from the future")},
- {"trust-other-failure", svnsync_opt_trust_server_cert_other_failure, 0,
- N_("with --non-interactive, accept SSL server\n"
+ "- 'unknown-ca' (Unknown Authority)\n"
" "
- "certificates with failures other than the above")},
+ "- 'cn-mismatch' (Hostname mismatch)\n"
+ " "
+ "- 'expired' (Expired certificate)\n"
+ " "
+ "- 'not-yet-valid' (Not yet valid certificate)\n"
+ " "
+ "- 'other' (all other not separately classified\n"
+ " "
+ " certificate errors).\n"
+ " "
+ "Applied to the source URL.")},
+ {"sync-trust-server-cert-failures", svnsync_opt_trust_server_cert_failures_dst, 1,
+ N_("Like\n"
+ " "
+ "--source-trust-server-cert-failures,\n"
+ " "
+ "but applied to the destination URL.")},
{"source-username", svnsync_opt_source_username, 1,
N_("connect to source repository with username ARG") },
{"source-password", svnsync_opt_source_password, 1,
@@ -280,11 +282,13 @@ static const apr_getopt_option_t svnsync
typedef struct opt_baton_t {
svn_boolean_t non_interactive;
- svn_boolean_t trust_server_cert_unknown_ca;
- svn_boolean_t trust_server_cert_cn_mismatch;
- svn_boolean_t trust_server_cert_expired;
- svn_boolean_t trust_server_cert_not_yet_valid;
- svn_boolean_t trust_server_cert_other_failure;
+ struct {
+ svn_boolean_t trust_server_cert_unknown_ca;
+ svn_boolean_t trust_server_cert_cn_mismatch;
+ svn_boolean_t trust_server_cert_expired;
+ svn_boolean_t trust_server_cert_not_yet_valid;
+ svn_boolean_t trust_server_cert_other_failure;
+ } src_trust, dst_trust;
svn_boolean_t no_auth_cache;
svn_auth_baton_t *source_auth_baton;
svn_auth_baton_t *sync_auth_baton;
@@ -2008,24 +2012,30 @@ sub_main(int *exit_code, int argc, const
break;
case svnsync_opt_trust_server_cert: /* backwards compat */
- case svnsync_opt_trust_server_cert_unknown_ca:
- opt_baton.trust_server_cert_unknown_ca = TRUE;
- break;
-
- case svnsync_opt_trust_server_cert_cn_mismatch:
- opt_baton.trust_server_cert_cn_mismatch = TRUE;
- break;
-
- case svnsync_opt_trust_server_cert_expired:
- opt_baton.trust_server_cert_expired = TRUE;
+ opt_baton.src_trust.trust_server_cert_unknown_ca = TRUE;
+ opt_baton.dst_trust.trust_server_cert_unknown_ca = TRUE;
break;
- case svnsync_opt_trust_server_cert_not_yet_valid:
- opt_baton.trust_server_cert_not_yet_valid = TRUE;
+ case svnsync_opt_trust_server_cert_failures_src:
+ SVN_ERR(svn_utf_cstring_to_utf8(&opt_arg, opt_arg, pool));
+ SVN_ERR(svn_cmdline__parse_trust_options(
+ &opt_baton.src_trust.trust_server_cert_unknown_ca,
+ &opt_baton.src_trust.trust_server_cert_cn_mismatch,
+ &opt_baton.src_trust.trust_server_cert_expired,
+ &opt_baton.src_trust.trust_server_cert_not_yet_valid,
+ &opt_baton.src_trust.trust_server_cert_other_failure,
+ opt_arg, pool));
break;
- case svnsync_opt_trust_server_cert_other_failure:
- opt_baton.trust_server_cert_other_failure = TRUE;
+ case svnsync_opt_trust_server_cert_failures_dst:
+ SVN_ERR(svn_utf_cstring_to_utf8(&opt_arg, opt_arg, pool));
+ SVN_ERR(svn_cmdline__parse_trust_options(
+ &opt_baton.dst_trust.trust_server_cert_unknown_ca,
+ &opt_baton.dst_trust.trust_server_cert_cn_mismatch,
+ &opt_baton.dst_trust.trust_server_cert_expired,
+ &opt_baton.dst_trust.trust_server_cert_not_yet_valid,
+ &opt_baton.dst_trust.trust_server_cert_other_failure,
+ opt_arg, pool));
break;
case svnsync_opt_no_auth_cache:
@@ -2216,25 +2226,20 @@ sub_main(int *exit_code, int argc, const
/* --trust-* can only be used with --non-interactive */
if (!opt_baton.non_interactive)
{
- if (opt_baton.trust_server_cert_unknown_ca)
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-unknown-ca requires "
- "--non-interactive"));
- if (opt_baton.trust_server_cert_cn_mismatch)
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-cn-mismatch requires "
- "--non-interactive"));
- if (opt_baton.trust_server_cert_expired)
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-expired requires "
- "--non-interactive"));
- if (opt_baton.trust_server_cert_not_yet_valid)
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-not-yet-valid requires "
- "--non-interactive"));
- if (opt_baton.trust_server_cert_other_failure)
+ if (opt_baton.src_trust.trust_server_cert_unknown_ca
+ || opt_baton.src_trust.trust_server_cert_cn_mismatch
+ || opt_baton.src_trust.trust_server_cert_expired
+ || opt_baton.src_trust.trust_server_cert_not_yet_valid
+ || opt_baton.src_trust.trust_server_cert_other_failure
+ || opt_baton.dst_trust.trust_server_cert_unknown_ca
+ || opt_baton.dst_trust.trust_server_cert_cn_mismatch
+ || opt_baton.dst_trust.trust_server_cert_expired
+ || opt_baton.dst_trust.trust_server_cert_not_yet_valid
+ || opt_baton.dst_trust.trust_server_cert_other_failure)
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("--trust-other-failure requires "
+ _("--source-trust-server-cert-failures "
+ "and "
+ "--sync-trust-server-cert-failures require "
"--non-interactive"));
}
@@ -2354,11 +2359,11 @@ sub_main(int *exit_code, int argc, const
opt_baton.source_password,
opt_baton.config_dir,
opt_baton.no_auth_cache,
- opt_baton.trust_server_cert_unknown_ca,
- opt_baton.trust_server_cert_cn_mismatch,
- opt_baton.trust_server_cert_expired,
- opt_baton.trust_server_cert_not_yet_valid,
- opt_baton.trust_server_cert_other_failure,
+ opt_baton.src_trust.trust_server_cert_unknown_ca,
+ opt_baton.src_trust.trust_server_cert_cn_mismatch,
+ opt_baton.src_trust.trust_server_cert_expired,
+ opt_baton.src_trust.trust_server_cert_not_yet_valid,
+ opt_baton.src_trust.trust_server_cert_other_failure,
config,
check_cancel, NULL,
pool);
@@ -2370,11 +2375,11 @@ sub_main(int *exit_code, int argc, const
opt_baton.sync_password,
opt_baton.config_dir,
opt_baton.no_auth_cache,
- opt_baton.trust_server_cert_unknown_ca,
- opt_baton.trust_server_cert_cn_mismatch,
- opt_baton.trust_server_cert_expired,
- opt_baton.trust_server_cert_not_yet_valid,
- opt_baton.trust_server_cert_other_failure,
+ opt_baton.dst_trust.trust_server_cert_unknown_ca,
+ opt_baton.dst_trust.trust_server_cert_cn_mismatch,
+ opt_baton.dst_trust.trust_server_cert_expired,
+ opt_baton.dst_trust.trust_server_cert_not_yet_valid,
+ opt_baton.dst_trust.trust_server_cert_other_failure,
config,
check_cancel, NULL,
pool);
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/basic_tests.py?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/basic_tests.py Tue May 26 08:57:33 2015
@@ -3100,6 +3100,7 @@ def plaintext_password_storage_disabled(
"-m", "committing with plaintext password storage disabled",
"--username", svntest.main.wc_author,
"--password", svntest.main.wc_passwd,
+ "--trust-server-cert-failures", "unknown-ca",
"--non-interactive", wc_dir)
# Verify that the password was not stored in plaintext
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py Tue May 26 08:57:33 2015
@@ -4155,6 +4155,153 @@ def file_external_to_normal_file(sbox):
svntest.actions.run_and_verify_update(wc_dir, expected_output, None,
expected_status)
+@Issue(4580)
+def file_external_recorded_info(sbox):
+ "check file external recorded info"
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+
+ # r2 - Create file external
+ svntest.actions.run_and_verify_svnmucc(None, [],
+ '-U', sbox.repo_url,
+ '-m', '',
+ 'propset', 'svn:externals',
+ '^/iota i', '')
+
+ expected_output = svntest.wc.State(wc_dir, {
+ '' : Item(status=' U'),
+ 'i' : Item(status='A '),
+ })
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
+ expected_status.add({
+ 'i' : Item(status=' ', wc_rev='2', switched='X')
+ })
+ svntest.actions.run_and_verify_update(wc_dir, expected_output, None,
+ expected_status, [], False,
+ '-r', 2, wc_dir)
+
+ expected_infos = [{
+ 'Path': re.escape(sbox.ospath('i')),
+ 'Relative URL': re.escape('^/iota'),
+ 'Revision': '2',
+ 'Last Changed Rev': '1',
+ 'Last Changed Author': 'jrandom'
+ }]
+ svntest.actions.run_and_verify_info(expected_infos, sbox.ospath('i'))
+
+ # r3 - No-op change
+ svntest.actions.run_and_verify_svnmucc(None, [],
+ '-U', sbox.repo_url,
+ '-m', '',
+ 'cp', '1', 'iota', 'iotb')
+
+ expected_output = svntest.wc.State(wc_dir, {
+ 'iotb' : Item(status='A '),
+ })
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
+ expected_status.add({
+ 'i' : Item(status=' ', wc_rev='3', switched='X'),
+ 'iotb' : Item(status=' ', wc_rev='3')
+ })
+ svntest.actions.run_and_verify_update(wc_dir, expected_output, None,
+ expected_status, [], False,
+ '-r', 3, wc_dir)
+
+ expected_infos = [{
+ 'Path': re.escape(sbox.ospath('i')),
+ 'Relative URL': re.escape('^/iota'),
+ 'Revision': '3',
+ 'Last Changed Rev': '1',
+ 'Last Changed Author': 'jrandom'
+ }]
+ svntest.actions.run_and_verify_info(expected_infos, sbox.ospath('i'))
+
+ # r4 - Update url
+ svntest.actions.run_and_verify_svnmucc(None, [],
+ '-U', sbox.repo_url,
+ '-m', '',
+ 'propset', 'svn:externals',
+ '^/iotb i', '')
+
+
+ expected_output = svntest.wc.State(wc_dir, {
+ '' : Item(status=' U'),
+ })
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 4)
+ expected_status.add({
+ 'i' : Item(status=' ', wc_rev='4', switched='X'),
+ 'iotb' : Item(status=' ', wc_rev='4')
+ })
+ svntest.actions.run_and_verify_update(wc_dir, expected_output, None,
+ expected_status, [], False,
+ '-r', 4, wc_dir)
+
+ expected_infos = [{
+ 'Path': re.escape(sbox.ospath('i')),
+ 'Relative URL': re.escape('^/iotb'),
+ 'Revision': '4',
+ 'Last Changed Rev': '3',
+ 'Last Changed Author': 'jrandom'
+ }]
+ svntest.actions.run_and_verify_info(expected_infos, sbox.ospath('i'))
+
+ # r5 - Replace file
+ svntest.actions.run_and_verify_svnmucc(None, [],
+ '-U', sbox.repo_url,
+ '-m', '',
+ 'rm', 'iotb',
+ 'cp', '3', 'A/mu', 'iotb')
+
+ expected_output = svntest.wc.State(wc_dir, {
+ 'i' : Item(status='U '),
+ 'iotb' : Item(status='A ', prev_status='D '),
+ })
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 5)
+ expected_status.add({
+ 'i' : Item(status=' ', wc_rev='5', switched='X'),
+ 'iotb' : Item(status=' ', wc_rev='5')
+ })
+ svntest.actions.run_and_verify_update(wc_dir, expected_output, None,
+ expected_status, [], False,
+ '-r', 5, wc_dir)
+
+ expected_infos = [{
+ 'Path': re.escape(sbox.ospath('i')),
+ 'Relative URL': re.escape('^/iotb'),
+ 'Revision': '5',
+ 'Last Changed Rev': '5',
+ 'Last Changed Author': 'jrandom'
+ }]
+ svntest.actions.run_and_verify_info(expected_infos, sbox.ospath('i'))
+
+ # Back to r2. But with a conflict
+ sbox.simple_append('i', 'i')
+ expected_output = svntest.wc.State(wc_dir, {
+ '' : Item(status=' U'),
+ 'iotb' : Item(status='D '),
+ 'i' : Item(status='C '),
+ })
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
+ expected_status.add({
+ 'i' : Item(status='C ', wc_rev='5', switched='X'),
+ })
+ svntest.actions.run_and_verify_update(wc_dir, expected_output, None,
+ expected_status, [], False,
+ '-r', 2, wc_dir)
+
+ expected_infos = [{
+ 'Path': re.escape(sbox.ospath('i')),
+ 'Relative URL': re.escape('^/iota'),
+ 'Revision': '5',
+ 'Last Changed Rev': '1',
+ 'Last Changed Author': 'jrandom',
+ 'Conflict Details': re.escape('incoming file edit upon switch'
+ ' Source left: (file) ^/iotb@5'
+ ' Source right: (file) ^/iota@5')
+ }]
+ svntest.actions.run_and_verify_info(expected_infos, sbox.ospath('i'))
+
########################################################################
# Run the tests
@@ -4229,6 +4376,7 @@ test_list = [ None,
copy_pin_externals_whitespace_dir,
nested_notification,
file_external_to_normal_file,
+ file_external_recorded_info,
]
if __name__ == '__main__':
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn--help_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn--version--quiet_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn--version--quiet_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn--version_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn--version_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help--version_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help--version_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_bogus-cmd_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_bogus-cmd_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout Tue May 26 08:57:33 2015
@@ -122,18 +122,15 @@ Global options:
only if standard input is a terminal device)
--force-interactive : do interactive prompting even if standard input
is not a terminal device
- --trust-server-cert : deprecated; same as --trust-unknown-ca
- --trust-unknown-ca : with --non-interactive, accept SSL server
- certificates from unknown certificate authorities
- --trust-cn-mismatch : with --non-interactive, accept SSL server
- certificates even if the server hostname does not
- match the certificate's common name attribute
- --trust-expired : with --non-interactive, accept expired SSL server
- certificates
- --trust-not-yet-valid : with --non-interactive, accept SSL server
- certificates from the future
- --trust-other-failure : with --non-interactive, accept SSL server
- certificates with failures other than the above
+ --trust-server-cert : deprecated; same as
+ --trust-server-cert-failures=unknown-ca
+ --trust-server-cert-failures ARG : with --non-interactive, accept SSL server
+ certificates with failures; ARG is comma-separated
+ list of 'unknown-ca' (Unknown Authority),
+ 'cn-mismatch' (Hostname mismatch), 'expired'
+ (Expired certificate), 'not-yet-valid' (Not yet
+ valid certificate) and 'other' (all other not
+ separately classified certificate errors).
--config-dir ARG : read user configuration files from directory ARG
--config-option ARG : set user configuration option in the format:
FILE:SECTION:OPTION=[VALUE]
@@ -215,18 +212,15 @@ Global options:
only if standard input is a terminal device)
--force-interactive : do interactive prompting even if standard input
is not a terminal device
- --trust-server-cert : deprecated; same as --trust-unknown-ca
- --trust-unknown-ca : with --non-interactive, accept SSL server
- certificates from unknown certificate authorities
- --trust-cn-mismatch : with --non-interactive, accept SSL server
- certificates even if the server hostname does not
- match the certificate's common name attribute
- --trust-expired : with --non-interactive, accept expired SSL server
- certificates
- --trust-not-yet-valid : with --non-interactive, accept SSL server
- certificates from the future
- --trust-other-failure : with --non-interactive, accept SSL server
- certificates with failures other than the above
+ --trust-server-cert : deprecated; same as
+ --trust-server-cert-failures=unknown-ca
+ --trust-server-cert-failures ARG : with --non-interactive, accept SSL server
+ certificates with failures; ARG is comma-separated
+ list of 'unknown-ca' (Unknown Authority),
+ 'cn-mismatch' (Hostname mismatch), 'expired'
+ (Expired certificate), 'not-yet-valid' (Not yet
+ valid certificate) and 'other' (all other not
+ separately classified certificate errors).
--config-dir ARG : read user configuration files from directory ARG
--config-option ARG : set user configuration option in the format:
FILE:SECTION:OPTION=[VALUE]
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_stderr
------------------------------------------------------------------------------
svn:eol-style = LF
Propchange: subversion/branches/move-tracking-2/subversion/tests/cmdline/getopt_tests_data/svn_stdout
------------------------------------------------------------------------------
svn:eol-style = LF
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/lock_tests.py?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/lock_tests.py Tue May 26 08:57:33 2015
@@ -2076,22 +2076,36 @@ def dav_lock_timeout(sbox):
expected_status.tweak('iota', writelocked='K')
svntest.actions.run_and_verify_status(wc_dir, expected_status)
+def http_connection(repo_url):
+
+ import httplib
+ from urlparse import urlparse
+
+ loc = urlparse(repo_url)
+ if loc.scheme == 'http':
+ h = httplib.HTTPConnection(loc.hostname, loc.port)
+ else:
+ try:
+ import ssl # new in python 2.6
+ c = ssl.create_default_context()
+ c.check_hostname = False
+ c.verify_mode = ssl.CERT_NONE
+ h = httplib.HTTPSConnection(loc.hostname, loc.port, context=c)
+ except:
+ h = httplib.HTTPSConnection(loc.hostname, loc.port)
+ return h
+
@SkipUnless(svntest.main.is_ra_type_dav)
def create_dav_lock_timeout(sbox):
"create generic DAV lock with timeout"
import httplib
- from urlparse import urlparse
import base64
sbox.build()
wc_dir = sbox.wc_dir
- loc = urlparse(sbox.repo_url)
- if loc.scheme == 'http':
- h = httplib.HTTPConnection(loc.hostname, loc.port)
- else:
- h = httplib.HTTPSConnection(loc.hostname, loc.port)
+ h = http_connection(sbox.repo_url)
lock_body = '<?xml version="1.0" encoding="utf-8" ?>' \
'<D:lockinfo xmlns:D="DAV:">' \
@@ -2227,7 +2241,6 @@ def dav_lock_refresh(sbox):
"refresh timeout of DAV lock"
import httplib
- from urlparse import urlparse
import base64
sbox.build(create_wc = False)
@@ -2237,12 +2250,7 @@ def dav_lock_refresh(sbox):
sbox.repo_url + '/iota')
# Try to refresh lock using 'If' header
- loc = urlparse(sbox.repo_url)
-
- if loc.scheme == 'http':
- h = httplib.HTTPConnection(loc.hostname, loc.port)
- else:
- h = httplib.HTTPSConnection(loc.hostname, loc.port)
+ h = http_connection(sbox.repo_url)
lock_token = svntest.actions.run_and_parse_info(sbox.repo_url + '/iota')[0]['Lock Token']
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmucc_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmucc_tests.py?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmucc_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmucc_tests.py Tue May 26 08:57:33 2015
@@ -453,6 +453,56 @@ rm A/B/C/Y
'log', '-qvr3', repo_url)
+def prohibited_deletes_and_moves(sbox):
+ "test prohibited delete and move operations"
+
+ # These action sequences were allowed in 1.8.13, but are prohibited in 1.9.x
+ # and later. Most of them probably indicate an inadvertent user mistake.
+ # See dev@, 2015-05-11, "Re: Issue 4579 / svnmucc fails to process certain
+ # deletes", <http://svn.haxx.se/dev/archive-2015-05/0038.shtml>
+
+ sbox.build()
+ svntest.main.file_write(sbox.ospath('file'), "New contents")
+
+ xtest_svnmucc(sbox.repo_url,
+ ["svnmucc: E200009: Can't delete node at 'iota'",
+ ], #---------
+ '-m', 'r2: modify and delete /iota',
+ 'put', sbox.ospath('file'), 'iota',
+ 'rm', 'iota')
+
+ xtest_svnmucc(sbox.repo_url,
+ ["svnmucc: E200009: Can't delete node at 'iota'",
+ ], #---------
+ '-m', 'r2: propset and delete /iota',
+ 'propset', 'prop', 'val', 'iota',
+ 'rm', 'iota')
+
+ xtest_svnmucc(sbox.repo_url,
+ ["svnmucc: E160013: Can't delete node at 'iota' as it does "
+ "not exist",
+ ], #---------
+ '-m', 'r2: delete and delete /iota',
+ 'rm', 'iota',
+ 'rm', 'iota')
+
+ # Subversion 1.8.13 used to move /iota without applying the text change.
+ xtest_svnmucc(sbox.repo_url,
+ ["svnmucc: E200009: Can't delete node at 'iota'",
+ ], #---------
+ '-m', 'r2: modify and move /iota',
+ 'put', sbox.ospath('file'), 'iota',
+ 'mv', 'iota', 'iota2')
+
+ # Subversion 1.8.13 used to move /A without applying the inner remove.
+ xtest_svnmucc(sbox.repo_url,
+ ["svnmucc: E200009: Can't delete node at 'A'",
+ ], #---------
+ '-m', 'r2: delete /A/B and move /A',
+ 'rm', 'A/B',
+ 'mv', 'A', 'A1')
+
+
######################################################################
test_list = [ None,
@@ -462,6 +512,7 @@ test_list = [ None,
too_many_log_messages,
no_log_msg_non_interactive,
nested_replaces,
+ prohibited_deletes_and_moves,
]
if __name__ == '__main__':
Propchange: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue May 26 08:57:33 2015
@@ -1,7 +1,7 @@
.libs
test-*
locks-test
-fs-test
+fs-*test
*.o
*.lo
*~
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-sequential-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-sequential-test.c?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-sequential-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-sequential-test.c Tue May 26 08:57:33 2015
@@ -251,9 +251,8 @@ static int max_threads = 1; /* Run test
static struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
- SVN_TEST_OPTS_XFAIL_OTOH(reopen_modify,
- "test reopen and modify txn",
- SVN_TEST_PASS_IF_FS_TYPE_IS_NOT("fsfs")),
+ SVN_TEST_OPTS_PASS(reopen_modify,
+ "test reopen and modify txn"),
SVN_TEST_NULL
};
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c Tue May 26 08:57:33 2015
@@ -6891,6 +6891,71 @@ test_internal_txn_props(const svn_test_o
return SVN_NO_ERROR;
}
+/* A freeze function that expects an 'svn_error_t *' baton, and returns it. */
+/* This function implements svn_fs_freeze_func_t. */
+static svn_error_t *
+freeze_func(void *baton, apr_pool_t *pool)
+{
+ return baton;
+}
+
+static svn_error_t *
+freeze_and_commit(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_fs_t *fs;
+ svn_fs_txn_t *txn;
+ svn_fs_root_t *txn_root;
+ svn_revnum_t new_rev = 0;
+ apr_pool_t *subpool = svn_pool_create(pool);
+
+ if (!strcmp(opts->fs_type, "bdb"))
+ return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL,
+ "this will not test BDB repositories");
+
+ SVN_ERR(svn_test__create_fs(&fs, "test-freeze-and-commit", opts, subpool));
+
+ /* This test used to FAIL with an SQLite error since svn_fs_freeze()
+ * wouldn't unlock rep-cache.db. Therefore, part of the role of creating
+ * the Greek tree is to create a rep-cache.db, in order to test that
+ * svn_fs_freeze() unlocks it. */
+
+ /* r1: Commit the Greek tree. */
+ SVN_ERR(svn_fs_begin_txn(&txn, fs, new_rev, subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
+ SVN_ERR(svn_test__create_greek_tree(txn_root, subpool));
+ SVN_ERR(test_commit_txn(&new_rev, txn, NULL, subpool));
+
+ /* Freeze and unfreeze. */
+ SVN_ERR(svn_fs_freeze(fs, freeze_func, SVN_NO_ERROR, pool));
+
+ /* Freeze again, but have freeze_func fail. */
+ {
+ svn_error_t *err = svn_error_create(APR_EGENERAL, NULL, NULL);
+ SVN_TEST_ASSERT_ERROR(svn_fs_freeze(fs, freeze_func, err, pool),
+ err->apr_err);
+ }
+
+ /* Make some commit using same FS instance. */
+ SVN_ERR(svn_fs_begin_txn(&txn, fs, new_rev, pool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ SVN_ERR(svn_fs_change_node_prop(txn_root, "", "temperature",
+ svn_string_create("310.05", pool),
+ pool));
+ SVN_ERR(test_commit_txn(&new_rev, txn, NULL, pool));
+
+ /* Re-open FS and make another commit. */
+ SVN_ERR(svn_fs_open(&fs, "test-freeze-and-commit", NULL, subpool));
+ SVN_ERR(svn_fs_begin_txn(&txn, fs, new_rev, pool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ SVN_ERR(svn_fs_change_node_prop(txn_root, "/", "temperature",
+ svn_string_create("451", pool),
+ pool));
+ SVN_ERR(test_commit_txn(&new_rev, txn, NULL, pool));
+
+ return SVN_NO_ERROR;
+}
+
/* ------------------------------------------------------------------------ */
/* The test table. */
@@ -7023,6 +7088,8 @@ static struct svn_test_descriptor_t test
"test setting and getting internal txn props"),
SVN_TEST_OPTS_PASS(check_txn_related,
"test svn_fs_check_related for transactions"),
+ SVN_TEST_OPTS_PASS(freeze_and_commit,
+ "freeze and commit"),
SVN_TEST_NULL
};
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/cache-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/cache-test.c?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/cache-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/cache-test.c Tue May 26 08:57:33 2015
@@ -440,7 +440,107 @@ test_membuffer_cache_clearing(apr_pool_t
return SVN_NO_ERROR;
}
-
+static svn_error_t *
+test_membuffer_unaligned_string_keys(apr_pool_t *pool)
+{
+ svn_cache__t *cache;
+ svn_membuffer_t *membuffer;
+ svn_revnum_t fifty = 50;
+ svn_revnum_t *answer;
+ svn_boolean_t found = FALSE;
+
+ /* Allocate explicitly to have aligned string and this add one
+ * to have unaligned string.*/
+ const char *aligned_key = apr_pstrdup(pool, "fifty");
+ const char *unaligned_key = apr_pstrdup(pool, "_fifty") + 1;
+ const char *unaligned_prefix = apr_pstrdup(pool, "_cache:") + 1;
+
+ 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, deserialize_revnum,
+ APR_HASH_KEY_STRING, unaligned_prefix,
+ SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY, FALSE,
+ pool, pool));
+
+ SVN_ERR(svn_cache__set(cache, unaligned_key, &fifty, pool));
+ SVN_ERR(svn_cache__get((void **) &answer, &found, cache, unaligned_key,
+ pool));
+
+ if (! found)
+ return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
+ "cache failed to find entry for 'fifty'");
+ if (*answer != 50)
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "expected 50 but found '%ld'", *answer);
+
+ /* Make sure that we get proper result when providing aligned key*/
+ SVN_ERR(svn_cache__get((void **) &answer, &found, cache, aligned_key,
+ pool));
+
+ if (! found)
+ return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
+ "cache failed to find entry for 'fifty'");
+ if (*answer != 50)
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "expected 50 but found '%ld'", *answer);
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_membuffer_unaligned_fixed_keys(apr_pool_t *pool)
+{
+ svn_cache__t *cache;
+ svn_membuffer_t *membuffer;
+ svn_revnum_t fifty = 50;
+ svn_revnum_t *answer;
+ svn_boolean_t found = FALSE;
+
+ /* Allocate explicitly to have aligned string and this add one
+ * to have unaligned key.*/
+ const char *aligned_key = apr_pstrdup(pool, "12345678");
+ const char *unaligned_key = apr_pstrdup(pool, "_12345678") + 1;
+ const char *unaligned_prefix = apr_pstrdup(pool, "_cache:") + 1;
+
+ 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, deserialize_revnum,
+ 8 /* klen*/,
+ unaligned_prefix,
+ SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY, FALSE,
+ pool, pool));
+
+ SVN_ERR(svn_cache__set(cache, unaligned_key, &fifty, pool));
+ SVN_ERR(svn_cache__get((void **) &answer, &found, cache, unaligned_key,
+ pool));
+
+ if (! found)
+ return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
+ "cache failed to find entry for '12345678' (unaligned)");
+ if (*answer != 50)
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "expected 50 but found '%ld'", *answer);
+
+ /* Make sure that we get proper result when providing aligned key*/
+ SVN_ERR(svn_cache__get((void **) &answer, &found, cache, aligned_key,
+ pool));
+
+ if (! found)
+ return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
+ "cache failed to find entry for '12345678' (aligned)");
+ if (*answer != 50)
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "expected 50 but found '%ld'", *answer);
+
+ return SVN_NO_ERROR;
+}
+
/* The test table. */
static int max_threads = 1;
@@ -460,6 +560,10 @@ static struct svn_test_descriptor_t test
"test for error handling in membuffer svn_cache"),
SVN_TEST_PASS2(test_membuffer_cache_clearing,
"test clearing a membuffer svn_cache"),
+ SVN_TEST_PASS2(test_membuffer_unaligned_string_keys,
+ "test membuffer cache with unaligned string keys"),
+ SVN_TEST_PASS2(test_membuffer_unaligned_fixed_keys,
+ "test membuffer cache with unaligned fixed keys"),
SVN_TEST_NULL
};
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/checksum-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/checksum-test.c?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/checksum-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/checksum-test.c Tue May 26 08:57:33 2015
@@ -27,7 +27,6 @@
#include "svn_error.h"
#include "svn_io.h"
-#include "private/svn_pseudo_md5.h"
#include "../svn_test.h"
@@ -92,38 +91,6 @@ test_checksum_empty(apr_pool_t *pool)
return SVN_NO_ERROR;
}
-static svn_error_t *
-test_pseudo_md5(apr_pool_t *pool)
-{
- apr_uint32_t input[16] = { 0 };
- apr_uint32_t digest_15[4] = { 0 };
- apr_uint32_t digest_31[4] = { 0 };
- apr_uint32_t digest_63[4] = { 0 };
- svn_checksum_t *checksum;
-
- /* input is all 0s but the hash shall be different
- (due to different input sizes)*/
- svn__pseudo_md5_15(digest_15, input);
- svn__pseudo_md5_31(digest_31, input);
- svn__pseudo_md5_63(digest_63, input);
-
- SVN_TEST_ASSERT(memcmp(digest_15, digest_31, sizeof(digest_15)));
- SVN_TEST_ASSERT(memcmp(digest_15, digest_63, sizeof(digest_15)));
- SVN_TEST_ASSERT(memcmp(digest_31, digest_63, sizeof(digest_15)));
-
- /* the checksums shall also be different from "proper" MD5 */
- SVN_ERR(svn_checksum(&checksum, svn_checksum_md5, input, 15, pool));
- SVN_TEST_ASSERT(memcmp(digest_15, checksum->digest, sizeof(digest_15)));
-
- SVN_ERR(svn_checksum(&checksum, svn_checksum_md5, input, 31, pool));
- SVN_TEST_ASSERT(memcmp(digest_31, checksum->digest, sizeof(digest_15)));
-
- SVN_ERR(svn_checksum(&checksum, svn_checksum_md5, input, 63, pool));
- SVN_TEST_ASSERT(memcmp(digest_63, checksum->digest, sizeof(digest_15)));
-
- return SVN_NO_ERROR;
-}
-
/* Verify that "zero" checksums work properly for the given checksum KIND.
*/
static svn_error_t *
@@ -318,8 +285,6 @@ static struct svn_test_descriptor_t test
"checksum parse"),
SVN_TEST_PASS2(test_checksum_empty,
"checksum emptiness"),
- SVN_TEST_PASS2(test_pseudo_md5,
- "pseudo-md5 compatibility"),
SVN_TEST_PASS2(zero_match,
"zero checksum matching"),
SVN_TEST_OPTS_PASS(zlib_expansion_test,
Modified: subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c Tue May 26 08:57:33 2015
@@ -399,27 +399,30 @@ static svn_error_t *
get_dir_entries(apr_hash_t *tree_entries,
svn_fs_root_t *root,
const char *path,
- apr_pool_t *pool)
+ apr_pool_t *scratch_pool)
{
apr_hash_t *entries;
apr_hash_index_t *hi;
+ apr_pool_t *iterpool = svn_pool_create(scratch_pool);
+ apr_pool_t *result_pool = apr_hash_pool_get(tree_entries);
- SVN_ERR(svn_fs_dir_entries(&entries, root, path, pool));
+ SVN_ERR(svn_fs_dir_entries(&entries, root, path, scratch_pool));
/* Copy this list to the master list with the path prepended to the
names */
- for (hi = apr_hash_first(pool, entries); hi; hi = apr_hash_next(hi))
+ for (hi = apr_hash_first(scratch_pool, entries); hi; hi = apr_hash_next(hi))
{
void *val;
svn_fs_dirent_t *dirent;
const char *full_path;
+ svn_pool_clear(iterpool);
apr_hash_this(hi, NULL, NULL, &val);
dirent = val;
/* Calculate the full path of this entry (by appending the name
to the path thus far) */
- full_path = svn_path_join(path, dirent->name, pool);
+ full_path = svn_path_join(path, dirent->name, result_pool);
/* Now, copy this dirent to the master hash, but this time, use
the full path for the key */
@@ -427,7 +430,7 @@ get_dir_entries(apr_hash_t *tree_entries
/* If this entry is a directory, recurse into the tree. */
if (dirent->kind == svn_node_dir)
- SVN_ERR(get_dir_entries(tree_entries, root, full_path, pool));
+ SVN_ERR(get_dir_entries(tree_entries, root, full_path, iterpool));
}
return SVN_NO_ERROR;
@@ -500,6 +503,7 @@ svn_test__validate_tree(svn_fs_root_t *r
{
apr_hash_t *tree_entries, *expected_entries;
apr_pool_t *subpool = svn_pool_create(pool);
+ apr_pool_t *iterpool = svn_pool_create(pool);
svn_stringbuf_t *extra_entries = NULL;
svn_stringbuf_t *missing_entries = NULL;
svn_stringbuf_t *corrupt_entries = NULL;
@@ -509,6 +513,13 @@ svn_test__validate_tree(svn_fs_root_t *r
/* There should be no entry with this name. */
const char *na_name = "es-vee-en";
+ /* Create our master hash for storing the entries */
+ tree_entries = apr_hash_make(subpool);
+
+ /* Recursively get the whole tree */
+ SVN_ERR(get_dir_entries(tree_entries, root, "", iterpool));
+ svn_pool_clear(iterpool);
+
/* Create a hash for storing our expected entries */
expected_entries = apr_hash_make(subpool);
@@ -517,12 +528,6 @@ svn_test__validate_tree(svn_fs_root_t *r
apr_hash_set(expected_entries, entries[i].path,
APR_HASH_KEY_STRING, &(entries[i]));
- /* Create our master hash for storing the entries */
- tree_entries = apr_hash_make(pool);
-
- /* Begin the recursive directory entry dig */
- SVN_ERR(get_dir_entries(tree_entries, root, "", subpool));
-
/* For each entry in our EXPECTED_ENTRIES hash, try to find that
entry in the TREE_ENTRIES hash given us by the FS. If we find
that object, remove it from the TREE_ENTRIES. If we don't find
@@ -536,6 +541,7 @@ svn_test__validate_tree(svn_fs_root_t *r
void *val;
svn_test__tree_entry_t *entry;
+ svn_pool_clear(iterpool);
apr_hash_this(hi, &key, &keylen, &val);
entry = val;
@@ -546,7 +552,7 @@ svn_test__validate_tree(svn_fs_root_t *r
svn_error_t *err;
if ((err = validate_tree_entry(root, entry->path,
- entry->contents, subpool)))
+ entry->contents, iterpool)))
{
/* If we don't have a corrupt entries string, make one. */
if (! corrupt_entries)
@@ -627,6 +633,7 @@ svn_test__validate_tree(svn_fs_root_t *r
extra_entries ? extra_entries->data : "");
}
+ svn_pool_destroy(iterpool);
svn_pool_destroy(subpool);
return SVN_NO_ERROR;
}
@@ -675,6 +682,7 @@ svn_test__txn_script_exec(svn_fs_root_t
apr_pool_t *pool)
{
int i;
+ apr_pool_t *iterpool = svn_pool_create(pool);
/* Run through the list of edits, making the appropriate edit on
that entry in the TXN_ROOT. */
@@ -685,18 +693,19 @@ svn_test__txn_script_exec(svn_fs_root_t
int cmd = script[i].cmd;
svn_boolean_t is_dir = (param1 == 0);
+ svn_pool_clear(iterpool);
switch (cmd)
{
case 'a':
if (is_dir)
{
- SVN_ERR(svn_fs_make_dir(txn_root, path, pool));
+ SVN_ERR(svn_fs_make_dir(txn_root, path, iterpool));
}
else
{
- SVN_ERR(svn_fs_make_file(txn_root, path, pool));
+ SVN_ERR(svn_fs_make_file(txn_root, path, iterpool));
SVN_ERR(svn_test__set_file_contents(txn_root, path,
- param1, pool));
+ param1, iterpool));
}
break;
@@ -706,21 +715,21 @@ svn_test__txn_script_exec(svn_fs_root_t
svn_fs_root_t *rev_root;
svn_fs_t *fs = svn_fs_root_fs(txn_root);
- SVN_ERR(svn_fs_youngest_rev(&youngest, fs, pool));
- SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest, pool));
- SVN_ERR(svn_fs_copy(rev_root, path, txn_root, param1, pool));
+ SVN_ERR(svn_fs_youngest_rev(&youngest, fs, iterpool));
+ SVN_ERR(svn_fs_revision_root(&rev_root, fs, youngest, iterpool));
+ SVN_ERR(svn_fs_copy(rev_root, path, txn_root, param1, iterpool));
}
break;
case 'd':
- SVN_ERR(svn_fs_delete(txn_root, path, pool));
+ SVN_ERR(svn_fs_delete(txn_root, path, iterpool));
break;
case 'e':
if (! is_dir)
{
SVN_ERR(svn_test__set_file_contents(txn_root, path,
- param1, pool));
+ param1, iterpool));
}
break;
@@ -729,6 +738,7 @@ svn_test__txn_script_exec(svn_fs_root_t
}
}
+ svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
}
@@ -765,21 +775,26 @@ svn_test__check_greek_tree(svn_fs_root_t
svn_stringbuf_t *rstring;
svn_stringbuf_t *content;
const struct svn_test__tree_entry_t *node;
+ apr_pool_t *iterpool = svn_pool_create(pool);
/* Loop through the list of files, checking for matching content. */
for (node = svn_test__greek_tree_nodes; node->path; node++)
{
if (node->contents)
{
- SVN_ERR(svn_fs_file_contents(&rstream, root, node->path, pool));
- SVN_ERR(svn_test__stream_to_string(&rstring, rstream, pool));
- content = svn_stringbuf_create(node->contents, pool);
+ svn_pool_clear(iterpool);
+
+ SVN_ERR(svn_fs_file_contents(&rstream, root, node->path, iterpool));
+ SVN_ERR(svn_test__stream_to_string(&rstring, rstream, iterpool));
+ content = svn_stringbuf_create(node->contents, iterpool);
if (! svn_stringbuf_compare(rstring, content))
return svn_error_createf(SVN_ERR_FS_GENERAL, NULL,
"data read != data written in file '%s'.",
node->path);
}
}
+
+ svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
}
@@ -789,22 +804,28 @@ svn_test__create_greek_tree_at(svn_fs_ro
apr_pool_t *pool)
{
const struct svn_test__tree_entry_t *node;
+ apr_pool_t *iterpool = svn_pool_create(pool);
for (node = svn_test__greek_tree_nodes; node->path; node++)
{
- const char *path = svn_relpath_join(root_dir, node->path, pool);
+ const char *path;
+ svn_pool_clear(iterpool);
+
+ path = svn_relpath_join(root_dir, node->path, iterpool);
if (node->contents)
{
- SVN_ERR(svn_fs_make_file(txn_root, path, pool));
+ SVN_ERR(svn_fs_make_file(txn_root, path, iterpool));
SVN_ERR(svn_test__set_file_contents(txn_root, path, node->contents,
- pool));
+ iterpool));
}
else
{
- SVN_ERR(svn_fs_make_dir(txn_root, path, pool));
+ SVN_ERR(svn_fs_make_dir(txn_root, path, iterpool));
}
}
+
+ svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
}
Modified: subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c Tue May 26 08:57:33 2015
@@ -754,7 +754,7 @@ svn_test__init_auth_baton(svn_auth_baton
"jrandom", "rayjandom",
NULL,
TRUE /* no_auth_cache */,
- FALSE /* trust_server_cert */,
+ TRUE /* trust_server_cert_unkown_ca */,
FALSE, FALSE, FALSE, FALSE,
cfg_config, NULL, NULL, result_pool));
Propchange: subversion/branches/move-tracking-2/tools/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 26 08:57:33 2015
@@ -82,4 +82,4 @@
/subversion/branches/verify-at-commit/tools:1462039-1462408
/subversion/branches/verify-keep-going/tools:1439280-1546110
/subversion/branches/wc-collate-path/tools:1402685-1480384
-/subversion/trunk/tools:1606692-1674752
+/subversion/trunk/tools:1606692-1681720
Modified: subversion/branches/move-tracking-2/tools/client-side/bash_completion
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/client-side/bash_completion?rev=1681721&r1=1681720&r2=1681721&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/client-side/bash_completion (original)
+++ subversion/branches/move-tracking-2/tools/client-side/bash_completion Tue May 26 08:57:33 2015
@@ -781,8 +781,7 @@ _svn()
# otherwise build possible options for the command
pOpts="--username --password --no-auth-cache --non-interactive \
- --trust-unknown-ca --trust-cn-mismatch \
- --trust-expired --trust-not-yet-valid --trust-other-failure \
+ --trust-server-cert-failures \
--force-interactive"
mOpts="-m --message -F --file --encoding --force-log --with-revprop"
rOpts="-r --revision"