Modified: subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/store_pristine_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/store_pristine_tests.py?rev=1908636&r1=1908635&r2=1908636&view=diff ============================================================================== --- subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/store_pristine_tests.py (original) +++ subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/store_pristine_tests.py Wed Mar 22 15:08:00 2023 @@ -59,7 +59,6 @@ def simple_checkout_with_pristine(sbox): 'info', '--show-item=store-pristine', '--no-newline', sbox.wc_dir) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def simple_checkout_without_pristine(sbox): "simple checkout without pristine" @@ -108,7 +107,6 @@ def simple_commit_with_pristine(sbox): expected_output, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def simple_commit_without_pristine(sbox): "simple commit without pristine" @@ -181,7 +179,6 @@ def simple_update_with_pristine(sbox): [], False, '-r1', sbox.wc_dir) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def simple_update_without_pristine(sbox): "simple update without pristine" @@ -278,7 +275,6 @@ def simple_status_with_pristine(sbox): svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def simple_status_without_pristine(sbox): "simple status without pristine" @@ -366,7 +362,6 @@ def simple_diff_with_pristine(sbox): svntest.actions.run_and_verify_svn(diff_output, [], 'diff', sbox.ospath('file')) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def simple_diff_without_pristine(sbox): "simple diff without pristine" @@ -431,7 +426,6 @@ def simple_revert_with_pristine(sbox): svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def simple_revert_without_pristine(sbox): "simple revert without pristine" @@ -508,7 +502,6 @@ def update_modified_file_with_pristine(s expected_disk, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def update_modified_file_without_pristine(sbox): "update locally modified file without pristine" @@ -586,7 +579,6 @@ def simple_copy_with_pristine(sbox): svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def simple_copy_without_pristine(sbox): "simple copy without pristine" @@ -655,7 +647,6 @@ def copy_modified_file_with_pristine(sbo svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def copy_modified_file_without_pristine(sbox): "copy locally modified file without pristine" @@ -724,7 +715,6 @@ def simple_move_with_pristine(sbox): svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def simple_move_without_pristine(sbox): "simple move without pristine" @@ -793,7 +783,6 @@ def move_modified_file_with_pristine(sbo svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def move_modified_file_without_pristine(sbox): "move locally modified file without pristine" @@ -829,7 +818,6 @@ def move_modified_file_without_pristine( svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status) -@SkipUnless(svntest.main.wc_supports_optional_pristine) def checkout_incompatible_setting(sbox): "checkout with incompatible pristine setting" @@ -862,6 +850,100 @@ def checkout_incompatible_setting(sbox): 'info', '--show-item=store-pristine', '--no-newline', sbox.wc_dir) +def copy_cross_wc_without_src_pristine(sbox): + "cross-wc copy without src pristine" + + sbox.build(empty=True, create_wc=False) + + expected_output = svntest.wc.State(sbox.wc_dir, {}) + expected_wc = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout(sbox.repo_url, + sbox.wc_dir, + expected_output, + expected_wc, + [], + '--store-pristine=no') + svntest.actions.run_and_verify_svn( + ['no'], [], + 'info', '--show-item=store-pristine', '--no-newline', + sbox.wc_dir) + + sbox.simple_append('file', 'foo') + sbox.simple_add('file') + sbox.simple_commit(message='r1') + + wc_dir2 = sbox.add_wc_path("other") + expected_output = svntest.wc.State(wc_dir2, {}) + expected_wc = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout(sbox.repo_url, + wc_dir2, + expected_output, + expected_wc, + [], + '--store-pristine=yes', '-r0') + svntest.actions.run_and_verify_svn( + ['yes'], [], + 'info', '--show-item=store-pristine', '--no-newline', + wc_dir2) + + svntest.actions.run_and_verify_svn(None, [], 'copy', + sbox.ospath('file'), + wc_dir2) + + expected_status = svntest.wc.State(wc_dir2, { + '' : Item(status=' ', wc_rev=0), + 'file' : Item(status='A ', wc_rev='-', copied='+'), + }) + svntest.actions.run_and_verify_status(wc_dir2, + expected_status) + +def copy_cross_wc_without_dst_pristine(sbox): + "cross-wc copy without dst pristine" + + sbox.build(empty=True, create_wc=False) + + expected_output = svntest.wc.State(sbox.wc_dir, {}) + expected_wc = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout(sbox.repo_url, + sbox.wc_dir, + expected_output, + expected_wc, + [], + '--store-pristine=yes') + svntest.actions.run_and_verify_svn( + ['yes'], [], + 'info', '--show-item=store-pristine', '--no-newline', + sbox.wc_dir) + + sbox.simple_append('file', 'foo') + sbox.simple_add('file') + sbox.simple_commit(message='r1') + + wc_dir2 = sbox.add_wc_path("other") + expected_output = svntest.wc.State(wc_dir2, {}) + expected_wc = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout(sbox.repo_url, + wc_dir2, + expected_output, + expected_wc, + [], + '--store-pristine=no', '-r0') + svntest.actions.run_and_verify_svn( + ['no'], [], + 'info', '--show-item=store-pristine', '--no-newline', + wc_dir2) + + svntest.actions.run_and_verify_svn(None, [], 'copy', + sbox.ospath('file'), + wc_dir2) + + expected_status = svntest.wc.State(wc_dir2, { + '' : Item(status=' ', wc_rev=0), + 'file' : Item(status='A ', wc_rev='-', copied='+'), + }) + svntest.actions.run_and_verify_status(wc_dir2, + expected_status) + ######################################################################## # Run the tests @@ -891,6 +973,8 @@ test_list = [ None, move_modified_file_with_pristine, move_modified_file_without_pristine, checkout_incompatible_setting, + copy_cross_wc_without_src_pristine, + copy_cross_wc_without_dst_pristine, ] serial_only = True
Modified: subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/main.py URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/main.py?rev=1908636&r1=1908635&r2=1908636&view=diff ============================================================================== --- subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/main.py (original) +++ subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/main.py Wed Mar 22 15:08:00 2023 @@ -211,6 +211,9 @@ svnauthz_validate_binary = os.path.abspa ) svnmover_binary = os.path.abspath('../../../tools/dev/svnmover/svnmover' + _exe) +# Where to find the libtool script created during build +libtool_script = os.path.abspath('../../../libtool') + # Location to the pristine repository, will be calculated from test_area_url # when we know what the user specified for --url. pristine_greek_repos_url = None @@ -508,6 +511,13 @@ def open_pipe(command, bufsize=-1, stdin if command[0].endswith('.py'): command.insert(0, sys.executable) + if options.valgrind: + if os.path.basename(command[0]) in options.valgrind.split(','): + valgrind = [libtool_script, '--mode=execute', 'valgrind', '--quiet'] + if options.valgrind_opts is not None: + valgrind += options.valgrind_opts.split(' ') + command = valgrind + command + command_string = command[0] + ' ' + ' '.join(map(_quote_arg, command[1:])) if not stdin: @@ -691,7 +701,7 @@ def run_command_stdin(command, error_exp def create_config_dir(cfgdir, config_contents=None, server_contents=None, ssl_cert=None, ssl_url=None, http_proxy=None, - exclusive_wc_locks=None): + exclusive_wc_locks=None, wc_format_version=None): "Create config directories and files" # config file names @@ -711,12 +721,14 @@ password-stores = [miscellany] interactive-conflicts = false -""" - if exclusive_wc_locks: - config_contents += """ + [working-copy] -exclusive-locking = true """ + if exclusive_wc_locks: + config_contents += "exclusive-locking = true\n" + if wc_format_version: + config_contents += ("compatible-version = %s\n" % wc_format_version) + # define default server file contents if none provided if server_contents is None: http_library_str = "" @@ -812,18 +824,6 @@ def _with_store_pristine(args): return args + ('--store-pristine', options.store_pristine) return args -def _with_wc_format_version(args): - if '--compatible-version' in args \ - or any(str(one_arg).startswith('--compatible-version=') for one_arg in args) \ - or options.wc_format_version is None: - return args - non_opt_args = [a for a in args if not str(a).startswith('-')] - if non_opt_args: - subcommand = non_opt_args[0] - if subcommand in ['co', 'checkout', 'upgrade']: - return args + ('--compatible-version', options.wc_format_version) - return args - def _with_config_dir(args): if '--config-dir' in args: return args @@ -859,8 +859,8 @@ def run_svn(error_expected, *varargs): you're just checking that something does/doesn't come out of stdout/stderr, you might want to use actions.run_and_verify_svn().""" return run_command(svn_binary, error_expected, False, - *(_with_store_pristine(_with_wc_format_version( - _with_auth(_with_config_dir(varargs)))))) + *(_with_store_pristine( + _with_auth(_with_config_dir(varargs))))) # For running svnadmin. Ignores the output. def run_svnadmin(*varargs): @@ -1405,7 +1405,7 @@ def write_restrictive_svnserve_conf(repo fp.write("groups-db = groups\n") if options.enable_sasl: fp.write("realm = svntest\n" - "[sasl]\n", + "[sasl]\n" "use-sasl = true\n"); else: fp.write("password-db = passwd\n") @@ -1778,12 +1778,6 @@ def wc_format(ver=None): return 31 raise Exception("Unrecognized version number '%s'" % (ver,)) -def wc_supports_optional_pristine(): - if options.wc_format_version is None: - return True - else: - return wc_format(options.wc_format_version) >= 32 - ###################################################################### @@ -1872,6 +1866,10 @@ class TestSpawningThread(threading.Threa args.append('--bin=' + options.svn_bin) if options.store_pristine: args.append('--store-pristine=' + options.store_pristine) + if options.valgrind: + args.append('--valgrind=' + options.valgrind) + if options.valgrind_opts: + args.append('--valgrind-opts=' + options.valgrind_opts) result, stdout_lines, stderr_lines = spawn_process(command, 0, False, None, *args) @@ -2313,6 +2311,10 @@ def _create_parser(usage=None): help='Run tests that connect to remote HTTP(S) servers') parser.add_option('--store-pristine', action='store', type='str', help='Set the WC pristine mode') + parser.add_option('--valgrind', action='store', + help='programs to run under valgrind') + parser.add_option('--valgrind-opts', action='store', + help='options to pass to valgrind') # most of the defaults are None, but some are other values, set them here parser.set_defaults( @@ -2671,7 +2673,8 @@ def execute_tests(test_list, serial_only ssl_cert=options.ssl_cert, ssl_url=options.test_area_url, http_proxy=options.http_proxy, - exclusive_wc_locks=options.exclusive_wc_locks) + exclusive_wc_locks=options.exclusive_wc_locks, + wc_format_version=options.wc_format_version) # Setup the pristine repositories svntest.actions.setup_pristine_repositories() Modified: subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/upgrade_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/upgrade_tests.py?rev=1908636&r1=1908635&r2=1908636&view=diff ============================================================================== --- subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/upgrade_tests.py (original) +++ subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/upgrade_tests.py Wed Mar 22 15:08:00 2023 @@ -1583,8 +1583,6 @@ def upgrade_1_0_with_externals(sbox): }) run_and_verify_status_no_server(sbox.wc_dir, expected_status) -@XFail() -@SkipUnless(lambda: svntest.main.options.wc_format_version is None) def upgrade_latest_format(sbox): "upgrade latest format without arguments" @@ -1599,11 +1597,59 @@ def upgrade_latest_format(sbox): [], '--compatible-version', latest_ver) - # XFAIL: + # This used to fail with the following error: # svn: E155021: Working copy '...' is already at version 1.15 (format 32) # and cannot be downgraded to version 1.8 (format 31) svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir) + check_format(sbox, svntest.main.wc_format(latest_ver)) + +def upgrade_compatible_version_arg(sbox): + "upgrade with compatible-version from arg" + + sbox.build(empty=True, create_wc=False) + expected_output = svntest.wc.State(sbox.wc_dir, {}) + expected_disk = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout( + sbox.repo_url, sbox.wc_dir, expected_output, expected_disk, [], + '--compatible-version', '1.8', '--store-pristine=yes') + svntest.actions.run_and_verify_svn( + ['1.8'], [], + 'info', '--show-item=wc-compatible-version', '--no-newline', + sbox.wc_dir) + + svntest.actions.run_and_verify_svn( + None, [], 'upgrade', + '--compatible-version', '1.15', + sbox.wc_dir) + svntest.actions.run_and_verify_svn( + ['1.15'], [], + 'info', '--show-item=wc-compatible-version', '--no-newline', + sbox.wc_dir) + +def upgrade_compatible_version_config(sbox): + "upgrade with compatible-version from config" + + sbox.build(empty=True, create_wc=False) + expected_output = svntest.wc.State(sbox.wc_dir, {}) + expected_disk = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout( + sbox.repo_url, sbox.wc_dir, expected_output, expected_disk, [], + '--compatible-version', '1.8', '--store-pristine=yes') + svntest.actions.run_and_verify_svn( + ['1.8'], [], + 'info', '--show-item=wc-compatible-version', '--no-newline', + sbox.wc_dir) + + svntest.actions.run_and_verify_svn( + None, [], 'upgrade', + '--config-option', 'config:working-copy:compatible-version=1.15', + sbox.wc_dir) + svntest.actions.run_and_verify_svn( + ['1.15'], [], + 'info', '--show-item=wc-compatible-version', '--no-newline', + sbox.wc_dir) + ######################################################################## # Run the tests @@ -1661,6 +1707,8 @@ test_list = [ None, auto_analyze, upgrade_1_0_with_externals, upgrade_latest_format, + upgrade_compatible_version_arg, + upgrade_compatible_version_config, ] Modified: subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_client/client-test.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_client/client-test.c?rev=1908636&r1=1908635&r2=1908636&view=diff ============================================================================== --- subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_client/client-test.c (original) +++ subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_client/client-test.c Wed Mar 22 15:08:00 2023 @@ -449,6 +449,7 @@ test_wc_add_scenarios(const svn_test_opt const char *ex_file_path; const char *ex_dir_path; const char *ex2_dir_path; + svn_boolean_t store_pristine; /* Create a filesystem and repository containing the Greek tree. */ SVN_ERR(create_greek_repos(&repos_url, "test-wc-add-repos", opts, pool)); @@ -472,6 +473,12 @@ test_wc_add_scenarios(const svn_test_opt opts->store_pristine, ctx, pool)); + SVN_ERR(svn_wc__get_settings(NULL, &store_pristine, NULL, ctx->wc_ctx, + wc_path, pool)); + if (!store_pristine) + return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL, + "Test assumes a working copy with pristine"); + /* Now checkout again as wc_path/NEW */ new_dir_path = svn_dirent_join(wc_path, "NEW", pool); SVN_ERR(svn_client_checkout4(NULL, repos_url, new_dir_path, &peg_rev, &rev, Modified: subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_fs/fs-test.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_fs/fs-test.c?rev=1908636&r1=1908635&r2=1908636&view=diff ============================================================================== --- subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_fs/fs-test.c (original) +++ subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_fs/fs-test.c Wed Mar 22 15:08:00 2023 @@ -4990,10 +4990,17 @@ unordered_txn_dirprops(const svn_test_op /* Commit the second one first. */ SVN_ERR(test_commit_txn(&new_rev, txn2, NULL, pool)); - /* Then commit the first -- but expect a conflict due to the - propchanges made by the other txn. */ - SVN_ERR(test_commit_txn(¬_rev, txn, "/A/B", pool)); - SVN_ERR(svn_fs_abort_txn(txn, pool)); + if (is_bdb) + { + /* Then commit the first -- but expect a conflict due to the + propchanges made by the other txn. */ + SVN_ERR(test_commit_txn(¬_rev, txn, "/A/B", pool)); + SVN_ERR(svn_fs_abort_txn(txn, pool)); + } + else + { + SVN_ERR(test_commit_txn(&new_rev, txn, NULL, pool)); + } /* Now, let's try those in reverse. Open two transactions */ SVN_ERR(svn_fs_begin_txn(&txn, fs, new_rev, pool)); @@ -5641,16 +5648,16 @@ dir_prop_merge(const svn_test_opts_t *op { SVN_ERR(test_commit_txn(&head_rev, top_txn, "/A", pool)); SVN_ERR(svn_fs_abort_txn(top_txn, pool)); + + SVN_ERR(test_commit_txn(&head_rev, sub_txn, "/A/D", pool)); + SVN_ERR(svn_fs_abort_txn(sub_txn, pool)); } else { SVN_ERR(test_commit_txn(&head_rev, top_txn, NULL, pool)); + SVN_ERR(test_commit_txn(&head_rev, sub_txn, NULL, pool)); } - /* The inverted case is not that trivial to handle. Hence, conflict. - Depending on the checking order, the reported conflict path differs. */ - SVN_ERR(test_commit_txn(&head_rev, sub_txn, is_bdb ? "/A/D" : "/A", pool)); - SVN_ERR(svn_fs_abort_txn(sub_txn, pool)); return SVN_NO_ERROR; } Modified: subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_wc/wc-queries-test.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1908636&r1=1908635&r2=1908636&view=diff ============================================================================== --- subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_wc/wc-queries-test.c (original) +++ subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_wc/wc-queries-test.c Wed Mar 22 15:08:00 2023 @@ -247,12 +247,9 @@ stmt_matches_wc_format(int stmt_num, case STMT_INSERT_OR_IGNORE_PRISTINE_F31: case STMT_UPSERT_PRISTINE_F31: case STMT_SELECT_PRISTINE_F31: - case STMT_SELECT_COPY_PRISTINES_F31: - return (wc_format <= 31); case STMT_INSERT_OR_IGNORE_PRISTINE_F32: case STMT_UPSERT_PRISTINE_F32: case STMT_SELECT_PRISTINE_F32: - case STMT_SELECT_COPY_PRISTINES_F32: case STMT_UPDATE_PRISTINE_HYDRATED: case STMT_TEXTBASE_ADD_REF: case STMT_TEXTBASE_REMOVE_REF:
