Checkout Tools
  • last updated 2 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Fix eol style treatment in command tests on Windows.

[in subversion/tests/cmdline]

* merge_tests.py (merge_conflict_markers_matching_eol,

merge_eolstyle_handling),

* patch_tests.py (patch_no_svn_eol_style,

patch_with_svn_eol_style,

patch_with_svn_eol_style_uncommitted),

* update_tests.py (conflict_markers_matching_eol,

update_eol_style_handling):

Specify keep_eol_style = True evne if platform is Windows.

* merge_tests.py (merge_conflict_markers_matching_eol),

* patch_tests.py (patch_no_svn_eol_style,

patch_with_svn_eol_style,

patch_with_svn_eol_style_uncommitted),

* update_tests.py (conflict_markers_matching_eol):

Use binary mode to write file contents for strict eol style.

* merge_tests.py (merge_conflict_markers_matching_eol),

* patch_tests.py (patch_with_svn_eol_style,

patch_with_svn_eol_style_uncommitted),

* conflict_markers_matching_eol):

Switch per platform eol value for 'native' svn:eol-style

* svntest/wc.py (State.from_wc):

Use io.open() explicitly to specify 'newline' parameter for universal

newline, even on Python 2. With this change, '\r' end of line chracters in

files are also translated to '\n' if keep_eol_style=False (or unspicified)

on Python 2. Also explicitly specify encoding to 'utf-8' not to be affected

by Python's file system encoding.

Reported by: jcorvel

Tested by: jcorvel

  1. … 3 more files in changeset.
* everywhere: Run tools/dev/remove-trailing-whitespace.sh to remove

trailing whitespace before we branch 1.14.

  1. … 105 more files in changeset.
* subversion/tests/cmdline/svnadmin_tests.py

(recover_prunes_rep_cache_when_enabled,

recover_prunes_rep_cache_when_disabled): Update SkipUnless.

* subversion/tests/cmdline/svntest/main.py

(python_sqlite_can_read_our_db): Rename to...

(python_sqlite_can_read_our_wc_db): ... this.

(is_fs_type_fsfs_and_sqlite_can_read_our_db): Remove function.

(python_sqlite_can_read_without_rowid): New function.

* subversion/tests/cmdline/svntest/wc.py

(python_sqlite_can_read_wc): Update caller.

  1. … 2 more files in changeset.
Another attempt at properly skipping a few tests that certain

configurations can't handle.

* cmdline/svnadmin_tests.py

(recover_prunes_rep_cache_when_enabled,

recover_prunes_rep_cache_when_disabled): Use single SkipUnless

* cmdline/svntest/main.py

(python_sqlite_can_read_our_db,

is_fs_type_fsfs_and_sqlite_can_read_our_db): New functions based on...

* cmdline/svntest/wc.py

(python_sqlite_can_read_wc): ... this function, which is now a proxy.

  1. … 2 more files in changeset.
* subversion/tests/cmdline/svntest/wc.py

(python_sqlite_can_read_wc): Simplify by checking the predefined value

of sqlite3.sqlite_version_info that contains the version number of the

run-time SQLite library.

Update docstrings in our test framework. No functional change.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_export): Simply refer to the revv'ed version.

(run_and_verify_export2,

verify_update,

verify_disk): Document KEEP_EOL_STYLE.

(run_and_verify_update): Put the docstring at the beginning of the

function.

(run_and_verify_update2,

run_and_verify_merge2): Document KEEP_EOL_STYLE.

(run_and_verify_patch): Simply refer to the revv'ed version.

(run_and_verify_patch2): Document KEEP_EOL_STYLE.

* subversion/tests/cmdline/svntest/tree.py

(build_tree_from_wc): Same.

* subversion/tests/cmdline/svntest/wc.py

(State.from_wc): Same.

  1. … 2 more files in changeset.
Make the export tests pass with Python 3 without

(hopefully breaking Windows tests).

The key issue is that we normalize newlines when reading w/c contents

as text. That will break comparison against expectations whenever those

explicitly look for non-native EOL styles. So, we must optionally disable

that EOL normalization feature.

* subversion/tests/cmdline/svntest/wc.py

(State.from_wc): Add the KEEP_EOL_STYLE option. Apply it to text files.

* subversion/tests/cmdline/svntest/tree.py

(build_tree_from_wc): Bubble-up, adding the same option.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_export): Bump version and implement in terms of ...

(run_and_verify_export2): ... this. Add the KEEP_EOL_STYLE option.

* subversion/tests/cmdline/export_tests.py

(export_eol_translation,

export_working_copy_with_property_mods,

export_native_eol_option,

export_externals_with_native_eol): Use the new run-and-verify variant,

requesting EOLs to compare as-are.

  1. … 3 more files in changeset.
Make the externals test pass in Python 3.

* subversion/tests/cmdline/externals_tests.py

(disallow_propset_invalid_formatted_externals): Even svn:externals props

are binary, too.

(file_external_unversioned_obstruction): Svnmucc output is binary.

* subversion/tests/cmdline/svntest/wc.py

(State.tweak_for_entries_compare): Because we delete nodes recursively,

we must check that we have not already

removed the current sub-node.

  1. … 1 more file in changeset.
Follow-up to r1743239: Once again, unbreak the tests for Windows.

* subversion/tests/cmdline/svntest/wc.py

(State.from_wc): In text mode, let Python mangle newlines at it sees fit.

This restores the previous behavior for text files.

Make all other FAILed merge tests PASS under Python 3.

* subversion/tests/cmdline/svntest/wc.py

(State.from_wc): When a file can't be read as string / UTF-8, retry as

binary. The caller must then match that with their

expectations.

* subversion/tests/cmdline/merge_tests.py

(merge_binary_file): We add to binary file content.

(merge_binary_with_common_ancestry): Explicitly write the contents as

binary to prevent conversion to UTF-8.

(dry_run_merge_conflicting_binary): We modify binary data here.

  1. … 1 more file in changeset.
The biggest group of test failures under Python 3 are the svnrdump tests.

Make them pass. Virtually all of this is bytes <-> str related.

* subversion/tests/cmdline/svnrdump_tests.py

(run_load_test): The verfication routine expects the UUID as a str.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_dump): If we accept any output, "None" is the better

option as it works with both Python versions.

* subversion/tests/cmdline/svntest/main.py

(_repos_diskpath*): Make these global definitions for efficiency.

(run_command_stdin): Use the above instead of dynamically constructing

them. Accept byte strings and ordinary str alike.

* subversion/tests/cmdline/svntest/sandbox.py

(Sandbox.simple_append): Use the main.file_write to do the heavy

lifting of string type check & conversion.

* subversion/tests/cmdline/svntest/verify.py

(compare_and_display_lines): Work for binary data and strings alike.

* subversion/tests/cmdline/svntest/wc.py

(State.remove_subtree,

State.rename): Make sure we have an independent list object before

manipulating the original. Py3 would otherwise give

us a mere iterator.

  1. … 5 more files in changeset.
Get the build and test harness to execute the tests with Python 3.

Most tests are still failing, though, and the log summary fails.

* build/run_tests.py

(TestHarness.run): We treat the test job output as binary to be able

to log it as-is.

* subversion/tests/cmdline/svntest/main.py

(ensure_list): New utility function that allows us to automatically

convert iterators to list objects.

(filter_dbg): Be sure to return a list despite getting an iterator

from the Python 3 filter.

(wait_on_pipe): Convert non-binary sub-process output into lists of

strings.

(file_write): Move up and add string conversion logic for Python 3

where we have to feed the file either byte arrays or

unicode strings depending on the file open mode.

(file_append,

file_append_binary): Call file_write to handle the string conversion

issues.

* subversion/tests/cmdline/svntest/testcase.py

(FunctionTestCase.__init__,

FunctionTestCase.get_function_name,

FunctionTestCase.get_sandbox_name): Use the Python 3 element names

to access its internal data model.

* subversion/tests/cmdline/svntest/tree.py

(_dump_tree): For correct sorting in py3, we would need to implement

a handful of operators for SVNTreeNode. Explicitly using

the printable path here is the less intrusive portable

solution.

* subversion/tests/cmdline/svntest/wc.py

(State.rename): Lambda expressions take an unpacked tuple object in py3.

  1. … 4 more files in changeset.
In our build and test scripts, replace Python 2 -only imports by pairs

of Python 2 / 3 alternative imports.

* subversion/tests/cmdline/lock_tests.py

(dav_lock_refresh): The httplib module has been replaced in Python 3

by http.client.

* subversion/tests/cmdline/mod_dav_svn_tests.py

(): Same.

* subversion/tests/cmdline/mod_authz_svn_tests.py

(verify_get): Same, also for urlparse vs. urllib.parse.

* subversion/tests/cmdline/svntest/main.py

(): The urlparse module has been replaced by the urllib.parse in Python 3.

(create_http_connection): Remove redundant urlparse import and replace

the httplib import with the respective

alternative import pair.

* subversion/tests/cmdline/svntest/wc.py

(): The quote function has been moved to urllib.parse, so provide an

alias for it.

(svn_uri_quote): Use the function alias.

  1. … 4 more files in changeset.
Work towards Python 3 compatibility. Since we already require Python 2.7+,

we can use the new syntax without further limiting our Python 2 support.

* contrib/client-side/incremental-update.py

* contrib/client-side/svn_apply_autoprops.py

* contrib/client-side/svnmerge/svnmerge-migrate-history.py

* contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py

* contrib/client-side/svnmerge/svnmerge.py

* contrib/client-side/svnmerge/svnmerge_test.py

* contrib/server-side/add-needs-lock.py

* contrib/server-side/fsfsfixer/fixer/fix-rev.py

* contrib/server-side/fsfsverify.py

* contrib/server-side/svn-tweak-author.py

* subversion/bindings/swig/python/tests/core.py

* subversion/bindings/swig/python/tests/repository.py

* subversion/tests/cmdline/svntest/actions.py

* subversion/tests/cmdline/svntest/main.py

* subversion/tests/cmdline/svntest/objects.py

* subversion/tests/cmdline/svntest/wc.py

* subversion/tests/cmdline/upgrade_tests.py

* tools/client-side/change-svn-wc-format.py

* tools/client-side/mergeinfo-sanitizer.py

* tools/dev/contribulyze.py

* tools/dev/gen-javahl-errors.py

* tools/dev/gen_junit_report.py

* tools/dev/graph-dav-servers.py

* tools/dev/iz/ff2csv.py

* tools/dev/iz/find-fix.py

* tools/dev/wc-ng/bump-to-19.py

* tools/dev/wc-ng/populate-pristine.py

* tools/dev/which-error.py

* tools/examples/get-location-segments.py

* tools/hook-scripts/svn2feed.py

* tools/hook-scripts/svnperms.py

* tools/po/l10n-report.py

* tools/server-side/fsfs-reshard.py

* tools/server-side/svn-backup-dumps.py

* tools/server-side/svnpredumpfilter.py

* tools/server-side/svnpubsub/daemonize.py

* tools/server-side/test_svn_server_log_parse.py

(): Replace all occurances of "except Type, variable:" with Python 3

style "except Type as variable".

  1. … 36 more files in changeset.
In 'svnmover', start tracking complete merges.

Track the source-branch end point of each merge. Add an 'automerge' command

that uses this as the ancestor for the next merge from the same source.

This is a very primitive initial implementation. It only enables each branch

to track complete merges from a single source branch. Complete merges here

refers to completeness in revisions (all revisions up to N, no cherry

picking) and also to the complete tree (no subtree tracking). It overwrites

the previous merge history regardless whether the new merge is from the same

source branch, and regardless whether it is in fact a complete merge.

* subversion/include/private/svn_branch.h

(svn_branch__rev_bid_equal): New.

(svn_branch__state_get_merge_ancestor,

svn_branch__state_set_merge_ancestor): New.

* subversion/include/private/svn_branch_impl.h

(svn_branch__state_v_get_merge_ancestor_t,

svn_branch__state_v_set_merge_ancestor_t): New.

(svn_branch__state_vtable_t): Add the new methods to the vtable.

* subversion/libsvn_delta/branch.c

(svn_branch__state_priv_t): Add storage for a merge ancestor (just one, so

far).

(svn_branch__rev_bid_equal): New.

(branch_state_get_merge_ancestor,

branch_state_set_merge_ancestor): New.

(svn_branch__state_get_merge_ancestor,

svn_branch__state_set_merge_ancestor): New.

(branch_state_create): Add the new methods to the vtable.

(svn_branch__get_default_r0_metadata): Update.

(merge_history_parse): New.

(parse_element_line): Take and use a result pool for the results, in order

to avoid surprises in future.

(svn_branch__state_parse): Parse the merge history.

(merge_history_serialize): New.

(svn_branch__state_serialize): Serialize the merge history.

* subversion/tests/cmdline/svnmover_tests.py

(reported_mg_diff): New.

(...everywhere...): Expect a merge-history diff whenever there is a merge.

* subversion/tests/cmdline/svntest/wc.py

(_re_parse_eid_merge_history): New.

(State.from_eids): Parse and ignore merge history lines.

* tools/dev/svnmover/merge3.c

(merge_subbranch): Correct a comment.

* tools/dev/svnmover/svnmover.c

(rev_bid_str,

merge_history_diff): New.

(txn_is_changed): Also check for any change in merge history.

(svn_branch__replay): Also replay any change in merge history.

(action_code_t,

action_defn): Define a new 'automerge' command. Rename a constant.

(do_merge): Also record the merge history.

(do_auto_merge): New.

(branch_diff_r): Also diff the merge history.

(execute): Expand the 'info-wc' command to show merge history status.

Implement the 'automerge' command. Track the rename.

  1. … 6 more files in changeset.
Merge the 'svnmover' prototype from the 'move-tracking-2' branch to trunk.

See the dev@ email thread "Merge 'svnmover' demo tool to trunk" started on

2015-11-10, archived at e.g. <http://mail-archives.apache.org/mod_mbox/subversion-dev/201511.mbox/%3CCAEcU=1YE5Ci02j_4aAeB_roS1X0H2QWPP3juu0exjVJ-FGCLyg@mail.gmail.com%3E>.

This is a reintegration (performed as an automatic merge) followed by

reverting the unwanted parts. As such, those unwanted parts (such as shim

insertions in several libraries) will be treated as 'record-only merged' and

will not be picked up by any subsequent automatic merge to trunk.

A brief description of the changes follows.

* build.conf

Adjust to build the new files.

* configure.ac

Adjust compiler warning flags to not warn about passing or returning a

structure, because some of the code does so.

* LICENSE

Add the licence text for the embedded 'linenoise' library.

* notes/move-tracking/README

New file, describing this work.

* subversion/include/private/svn_branch.h,

subversion/include/private/svn_branch_compat.h,

subversion/include/private/svn_branch_impl.h,

subversion/include/private/svn_branch_nested.h,

subversion/include/private/svn_branch_repos.h,

subversion/include/private/svn_element.h

New files.

* subversion/libsvn_delta/branch.c,

subversion/libsvn_delta/branch_compat.c,

subversion/libsvn_delta/branch_migrate.c,

subversion/libsvn_delta/branch_nested.c,

subversion/libsvn_delta/branch_repos.c,

subversion/libsvn_delta/element.c

New files.

* subversion/include/private/svn_cmdline_private.h

subversion/libsvn_subr/cmdline.c

(svn_cmdline__stdin_is_a_terminal,

svn_cmdline__stdout_is_a_terminal,

svn_cmdline__stderr_is_a_terminal): New.

* subversion/tests/cmdline/svnmover_tests.py

New file.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_svnmover,

run_and_verify_svnmover2): New.

* subversion/tests/cmdline/svntest/main.py

(svnmover_binary,

run_svnmover): New.

(execute_tests): Initialize 'svnmover_binary'.

* subversion/tests/cmdline/svntest/wc.py

(State): Add 'rename' and 'from_eids' methods.

(StateItem): Add an 'eid' attribute.

* tools/dev/svnmover

New tool.

  1. … 25 more files in changeset.
Make pythons linked against an old sqlite3 version skip the tests that would

fail because python can't read wc.db.

* subversion/tests/cmdline/svntest/wc.py

(python_sqlite_can_read_wc): Add test function.

* subversion/tests/cmdline/upgrade_tests.py

(auto_analyze): Add annotation.

  1. … 1 more file in changeset.
Fix the direct db relocate in upgrade_tests.py 36.

* subversion/tests/cmdline/svntest/wc.py

(sqlite_exec): New function.

* subversion/tests/cmdline/upgrade_tests.py

(auto_analyze): Use function that commits.

  1. … 1 more file in changeset.
Make the python test framework's standard status and entries processing

capable of handling the few remaining cases where we still used the

old system.

* subversion/tests/cmdline/revert_tests.py

(revert_obstructing_wc): Remove hack, obsoleted by single-db entries-dump.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_status,

run_and_verify_unquiet_status): Only accept wc trees.

* subversion/tests/cmdline/svntest/wc.py

(State.add_state):

Add optional strict mode that doesn't follow normal path join rules.

(tweak_for_entries_compare): Allow specifying that a path is a file, to

avoid checking deeper status entries in the comparison. This is needed

for a followup patch.

(from_entries): Properly handle the case where just a Windows drive letter

(e.g. 'H:') is passed as a path, by using special path join rules.

(StateItem.__init__): Declare entry_kind.

* subversion/tests/cmdline/update_tests.py

(update_wc_on_windows_drive): Create proper wc tree.

  1. … 3 more files in changeset.
Fix "../" style relative moved_to and moved_from parsing in the test suite's

status handling. "../" paths are relative from the passed target, while all

other relative paths are relative from cwd.

* subversion/tests/cmdline/copy_tests.py

(copy_and_move_conflicts): Update expected move statee, so the test

fails for the originally intended reasons.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_status,

run_and_verify_unquiet_status): Pass wc_dir to allow move parsing.

* subversion/tests/cmdline/svntest/factory.py

(get_current_status): Pass wc_dir.

* subversion/tests/cmdline/svntest/wc.py

(from_status): Properly handle "../" paths.

  1. … 3 more files in changeset.
Print progress notification between client finished transmitting text deltas

and asked server to commit transaction in command line client.

* subversion/svn/notify.c

(notify_body): Handle svn_wc_notify_commit_finalizing() notification and

print message if we got transmit text deltas notification before.

* subversion/tests/cmdline/commit_tests.py

* subversion/tests/cmdline/depth_tests.py

* subversion/tests/cmdline/trans_tests.py

(post_commit_hook_test, commit_depth_immediates,

eol_change_is_text_mod): Update expected output.

* subversion/tests/cmdline/svntest/wc.py

(State.from_commit): Ignore "Committing transaction" lines from

'svn commit' output when collecting modified path.

  1. … 4 more files in changeset.
Start using new tree comparisons for status processing in the test suite.

This comparison type (introduced by gstein), allows more normalization steps,

such as those for moved paths, which I earlier left as a todo.

Note that while this handles the comparision nicely, the dump of the state

of a directory will still produce long paths in moved_* items.

(Luckily the item comparison failed step makes this easy to spot)

This should be fixed by adding a direct State dump, instead of trying to fix

the old trees.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_status): Rename argument. Use new comparision if passed,

otherwise use the old code.

(run_and_verify_unquiet_status): Handle like run_and_verify_status.

* subversion/tests/cmdline/svntest/tree.py

(build_tree_from_status): Remove no longer needed argument.

* subversion/tests/cmdline/svntest/wc.py

(State.normalize): Normalize moved_from and moved_to paths.

(State.from_status): Keep exact moved_from and moved_to.

Normalize '.' path to avoid breaking tests.

(StateItem.__eq__): Remove unneeded tree conflict normalization.

Ignore entry_*. Handle '-' wcrev like the tree comparison.

  1. … 2 more files in changeset.
Update expected results of upgrade_tests.py 29, to make it pass in !maintainer

mode.

* subversion/tests/cmdline/svntest/wc.py

(tweak_for_entries_compare): Don't remove from entries if the node has an

entry_status. Sensible override for this specific case.

* subversion/tests/cmdline/upgrade_tests.py

(upgrade_missing_replaced): Mark Wimp instead of XFail. Update

expected results.

  1. … 1 more file in changeset.
* subversion/tests/cmdline/entries-dump.c

(tree_dump_dir): Dump using the relative path to avoid problems with the

path already stored in the access baton.

* subversion/tests/cmdline/svntest/main.py

(run_entriesdump_tree): New function, wrapping the new --tree-dump feature

of the entries-dump tool.

* subversion/tests/cmdline/svntest/wc.py

(from_entries): Use run_entriesdump_tree to reduce the number of invocations

of entries-dump by the number of directories in a working copy.

  1. … 2 more files in changeset.
* subversion/svn/status.c

(print_status): Say "X swapped places with Y" (plural places) instead of

"X swapped place with Y" (singular place).

* subversion/tests/cmdline/svntest/wc.py

(_re_parse_status_ex): Adjust accordingly.

Suggested by: neels

Review by: julianfoad

  1. … 1 more file in changeset.
* subversion/tests/cmdline/svntest/wc.py

(from_entries): Remove print used while debugging for r1436192.

* subversion/tests/cmdline/upgrade_tests.py

(upgrade_missing_replaced): Mark XFail. This test crashes entries-dump on an

assertion in wc_db.c.

  1. … 1 more file in changeset.
Remove unneeded conversions to old_tree in several wrappers of

run_and_verify_status. This wrapping as old_tree made it impossible to run the

entries validation on these trees.

Fix the fallout of this change.

* subversion/libsvn_wc/entries.c

(get_info_for_deleted): Allow obtaining the lock token.

(read_one_entry): Update caller. (Found via lock_tests.py)

* subversion/tests/cmdline/commit_tests.py

(commit_nonrecursive): Use '/' in the trees, not os.sep as that breaks the

entries tests.

* subversion/tests/cmdline/copy_tests.py

(move_moved_file_and_dir): Use canonical path form.

* subversion/tests/cmdline/entries-dump.c

(entries_dump): Provide file_external boolean. (Needed for externals tests)

* subversion/tests/cmdline/merge_tests.py

(merge_into_missing): Remove invalid entry_rev.

(merge_away_subtrees_noninheritable_ranges): Use canonical path.

* subversion/tests/cmdline/patch_tests.py

(patch_absolute_paths,

patch_offset,

patch_prop_offset,

patch_delete_and_skip,

patch_git_with_index_line): Use canonical path form.

* subversion/tests/cmdline/revert_tests.py

(revert_obstructing_wc): Avoid entries comparision.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_checkout2,

verify_update,

run_and_verify_commit): Remove unneeded conversion.

* subversion/tests/cmdline/svntest/wc.py

(add_state): Don't add root/ item for the root of the added tree.

(tweak_for_entries_compare): Handle file externals. Add entry_copy support.

Assume that we can't calculate switched for the root of the status walk

from the python code. Ignore tree conflicts.

(from_entries): Skip excluded nodes. Set switched to 'X' for file externals.

(StateItem): Add entry_copy setting.

(repos_join): Fix 'G:/' 'node' join. (Needed for update_tests.py)

* subversion/tests/cmdline/switch_tests.py

(switch_with_obstructing_local_adds): Update entry expectations for

obstructed.

(switch_to_root): Pass the right path for path calculations.

* subversion/tests/cmdline/update_tests.py

(update_wc_on_windows_drive): Tweak paths. Disable entry dump for 'A:mu' style

paths.

(update_copied_from_replaced_and_changed): Use canonical paths.

(update_edit_delete_obstruction): Set entry info for obstructed node.

* subversion/tests/cmdline/update_tests.py

(update_wc_on_windows_drive,

update_copied_from_replaced_and_changed): Use '/' in paths.

(update_edit_delete_obstruction): Update obstruction assumptions for entries.

  1. … 10 more files in changeset.
In an effort to make 'svn status' output easier to follow, special-case

a move that swaps the places of two nodes:

R + A

> swapped place with B

R + B

> swapped place with A

instead of:

R + A

> moved from B

> moved to B

R + B

> moved from A

> moved to A

This doesn't really help with circular moves involving more than 2 nodes.

However, presenting such a case in a more concise way in status output is

difficult and I'm not sure how we would do this -- ideas welcome!

The XML output does not use this special case to make life easier for scripts.

* subversion/svn/status.c

(print_status): Detect and show swapped nodes.

* subversion/tests/cmdline/svntest/wc.py

(_re_parse_status_ex, State.from_status): Adjust to account for swapped nodes.

  1. … 1 more file in changeset.
Resolve a TODO in the testsuite introduced in 2009: Make the working copy

status processing continue in externals.

This patch relies on the status output fix in r1434750.

* subversion/tests/cmdline/externals_tests.py

(cannot_move_or_remove_file_externals,

relegate_external,

exclude_externals,

commit_include_externals,

dir_external_with_dash_r_only): Update assumptions.

* subversion/tests/cmdline/svntest/wc.py

(from_status): Don't stop processing output after "Performing" line. Apply the same

prev_status, prev_tree_conflict trick as from the update output processing.

  1. … 1 more file in changeset.
In the testsuite output processing for 'checkout-like' commands, try to handle

paths that are notified twice. This output code is used for checkout, update

and merge.

* subversion/tests/cmdline/merge_tests.py

(merge_old_and_new_revs_from_renamed_dir,

merge_with_child_having_different_rev_ranges_to_merge,

subtree_source_missing_in_requested_range,

subtree_gets_changes_even_if_ultimately_deleted,

no_self_referential_filtering_on_added_path): Expect double notifications.

* subversion/tests/cmdline/special_tests.py

(incoming_symlink_changes): Expect double notifications for replacement.

* subversion/tests/cmdline/svntest/wc.py

(from_checkout): If finding the same path again, copy some information from the

old description.

(StateItem): Add prev_status, prev_verb and prev_treeconflict.

* subversion/tests/cmdline/update_tests.py

(update_replace_dir): Update expected notification (fixing old todo marker)

(update_deleted_missing_dir): Combine expected output.

(update_copied_from_replaced_and_changed): Update expected output.

(update_edit_delete_obstruction): Update expected output.

* subversion/tests/cmdline/revert_tests.py

(upgrade_missing_replaced): Expect a restore of the missing directory.

  1. … 4 more files in changeset.