Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/getopt_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/getopt_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/getopt_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/getopt_tests.py
 Fri Dec  6 13:59:05 2024
@@ -81,7 +81,7 @@ del_lines_res = [
                  re.compile(r"\* Plaintext cache.*"),
                  re.compile(r"\* Gnome Keyring"),
                  re.compile(r"\* GPG-Agent"),
-                 re.compile(r"\* Mac OS X Keychain"),
+                 re.compile(r"\* macOS Keychain"),
                  re.compile(r"\* KWallet \(KDE\)"),
                 ]
 
@@ -94,7 +94,7 @@ rep_lines_res = [
                   'version X.Y.Z '),
                  # The copyright end date keeps changing; fix forever.
                  (re.compile(r'Copyright \(C\) 20\d\d The Apache '
-                              'Software Foundation\.'),
+                             r'Software Foundation\.'),
                   'Copyright (C) YYYY The Apache Software Foundation'),
                  # In 'svn --version --quiet', we print only the version
                  # number in a single line.
@@ -120,7 +120,7 @@ switched_del_lines_res = [
 # seen switch_res_line.
 switched_rep_lines_res = [
                           # We don't care about the actual canonical host
-                          (re.compile('^\* running on.*$'), '* running on'),
+                          (re.compile(r'^\* running on.*$'), '* running on'),
                          ]
 
 def process_lines(lines):

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/info_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/info_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/info_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/info_tests.py
 Fri Dec  6 13:59:05 2024
@@ -96,7 +96,7 @@ def match_xml_element(str, exprs):
   atttribute_re = re.compile(
                  r"\s+(?P<key>[\w-]+)\s*=\s*(['\"])(?P<val>[^'\"]*)\2", re.M)
   self_closing_re = re.compile(r"\s*/>", re.M)
-  content_re_str = "\\s*>(?P<content>.*?)</%s\s*>"
+  content_re_str = r"\s*>(?P<content>.*?)</%s\s*>"
 
   m = start_tag_re.match(str)
   if not m:
@@ -402,7 +402,7 @@ def info_repos_root_url(sbox):
         'Path'              : re.escape(os.path.basename(sbox.repo_dir)),
         'Repository Root'   : re.escape(sbox.repo_url),
         'URL'               : re.escape(sbox.repo_url),
-        'Relative URL'      : '\^/', # escape ^ -- this isn't a regexp
+        'Relative URL'      : r'\^/', # escape ^ -- this isn't a regexp
         'Revision'          : '1',
         'Node Kind'         : 'directory',
         'Last Changed Rev'  : '1',
@@ -412,7 +412,7 @@ def info_repos_root_url(sbox):
         'Name'              : 'iota',
         'Repository Root'   : re.escape(sbox.repo_url),
         'URL'               : re.escape(sbox.repo_url + '/iota'),
-        'Relative URL'      : '\^/iota', # escape ^ -- this isn't a regexp
+        'Relative URL'      : r'\^/iota', # escape ^ -- this isn't a regexp
         'Revision'          : '1',
         'Node Kind'         : 'file',
         'Last Changed Rev'  : '1',

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/legacy/utf8_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/legacy/utf8_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/legacy/utf8_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/legacy/utf8_tests.py
 Fri Dec  6 13:59:05 2024
@@ -143,7 +143,7 @@ else:
 # Also check that the environment contains the expected locale settings
 # either by default, or because we set them above.
 if localematch:
-  localeregex = re.compile('^en_US\.ISO-?8859-1$', re.I)
+  localeregex = re.compile(r'^en_US\.ISO-?8859-1$', re.I)
   for env in [ 'LC_ALL', 'LC_CTYPE', 'LANG' ]:
     env_value = os.getenv(env)
     if env_value:

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/lock_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/lock_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/lock_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/lock_tests.py
 Fri Dec  6 13:59:05 2024
@@ -91,8 +91,8 @@ def lock_file(sbox):
                                      '-m', '', file_path)
 
   # --- Meanwhile, in our other working copy... ---
-  err_re = "(svn\: E195022\: File '.*iota' is locked in another)|" + \
-           "(svn\: E160039: User '?jconstant'? does not own lock on 
path.*iota')"
+  err_re = r"(svn\: E195022\: File '.*iota' is locked in another)|" + \
+           r"(svn\: E160039: User '?jconstant'? does not own lock on 
path.*iota')"
 
   svntest.main.run_svn(None, 'update', wc_b)
   # -- Try to change a file --
@@ -112,8 +112,8 @@ def lock_file(sbox):
   # change the locked file's properties
   svntest.main.run_svn(None, 'propset', 'sneakyuser', 'Sally', file_path_b)
 
-  err_re = "(svn\: E195022\: File '.*iota' is locked in another)|" + \
-           "(svn\: E160039\: User '?jconstant'? does not own lock on path)"
+  err_re = r"(svn\: E195022\: File '.*iota' is locked in another)|" + \
+           r"(svn\: E160039\: User '?jconstant'? does not own lock on path)"
 
   # attempt (and fail) to commit as user Sally
   svntest.actions.run_and_verify_commit(wc_b, None, None, err_re,
@@ -1275,8 +1275,8 @@ def ls_url_encoded(sbox):
                                      [], "lock", fname)
 
   # Make sure ls shows it being locked.
-  expected_output = " +2 " + re.escape(svntest.main.wc_author) + " +O .+f|" \
-                    " +2 " + re.escape(svntest.main.wc_author) + "    .+\./"
+  expected_output = r" +2 %(author)s +O .+f| +2 %(author)s    .+\./" % \
+                    {'author': re.escape(svntest.main.wc_author)}
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      "list", "-v", dirname)
 

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/log_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/log_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/log_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/log_tests.py
 Fri Dec  6 13:59:05 2024
@@ -471,8 +471,7 @@ def parse_log_output(log_lines, with_dif
 
   # Regular expression to match the header line of a log message, with
   # these groups: (revision number), (author), (date), (num lines).
-  header_re = re.compile('^r([0-9]+) \| ' \
-                         + '([^|]*) \| ([^|]*) \| ([0-9]+) lines?')
+  header_re = re.compile(r'^r([0-9]+) \| ([^|]*) \| ([^|]*) \| ([0-9]+) 
lines?')
 
   # The log chain to return.
   chain = []
@@ -984,10 +983,10 @@ PROPS-END
 
   # Verify the output contains either the expected fuzzy escape
   # sequence, or the literal control char.
-  match_unescaped_ctrl_re = "This msg contains a Ctrl-T \(.\) " \
-                            "and a Ctrl-I \(\t\)\."
-  match_escaped_ctrl_re = "^This msg contains a Ctrl-T \(\?\\\\020\) " \
-                          "and a Ctrl-I \(\t\)\."
+  match_unescaped_ctrl_re = r"This msg contains a Ctrl-T \(.\) " \
+                            r"and a Ctrl-I \(\t\)\."
+  match_escaped_ctrl_re = r"^This msg contains a Ctrl-T \(\?\\020\) " \
+                          r"and a Ctrl-I \(\t\)\."
   matched = None
   for line in output:
     if re.match(match_unescaped_ctrl_re, line) \
@@ -1490,8 +1489,8 @@ def retrieve_revprops(sbox):
 
   # Can't set revprops with log.
   svntest.actions.run_and_verify_log_xml(
-    expected_stderr=(".*cannot assign with 'with-revprop' option"
-                     " \(drop the '='\)"),
+    expected_stderr=(r".*cannot assign with 'with-revprop' option"
+                     r" \(drop the '='\)"),
     args=['--with-revprop=foo=bar'])
 
   # basic test without revprop options
@@ -2670,8 +2669,8 @@ def log_revision_move_copy(sbox):
                                      '-r2')
 
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r3\ .*\n',
+    r'-+\n',
+    r'r3 .*\n',
     re.escape('Changed paths:\n'),
     re.escape('   D /A/B/E\n'),
     re.escape('   A /E (from /A/B/E:2)\n'), # Patched - Direct move
@@ -2680,7 +2679,7 @@ def log_revision_move_copy(sbox):
     re.escape('   D /iota\n'),
     re.escape('   A /iotb (from /iota:2)\n'), # Patched - Direct move
     re.escape('   A /mutb (from /A/mu:1)\n'), # Copy (always r1)
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox.wc_dir,

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_authz_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_authz_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_authz_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_authz_tests.py
 Fri Dec  6 13:59:05 2024
@@ -773,7 +773,7 @@ def diff_unauth_parent(sbox):
     'Added: k\n',
     '## -0,0 +1 ##\n',
     '+v\n',
-    '\ No newline at end of property\n'
+    '\\ No newline at end of property\n'
   ]
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'diff', sbox.repo_url + '/A', '-c', '2')
@@ -830,9 +830,9 @@ def diff_unauth_parent(sbox):
       'Modified: this-is\n',
       '## -1 +1 ##\n',
       '-E\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
       '+G\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
     ]
   else:
     # ### We should also see a property deletion here!
@@ -847,7 +847,7 @@ def diff_unauth_parent(sbox):
     'Deleted: this-is\n',
     '## -1 +0,0 ##\n',
     '-E\n',
-    '\ No newline at end of property\n',
+    '\\ No newline at end of property\n',
     'Index: .\n',
     '===================================================================\n',
     '--- .\t(nonexistent)\n',
@@ -858,7 +858,7 @@ def diff_unauth_parent(sbox):
       'Added: this-is\n',
       '## -0,0 +1 ##\n',
       '+G\n',
-      '\ No newline at end of property\n',
+      '\\ No newline at end of property\n',
     ]
 
   # Use two url diff, because 'svn diff url -c' uses copyfrom to diff against

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_automatic_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_automatic_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_automatic_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_automatic_tests.py
 Fri Dec  6 13:59:05 2024
@@ -1361,9 +1361,9 @@ def merge_delete_crlf_file(sbox):
 
   # Let commit fix the eols
   sbox.simple_add_text('with\rCRLF\rhere!', 'A/crlf')
-  sbox.simple_add_text('with\rnative\r\eol', 'A/native')
-  sbox.simple_add_text('with\rCR\r\eol', 'A/cr')
-  sbox.simple_add_text('with\rLF\r\eol', 'A/lf')
+  sbox.simple_add_text('with\rnative\r\\eol', 'A/native')
+  sbox.simple_add_text('with\rCR\r\\eol', 'A/cr')
+  sbox.simple_add_text('with\rLF\r\\eol', 'A/lf')
 
   # And apply the magic property
   sbox.simple_propset('svn:eol-style', 'CRLF',   'A/crlf')

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_tests.py
 Fri Dec  6 13:59:05 2024
@@ -247,9 +247,9 @@ def textual_merges_galore(sbox):
 
   expected_skip = wc.State('', { })
 
-  tau_conflict_support_files = ["tau\.working",
-                                "tau\.merge-right\.r3",
-                                "tau\.merge-left\.r1"]
+  tau_conflict_support_files = [r"tau\.working",
+                                r"tau\.merge-right\.r3",
+                                r"tau\.merge-left\.r1"]
 
   svntest.actions.run_and_verify_merge(other_wc, '1', '3',
                                        sbox.repo_url, None,
@@ -2629,7 +2629,7 @@ def safe_property_merge(sbox):
   expected_skip = wc.State('', { })
 
   # should have 3 'prej' files left behind, describing prop conflicts:
-  extra_files = ['alpha.*\.prej', 'beta.*\.prej', 'dir_conflicts.*\.prej']
+  extra_files = [r'alpha.*\.prej', r'beta.*\.prej', r'dir_conflicts.*\.prej']
 
   svntest.actions.run_and_verify_merge(B2_path, '3', '4', B_url, None,
                                        expected_output,
@@ -2752,7 +2752,7 @@ def property_merge_from_branch(sbox):
   expected_skip = wc.State('', { })
 
   # should have 2 'prej' files left behind, describing prop conflicts:
-  extra_files = ['alpha.*\.prej', 'dir_conflicts.*\.prej']
+  extra_files = [r'alpha.*\.prej', r'dir_conflicts.*\.prej']
 
   svntest.actions.run_and_verify_merge(B2_path, '3', '4', B_url, None,
                                        expected_output,
@@ -2952,9 +2952,9 @@ def cherry_pick_text_conflict(sbox):
                                        expected_skip,
                                        expected_error,
                                        extra_files=
-                                       ["mu\.working",
-                                        "mu\.merge-right\.r4",
-                                        "mu\.merge-left\.r3"])
+                                       [r"mu\.working",
+                                        r"mu\.merge-right\.r4",
+                                        r"mu\.merge-left\.r3"])
 
 #----------------------------------------------------------------------
 # Test for issue 2135
@@ -14517,9 +14517,9 @@ def merge_automatic_conflict_resolution(
                       "=======\n"
                       "New content>>>>>>> .merge-right.r3\n")
   expected_status.tweak('D/H/psi', status='C ')
-  psi_conflict_support_files = ["psi\.working",
-                                "psi\.merge-right\.r3",
-                                "psi\.merge-left\.r2"]
+  psi_conflict_support_files = [r"psi\.working",
+                                r"psi\.merge-right\.r3",
+                                r"psi\.merge-left\.r2"]
   svntest.actions.run_and_verify_merge(A_COPY_path, '2', '3',
                                        sbox.repo_url + '/A', None,
                                        expected_output,
@@ -17301,7 +17301,7 @@ def merge_target_selection(sbox):
 
   # r4
   svntest.main.file_write(sbox.ospath('dir/binary-file'),
-                          '\9\8\7\6\5\4\3\2\1')
+                          '\x09\x08\7\6\5\4\3\2\1')
   sbox.simple_commit()
 
   sbox.simple_update()

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_tree_conflict_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_tree_conflict_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_tree_conflict_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/merge_tree_conflict_tests.py
 Fri Dec  6 13:59:05 2024
@@ -1856,9 +1856,9 @@ def merge_replace_causes_tree_conflict2(
   actions.run_and_verify_status(wc_dir, expected_status)
 
   # Check the tree conflict types:
-  expected_stdout = '(R.*)|(Summary of conflicts.*)|(  Tree conflicts.*)' \
-                    '|(.*local delete, incoming replace upon merge.*)' \
-                    '|(      \>.*)'
+  expected_stdout = r'(R.*)|(Summary of conflicts.*)|(  Tree conflicts.*)' \
+                    r'|(.*local delete, incoming replace upon merge.*)' \
+                    r'|(      \>.*)'
   tree_conflicted_path = [A_B_E, A_mu, A_D_G_pi, A_D_H]
   for path in tree_conflicted_path:
     actions.run_and_verify_svn2(expected_stdout, [], 0, 'st',

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/patch_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/patch_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/patch_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/patch_tests.py
 Fri Dec  6 13:59:05 2024
@@ -3433,7 +3433,7 @@ def patch_one_property(sbox, trailing_eo
     value = "v\n"
   else:
     value = "v"
-    unidiff_patch += ['\ No newline at end of property\n']
+    unidiff_patch += ['\\ No newline at end of property\n']
 
   svntest.main.file_write(patch_file_path, ''.join(unidiff_patch), 'wb')
 
@@ -5807,7 +5807,7 @@ def patch_binary_file(sbox):
     'Added: svn:mime-type\n',
     '## -0,0 +1 ##\n',
     '+application/binary\n',
-    '\ No newline at end of property\n',
+    '\\ No newline at end of property\n',
   ]
 
   _, diff_output, _ = svntest.actions.run_and_verify_svn(expected_output, [],
@@ -6005,7 +6005,7 @@ def patch_final_eol(sbox):
    '@@ -1 +1 @@\n',
    '-This is the file \'mu\'.\n',
    '+This is the file \'mu\'.\n',
-   '\ No newline at end of file\n',
+   '\\ No newline at end of file\n',
    'Index: iota\n',
    '===================================================================\n',
    '--- iota\t(revision 1)\n',
@@ -6013,7 +6013,7 @@ def patch_final_eol(sbox):
    '@@ -1 +1 @@\n',
    '-This is the file \'iota\'.\n',
    '+This is the file \'iota\'.\n',
-   '\ No newline at end of file' # Missing EOL
+   '\\ No newline at end of file' # Missing EOL
   ]
 
   patch = sbox.get_tempname('patch')
@@ -6073,7 +6073,7 @@ def patch_final_eol(sbox):
     '+++ A/mu\t(working copy)\n',
     '@@ -1 +1 @@\n',
     '-This is the file \'mu\'.\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+This is the file \'mu\'.\n',
     'Index: iota\n',
     '===================================================================\n',
@@ -6081,7 +6081,7 @@ def patch_final_eol(sbox):
     '+++ iota\t(working copy)\n',
     '@@ -1 +1 @@\n',
     '-This is the file \'iota\'.\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+This is the file \'iota\'.' # Missing eol
   ]
 
@@ -6746,9 +6746,9 @@ def patch_add_remove_executable(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  eicar_data = 'X5O!P%@AP[4\PZX54(P^)7CC)7}$' \
+  eicar_data = 'X5O!P%@AP[4\\PZX54(P^)7CC)7}$' \
                'EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*\0'
-  other_data = 'X5O!P%@AP[4\PZX54(P^)7CC)7}$' \
+  other_data = 'X5O!P%@AP[4\\PZX54(P^)7CC)7}$' \
                'SOME-LESS-INTERESTING-OTHER-TEXT!!!$H+H*\0' \
                '\0\0\0\0\0\0\0\0'
 
@@ -6912,7 +6912,7 @@ def patch_git_symlink(sbox):
     '+++ b/link-to-iota\n',
     '@@ -0,0 +1 @@\n',
     '+iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   patch_edit = [
@@ -6922,9 +6922,9 @@ def patch_git_symlink(sbox):
     '+++ b/link-to-iota\n',
     '@@ -1 +1 @@\n',
     '-iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+A/mu\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   patch_to_file = [
@@ -6935,7 +6935,7 @@ def patch_git_symlink(sbox):
     '+++ /dev/null\n',
     '@@ -1 +0,0 @@\n',
     '-A/mu\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     'diff --git a/link-to-iota b/link-to-iota\n',
     'new file mode 100644\n',
     'index 0000000..1b130bf\n',
@@ -7039,7 +7039,7 @@ def patch_like_git_symlink(sbox):
     '+++ b/link-to-iota\n',
     '@@ -0,0 +1 @@\n',
     '+iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   patch_edit = [
@@ -7049,9 +7049,9 @@ def patch_like_git_symlink(sbox):
     '+++ b/link-to-iota\n',
     '@@ -1 +1 @@\n',
     '-iota\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     '+A/mu\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
   ]
 
   patch_to_file = [
@@ -7062,7 +7062,7 @@ def patch_like_git_symlink(sbox):
     '+++ /dev/null\n',
     '@@ -1 +0,0 @@\n',
     '-A/mu\n',
-    '\ No newline at end of file\n',
+    '\\ No newline at end of file\n',
     'diff --git a/link-to-iota b/link-to-iota\n',
     'new file mode 100644\n',
     'index 0000000..1b130bf\n',
@@ -7709,7 +7709,7 @@ def patch_merge(sbox):
       ' J\n'
       ' K\n'
       ' L\n'
-      '\ No newline at end of file', mode='wb')
+      '\\ No newline at end of file', mode='wb')
 
   expected_skip = wc.State('', { })
   expected_output = wc.State(wc_dir, {
@@ -7735,7 +7735,7 @@ def patch_merge(sbox):
       ' J\n'
       ' K\n'
       ' L\n'
-      '\ No newline at end of file', mode='wb')
+      '\\ No newline at end of file', mode='wb')
 
   svntest.actions.run_and_verify_patch(wc_dir, local_patch,
                                        expected_output, None,
@@ -7871,7 +7871,7 @@ def patch_empty_prop(sbox):
     value = "v\n"
   else:
     value = "v"
-    unidiff_patch += ['\ No newline at end of property\n']
+    unidiff_patch += ['\\ No newline at end of property\n']
 
   patch_file_path = sbox.get_tempname('my.patch')
   svntest.main.file_write(patch_file_path, ''.join(unidiff_patch), 'wb')

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/prop_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/prop_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/prop_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/prop_tests.py
 Fri Dec  6 13:59:05 2024
@@ -349,7 +349,7 @@ def update_conflict_props(sbox):
   expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
   expected_status.tweak('A/mu', 'A', status=' C')
 
-  extra_files = ['mu.*\.prej', 'dir_conflicts.*\.prej']
+  extra_files = [r'mu.*\.prej', r'dir_conflicts.*\.prej']
   # Do the update and check the results in three ways... INCLUDING PROPS
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/special_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/special_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/special_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/special_tests.py
 Fri Dec  6 13:59:05 2024
@@ -71,7 +71,7 @@ def general_symlink(sbox):
   exit_code, stdout_lines, stderr_lines = svntest.main.run_svn(1, 'diff',
                                                                wc_dir)
 
-  regex = '^\+link linktarget'
+  regex = r'^\+link linktarget'
   for line in stdout_lines:
     if re.match(regex, line):
       break

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/stat_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/stat_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/stat_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/stat_tests.py
 Fri Dec  6 13:59:05 2024
@@ -559,7 +559,7 @@ def status_uninvited_parent_directory(sb
 
   for line in out:
     # The "/?" is just to allow for an optional trailing slash.
-    if re.match("\\s+\\*.*\.other/?$", line):
+    if re.match(r"\s+\*.*\.other/?$", line):
       raise svntest.Failure
 
 @Issue(1289)

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=1922345&r1=1922344&r2=1922345&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
 Fri Dec  6 13:59:05 2024
@@ -25,7 +25,7 @@
 ######################################################################
 
 # General modules
-import os, logging, base64, functools
+import os, logging, base64, functools, time
 
 # Our testing module
 import svntest
@@ -351,6 +351,9 @@ def simple_diff_with_pristine(sbox):
   sbox.simple_add('file')
   sbox.simple_commit(message='r1')
 
+  # Sleep to ensure timestamps change
+  time.sleep(1.1)
+
   sbox.simple_append('file', 'bar\n', truncate=True)
 
   diff_output = svntest.verify.make_diff_header(
@@ -383,6 +386,9 @@ def simple_diff_without_pristine(sbox):
   sbox.simple_add('file')
   sbox.simple_commit(message='r1')
 
+  # Sleep to ensure timestamps change
+  time.sleep(1.1)
+
   sbox.simple_append('file', 'bar\n', truncate=True)
 
   diff_output = svntest.verify.make_diff_header(
@@ -415,6 +421,9 @@ def simple_revert_with_pristine(sbox):
   sbox.simple_add('file')
   sbox.simple_commit(message='r1')
 
+  # Sleep to ensure timestamps change
+  time.sleep(1.1)
+
   sbox.simple_append('file', 'bar\n', truncate=True)
 
   svntest.actions.run_and_verify_revert([sbox.ospath('file')])
@@ -447,6 +456,9 @@ def simple_revert_without_pristine(sbox)
   sbox.simple_add('file')
   sbox.simple_commit(message='r1')
 
+  # Sleep to ensure timestamps change
+  time.sleep(1.1)
+
   sbox.simple_append('file', 'bar\n', truncate=True)
 
   svntest.actions.run_and_verify_revert([sbox.ospath('file')])

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnadmin_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnadmin_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnadmin_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnadmin_tests.py
 Fri Dec  6 13:59:05 2024
@@ -58,17 +58,20 @@ def read_rep_cache(repo_dir):
   """
   db_path = os.path.join(repo_dir, 'db', 'rep-cache.db')
   db1 = svntest.sqlite3.connect(db_path)
-  schema1 = db1.execute("pragma user_version").fetchone()[0]
-  # Can't test newer rep-cache schemas with an old built-in SQLite; see the
-  # documentation of STMT_CREATE_SCHEMA_V2 in 
../../libsvn_fs_fs/rep-cache-db.sql
-  if schema1 >= 2 and svntest.sqlite3.sqlite_version_info < (3, 8, 2):
-    raise svntest.Failure("Can't read rep-cache schema %d using old "
-                          "Python-SQLite version %s < (3,8,2)" %
-                           (schema1,
-                            svntest.sqlite3.sqlite_version_info))
-
-  content = { row[0]: row[1:] for row in
-              db1.execute("select * from rep_cache") }
+  try:
+    schema1 = db1.execute("pragma user_version").fetchone()[0]
+    # Can't test newer rep-cache schemas with an old built-in SQLite; see the
+    # documentation of STMT_CREATE_SCHEMA_V2 in 
../../libsvn_fs_fs/rep-cache-db.sql
+    if schema1 >= 2 and svntest.sqlite3.sqlite_version_info < (3, 8, 2):
+      raise svntest.Failure("Can't read rep-cache schema %d using old "
+                            "Python-SQLite version %s < (3,8,2)" %
+                             (schema1,
+                              svntest.sqlite3.sqlite_version_info))
+
+    content = { row[0]: row[1:] for row in
+                db1.execute("select * from rep_cache") }
+  finally:
+    db1.close()
   return content
 
 def check_hotcopy_bdb(src, dst):
@@ -1787,7 +1790,7 @@ def test_lslocks_and_rmlocks(sbox):
       "Owner: jrandom",
       "Created:.*",
       "Expires:.*",
-      "Comment \(1 line\):",
+      r"Comment \(1 line\):",
       "Locking files",
       "\n", # empty line
       ]
@@ -3511,8 +3514,8 @@ def dump_exclude(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # '/A/D/H' and '/A/B/E' is not added.
     re.escape('Changed paths:\n'),
     re.escape('   A /A\n'),
@@ -3528,7 +3531,7 @@ def dump_exclude(sbox):
     re.escape('   A /A/D/gamma\n'),
     re.escape('   A /A/mu\n'),
     re.escape('   A /iota\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3564,18 +3567,18 @@ def dump_exclude_copysource(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r2\ .*\n',
+    r'-+\n',
+    r'r2 .*\n',
     re.escape('Changed paths:\n'),
     # Simple add, not copy.
     re.escape('   A /branches/branch1\n'),
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # '/trunk' is not added.
     re.escape('Changed paths:\n'),
     re.escape('   A /branches\n'),
     re.escape('   A /tags\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3609,13 +3612,13 @@ def dump_include(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # '/B' is not added.
     re.escape('Changed paths:\n'),
     re.escape('   A /A\n'),
     re.escape('   A /C\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3651,17 +3654,17 @@ def dump_not_include_copysource(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r2\ .*\n',
+    r'-+\n',
+    r'r2 .*\n',
     re.escape('Changed paths:\n'),
     # Simple add, not copy.
     re.escape('   A /branches/branch1\n'),
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # Only '/branches' is added in r1.
     re.escape('Changed paths:\n'),
     re.escape('   A /branches\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3693,12 +3696,12 @@ def dump_exclude_by_pattern(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     re.escape('Changed paths:\n'),
     # Only '/bbc' is added in r1.
     re.escape('   A /bbc\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3730,14 +3733,14 @@ def dump_include_by_pattern(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r1\ .*\n',
+    r'-+\n',
+    r'r1 .*\n',
     # '/bbc' is not added.
     re.escape('Changed paths:\n'),
     re.escape('   A /aaa\n'),
     re.escape('   A /aab\n'),
     re.escape('   A /aac\n'),
-    '-+\\n'
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)
@@ -3782,27 +3785,27 @@ def dump_exclude_all_rev_changes(sbox):
 
   # Check log. Revision properties ('svn:log' etc.) should be empty for r2.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r3 | jrandom | .* | 1 line\\n',
+    r'-+\n',
+    r'r3 \| jrandom \| .* \| 1 line\n',
     re.escape('Changed paths:'),
     re.escape('   A /r3a'),
     re.escape('   A /r3b'),
     re.escape('   A /r3c'),
     '',
     re.escape('Revision 3.'),
-    '-+\\n',
+    r'-+\n',
     re.escape('r2 | (no author) | (no date) | 1 line'),
     '',
     '',
-    '-+\\n',
-    'r1 | jrandom | .* | 1 line\\n',
+    r'-+\n',
+    r'r1 | jrandom | .* | 1 line\n',
     re.escape('Changed paths:'),
     re.escape('   A /r1a'),
     re.escape('   A /r1b'),
     re.escape('   A /r1c'),
     '',
     re.escape('Revision 1.'),
-    '-+\\n',
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v',  sbox2.repo_url)
@@ -3944,8 +3947,8 @@ def dump_include_copied_directory(sbox):
 
   # Check log.
   expected_output = svntest.verify.RegexListOutput([
-    '-+\\n',
-    'r2\ .*\n',
+    r'-+\n',
+    r'r2 .*\n',
     # Only '/COPY' is added
     re.escape('Changed paths:\n'),
     re.escape('   A /COPY'),
@@ -3958,9 +3961,9 @@ def dump_include_copied_directory(sbox):
     re.escape('   A /COPY/H/omega'),
     re.escape('   A /COPY/H/psi'),
     re.escape('   A /COPY/gamma'),
-    '-+\\n',
-    'r1\ .*\n',
-    '-+\\n'
+    r'-+\n',
+    r'r1 .*\n',
+    r'-+\n',
   ])
   svntest.actions.run_and_verify_svn(expected_output, [],
                                      'log', '-v', '-q', sbox2.repo_url)

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnfsfs_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnfsfs_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnfsfs_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnfsfs_tests.py
 Fri Dec  6 13:59:05 2024
@@ -167,38 +167,38 @@ def test_stats(sbox):
                       'Histogram of directory property sizes:',
                       'Histogram of directory property representation sizes:']
   patterns_to_find = {
-    'Reading revisions' : ['\s+ 0[ 0-9]*'],
-    'Global .*'         : ['.*\d+ bytes in .*\d+ revisions',
-                           '.*\d+ bytes in .*\d+ changes',
-                           '.*\d+ bytes in .*\d+ node revision records',
-                           '.*\d+ bytes in .*\d+ representations',
-                           '.*\d+ bytes expanded representation size',
-                           '.*\d+ bytes with rep-sharing off' ],
-    'Noderev .*'        : ['.*\d+ bytes in .*\d+ nodes total',
-                           '.*\d+ bytes in .*\d+ directory noderevs',
-                           '.*\d+ bytes in .*\d+ file noderevs' ],
-    'Representation .*' : ['.*\d+ bytes in .*\d+ representations total',
-                           '.*\d+ bytes in .*\d+ directory representations',
-                           '.*\d+ bytes in .*\d+ file representations',
-                           '.*\d+ bytes in .*\d+ representations of added file 
nodes',
-                           '.*\d+ bytes in .*\d+ directory property 
representations',
-                           '.*\d+ bytes in .*\d+ file property 
representations',
-                           '.*\d+ average delta chain length',
-                           '.*\d+ bytes in header & footer overhead' ],
+    'Reading revisions' : [r'\s+ 0[ 0-9]*'],
+    'Global .*'         : [r'.*\d+ bytes in .*\d+ revisions',
+                           r'.*\d+ bytes in .*\d+ changes',
+                           r'.*\d+ bytes in .*\d+ node revision records',
+                           r'.*\d+ bytes in .*\d+ representations',
+                           r'.*\d+ bytes expanded representation size',
+                           r'.*\d+ bytes with rep-sharing off' ],
+    'Noderev .*'        : [r'.*\d+ bytes in .*\d+ nodes total',
+                           r'.*\d+ bytes in .*\d+ directory noderevs',
+                           r'.*\d+ bytes in .*\d+ file noderevs' ],
+    'Representation .*' : [r'.*\d+ bytes in .*\d+ representations total',
+                           r'.*\d+ bytes in .*\d+ directory representations',
+                           r'.*\d+ bytes in .*\d+ file representations',
+                           r'.*\d+ bytes in .*\d+ representations of added 
file nodes',
+                           r'.*\d+ bytes in .*\d+ directory property 
representations',
+                           r'.*\d+ bytes in .*\d+ file property 
representations',
+                           r'.*\d+ average delta chain length',
+                           r'.*\d+ bytes in header & footer overhead' ],
     '.* representation statistics:' :
-                          ['.*\d+ bytes in .*\d+ reps',
-                           '.*\d+ bytes in .*\d+ shared reps',
-                           '.*\d+ bytes expanded size',
-                           '.*\d+ bytes expanded shared size',
-                           '.*\d+ bytes with rep-sharing off',
-                           '.*\d+ shared references',
-                           '.*\d+ average delta chain length'],
-    'Largest.*:'        : ['.*\d+ r\d+ */\S*'],
+                          [r'.*\d+ bytes in .*\d+ reps',
+                           r'.*\d+ bytes in .*\d+ shared reps',
+                           r'.*\d+ bytes expanded size',
+                           r'.*\d+ bytes expanded shared size',
+                           r'.*\d+ bytes with rep-sharing off',
+                           r'.*\d+ shared references',
+                           r'.*\d+ average delta chain length'],
+    'Largest.*:'        : [r'.*\d+ r\d+ */\S*'],
     'Extensions by number .*:' :
-                          ['.*\d+ \( ?\d+%\) representations'],
+                          [r'.*\d+ \( ?\d+%\) representations'],
     'Extensions by size .*:' :
-                          ['.*\d+ \( ?\d+%\) bytes'],
-    'Histogram of .*:'  : ['.*\d+ \.\. < \d+.*\d+ \( ?\d+%\) bytes in *\d+ \( 
?\d+%\) items']
+                          [r'.*\d+ \( ?\d+%\) bytes'],
+    'Histogram of .*:'  : [r'.*\d+ \.\. < \d+.*\d+ \( ?\d+%\) bytes in *\d+ \( 
?\d+%\) items']
   }
 
   # check that the output contains all sections

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnmucc_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnmucc_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnmucc_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svnmucc_tests.py
 Fri Dec  6 13:59:05 2024
@@ -49,7 +49,7 @@ def reject_bogus_mergeinfo(sbox):
                                          sbox.repo_url + '/A')
 
 _svnmucc_re = re.compile(b'^(r[0-9]+) committed by jrandom at (.*)$')
-_log_re = re.compile('^   ([ADRM] /[^\(]+($| \(from .*:[0-9]+\)$))')
+_log_re = re.compile(r'^   ([ADRM] /[^\(]+($| \(from .*:[0-9]+\)$))')
 _err_re = re.compile('^svnmucc: (.*)$')
 
 def test_svnmucc(repo_url, expected_path_changes, *varargs):

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/actions.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/actions.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/actions.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/actions.py
 Fri Dec  6 13:59:05 2024
@@ -432,27 +432,6 @@ def run_and_verify_svnrdump(dumpfile_con
   return output
 
 
-def run_and_verify_svnmover(expected_stdout, expected_stderr,
-                            *varargs):
-  """Run svnmover command and check its output"""
-
-  expected_exit = 0
-  if expected_stderr is not None and expected_stderr != []:
-    expected_exit = 1
-  return run_and_verify_svnmover2(expected_stdout, expected_stderr,
-                                  expected_exit, *varargs)
-
-def run_and_verify_svnmover2(expected_stdout, expected_stderr,
-                             expected_exit, *varargs):
-  """Run svnmover command and check its output and exit code."""
-
-  exit_code, out, err = main.run_svnmover(*varargs)
-  verify.verify_outputs("Unexpected output", out, err,
-                        expected_stdout, expected_stderr)
-  verify.verify_exit_code("Unexpected return code", exit_code, expected_exit)
-  return exit_code, out, err
-
-
 def run_and_verify_svnmucc(expected_stdout, expected_stderr,
                            *varargs):
   """Run svnmucc command and check its output"""
@@ -1046,9 +1025,9 @@ def run_and_parse_info(*args):
       # normal line
       key, value = line.split(':', 1)
 
-      if re.search(' \(\d+ lines?\)$', key):
+      if re.search(r' \(\d+ lines?\)$', key):
         # numbered continuation lines
-        match = re.match('^(.*) \((\d+) lines?\)$', key)
+        match = re.match(r'^(.*) \((\d+) lines?\)$', key)
         key = match.group(1)
         lock_comment_lines = int(match.group(2))
       elif len(value) > 1:

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=1922345&r1=1922344&r2=1922345&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
 Fri Dec  6 13:59:05 2024
@@ -140,10 +140,7 @@ else:
 if windows:
   svneditor_script = os.path.join(sys.path[0], 'svneditor.bat')
 else:
-  # This script is in the build tree, not in the source tree.  
-  svneditor_script = os.path.join(os.path.dirname(
-                                      os.path.dirname(os.path.abspath('.'))),
-                                  'tests/cmdline/svneditor.sh')
+  svneditor_script = os.path.join(sys.path[0], 'svneditor.sh')
 
 # Username and password used by the working copies
 wc_author = 'jrandom'
@@ -209,7 +206,6 @@ svnauthz_binary = os.path.abspath('../..
 svnauthz_validate_binary = os.path.abspath(
     '../../../tools/server-side/svnauthz-validate' + _exe
 )
-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')
@@ -905,12 +901,6 @@ def run_svnversion(*varargs):
   as list of lines (including line terminators)."""
   return run_command(svnversion_binary, 1, False, *varargs)
 
-def run_svnmover(*varargs):
-  """Run svnmover with VARARGS, returns exit code as int; stdout, stderr as
-  list of lines (including line terminators)."""
-  return run_command(svnmover_binary, 1, False,
-                     *(_with_auth(_with_config_dir(varargs))))
-
 def run_svnmucc(*varargs):
   """Run svnmucc with VARARGS, returns exit code as int; stdout, stderr as
   list of lines (including line terminators).  Use binary mode for output."""
@@ -1511,7 +1501,7 @@ def merge_notify_line(revstart=None, rev
   merge operation on revisions REVSTART through REVEND.  Omit both
   REVSTART and REVEND for the case where the left and right sides of
   the merge are from different URLs."""
-  from_foreign_phrase = foreign and "\(from foreign repository\) " or ""
+  from_foreign_phrase = foreign and r"\(from foreign repository\) " or ""
   if target:
     target_re = re.escape(target)
   else:
@@ -1877,7 +1867,7 @@ class TestSpawningThread(threading.Threa
 
 class TestRunner:
   """Encapsulate a single test case (predicate), including logic for
-  runing the test and test list output."""
+  running the test and test list output."""
 
   def __init__(self, func, index):
     self.pred = svntest.testcase.create_test_case(func)
@@ -2188,13 +2178,12 @@ def _create_parser(usage=None):
   if logger.getEffectiveLevel() == logging.NOTSET:
     logger.setLevel(logging.WARN)
 
-  def set_log_level(option, opt, value, parser, level=None):
-    if level:
-      # called from --verbose
-      logger.setLevel(level)
+  def set_log_level(option, opt, value, parser):
+    if value.isdigit():
+      level = int(value)
     else:
-      # called from --set-log-level
-      logger.setLevel(getattr(logging, value, None) or int(value))
+      level = getattr(logging, value)
+    logger.setLevel(level)
 
   # Set up the parser.
   # If you add new options, consider adding them in
@@ -2213,10 +2202,10 @@ def _create_parser(usage=None):
                     help='Print test doc strings instead of running them')
   parser.add_option('--milestone-filter', action='store', 
dest='milestone_filter',
                     help='Limit --list to those with target milestone 
specified')
-  parser.add_option('-v', '--verbose', action='callback',
-                    callback=set_log_level, callback_args=(logging.DEBUG, ),
+  parser.add_option('-v', '--verbose', action='store_const',
+                    dest='set_log_level', const=logging.DEBUG,
                     help='Print binary command-lines (same as ' +
-                         '"--set-log-level logging.DEBUG")')
+                         '"--set-log-level DEBUG")')
   parser.add_option('-q', '--quiet', action='store_true',
                     help='Print only unexpected results (not with --verbose)')
   parser.add_option('-p', '--parallel', action='store_const',
@@ -2501,10 +2490,15 @@ def execute_tests(test_list, serial_only
   global svnsync_binary
   global svndumpfilter_binary
   global svnversion_binary
-  global svnmover_binary
   global svnmucc_binary
   global svnauthz_binary
   global svnauthz_validate_binary
+  global svnfsfs_binary
+  global entriesdump_binary
+  global lock_helper_binary
+  global atomic_ra_revprop_change_binary
+  global wc_lock_tester_binary
+  global wc_incomplete_tester_binary
   global options
 
   if test_name:
@@ -2606,12 +2600,20 @@ def execute_tests(test_list, serial_only
                                           'svndumpfilter' + _exe)
       svnversion_binary = os.path.join(options.svn_bin, 'svnversion' + _exe)
       svnmucc_binary = os.path.join(options.svn_bin, 'svnmucc' + _exe)
+      svnfsfs_binary = os.path.join(options.svn_bin, 'svnfsfs' + _exe)
 
   if options.tools_bin:
     svnauthz_binary = os.path.join(options.tools_bin, 'svnauthz' + _exe)
     svnauthz_validate_binary = os.path.join(options.tools_bin,
                                             'svnauthz-validate' + _exe)
-    svnmover_binary = os.path.join(options.tools_bin, 'svnmover' + _exe)
+    entriesdump_binary = os.path.join(options.tools_bin, 'entries-dump' + _exe)
+    lock_helper_binary = os.path.join(options.tools_bin, 'lock-helper' + _exe)
+    atomic_ra_revprop_change_binary = os.path.join(options.tools_bin,
+                                                   'atomic-ra-revprop-change' 
+ _exe)
+    wc_lock_tester_binary = os.path.join(options.tools_bin,
+                                         'wc-lock-tester' + _exe)
+    wc_incomplete_tester_binary = os.path.join(options.tools_bin,
+                                               'wc-incomplete-tester' + _exe)
 
   ######################################################################
 

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/verify.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/verify.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/verify.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/verify.py
 Fri Dec  6 13:59:05 2024
@@ -852,7 +852,8 @@ def compare_dump_files(label_expected, l
     print('DIFF of raw dumpfiles (including expected differences)')
     print('--- ' + (label_expected or 'expected'))
     print('+++ ' + (label_actual or 'actual'))
-    print(''.join(ndiff(expected, actual)))
+    print(''.join(ndiff([repr(line) for line in expected], 
+                        [repr(line) for line in actual])))
     raise svntest.Failure('DIFF of parsed dumpfiles (ignoring expected 
differences)\n'
                           + '\n'.join(ndiff(
           pprint.pformat(parsed_expected).splitlines(),
@@ -1024,7 +1025,7 @@ def make_diff_prop_added(pname, pval):
   ] + make_diff_prop_val("+", pval)
 
 def make_diff_prop_modified(pname, pval1, pval2):
-  """Return a property diff for modification of property PNAME, old value
+  r"""Return a property diff for modification of property PNAME, old value
      PVAL1, new value PVAL2.
 
      PVAL is a single string with no embedded newlines.  A newline at the

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/wc.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/wc.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/wc.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/svntest/wc.py
 Fri Dec  6 13:59:05 2024
@@ -93,30 +93,30 @@ _re_parse_status = re.compile('^([?!MACD
                               '([KOBT ])'
                               '([C ]) '
                               '([* ]) +'
-                              '((?P<wc_rev>\d+|-|\?) +(\d|-|\?)+ +(\S+) +)?'
+                              r'((?P<wc_rev>\d+|-|\?) +(\d|-|\?)+ +(\S+) +)?'
                               '(?P<path>.+)$')
 
 _re_parse_status_ex = re.compile('^      ('
-               '(  \> moved (from (?P<moved_from>.+)|to (?P<moved_to>.*)))'
-              '|(  \> swapped places with (?P<swapped_with>.+).*)'
-              '|(\>   (?P<tc>.+))'
+               r'(  \> moved (from (?P<moved_from>.+)|to (?P<moved_to>.*)))'
+              r'|(  \> swapped places with (?P<swapped_with>.+).*)'
+              r'|(\>   (?P<tc>.+))'
   ')$')
 
 _re_parse_skipped = re.compile("^(Skipped[^']*) '(.+)'( --.*)?\n")
 
 _re_parse_summarize = re.compile("^([MAD ][M ])      (.+)\n")
 
-_re_parse_checkout = re.compile('^([RMAGCUDE_ B][MAGCUDE_ ])'
-                                '([B ])'
-                                '([CAUD ])\s+'
-                                '(.+)')
-_re_parse_co_skipped = re.compile('^(Restored|Skipped|Removed external)'
-                                  '\s+\'(.+)\'(( --|: ).*)?')
-_re_parse_co_restored = re.compile('^(Restored)\s+\'(.+)\'')
+_re_parse_checkout = re.compile(r'^([RMAGCUDE_ B][MAGCUDE_ ])'
+                                r'([B ])'
+                                r'([CAUD ])\s+'
+                                r'(.+)')
+_re_parse_co_skipped = re.compile(r'^(Restored|Skipped|Removed external)'
+                                  r'\s+\'(.+)\'(( --|: ).*)?')
+_re_parse_co_restored = re.compile(r'^(Restored)\s+\'(.+)\'')
 
 # Lines typically have a verb followed by whitespace then a path.
-_re_parse_commit_ext = re.compile('^(([A-Za-z]+( [a-z]+)*)) \'(.+)\'( --.*)?')
-_re_parse_commit = re.compile('^(\w+(  \(bin\))?)\s+(.+)')
+_re_parse_commit_ext = re.compile("^(([A-Za-z]+( [a-z]+)*)) '(.+)'( --.*)?")
+_re_parse_commit = re.compile(r'^(\w+(  \(bin\))?)\s+(.+)')
 
 #rN: eids 0 15 branches 4
 _re_parse_eid_header = re.compile('^r(-1|[0-9]+): eids ([0-9]+) ([0-9]+) '

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/trans_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/trans_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/trans_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/trans_tests.py
 Fri Dec  6 13:59:05 2024
@@ -304,7 +304,7 @@ def keywords_from_birth(sbox):
   fp = open(url_unexp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$URL: (http|https|file|svn|svn\\+ssh)://",
+          and (re.match(r"\$URL: (http|https|file|svn|svn\+ssh)://",
                         lines[0]))):
     logger.warn("URL expansion failed for %s", url_unexp_path)
     raise svntest.Failure
@@ -314,7 +314,7 @@ def keywords_from_birth(sbox):
   fp = open(url_exp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$URL: (http|https|file|svn|svn\\+ssh)://",
+          and (re.match(r"\$URL: (http|https|file|svn|svn\+ssh)://",
                         lines[0]))):
     logger.warn("URL expansion failed for %s", url_exp_path)
     raise svntest.Failure
@@ -324,7 +324,7 @@ def keywords_from_birth(sbox):
   fp = open(id_unexp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Id: id_unexp", lines[0]))):
+          and (re.match(r"\$Id: id_unexp", lines[0]))):
     logger.warn("Id expansion failed for %s", id_exp_path)
     raise svntest.Failure
   fp.close()
@@ -333,7 +333,7 @@ def keywords_from_birth(sbox):
   fp = open(id_exp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Id: id_exp", lines[0]))):
+          and (re.match(r"\$Id: id_exp", lines[0]))):
     logger.warn("Id expansion failed for %s", id_exp_path)
     raise svntest.Failure
   fp.close()
@@ -342,7 +342,7 @@ def keywords_from_birth(sbox):
   fp = open(header_unexp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Header: (https?|file|svn|svn\\+ssh)://.* jrandom",
+          and (re.match(r"\$Header: (https?|file|svn|svn\+ssh)://.* jrandom",
                         lines[0]))):
     logger.warn("Header expansion failed for %s", header_unexp_path)
     raise svntest.Failure
@@ -352,7 +352,7 @@ def keywords_from_birth(sbox):
   fp = open(header_exp_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Header: (https?|file|svn|svn\\+ssh)://.* jrandom",
+          and (re.match(r"\$Header: (https?|file|svn|svn\+ssh)://.* jrandom",
                         lines[0]))):
     logger.warn("Header expansion failed for %s", header_exp_path)
     raise svntest.Failure
@@ -409,7 +409,7 @@ def keywords_from_birth(sbox):
   fp = open(id_with_space_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Id: .*id with space", lines[0]))):
+          and (re.match(r"\$Id: .*id with space", lines[0]))):
     logger.warn("Id expansion failed for %s", id_with_space_path)
     raise svntest.Failure
   fp.close()
@@ -418,7 +418,7 @@ def keywords_from_birth(sbox):
   fp = open(id_exp_with_dollar_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$Id: .*id_exp with_\$_sign [^$]* jrandom \$",
+          and (re.match(r"\$Id: .*id_exp with_\$_sign [^$]* jrandom \$",
                         lines[0]))):
     logger.warn("Id expansion failed for %s", id_exp_with_dollar_path)
 
@@ -645,7 +645,7 @@ def keyword_expanded_on_checkout(sbox):
   fp = open(other_url_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1)
-          and (re.match("\$URL: (http|https|file|svn|svn\\+ssh)://",
+          and (re.match(r"\$URL: (http|https|file|svn|svn\+ssh)://",
                         lines[0]))):
     logger.warn("URL expansion failed for %s", other_url_path)
     raise svntest.Failure

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/update_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/update_tests.py?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/update_tests.py
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/cmdline/update_tests.py
 Fri Dec  6 13:59:05 2024
@@ -620,8 +620,8 @@ def update_to_resolve_text_conflicts(sbo
 
   # "Extra" files that we expect to result from the conflicts.
   # These are expressed as list of regexps.  What a cool system!  :-)
-  extra_files = ['mu.*\.r1', 'mu.*\.r2', 'mu.*\.mine',
-                 'rho.*\.r1', 'rho.*\.r2', 'rho.*\.mine', 'rho.*\.prej']
+  extra_files = [r'mu.*\.r1', r'mu.*\.r2', r'mu.*\.mine',
+                 r'rho.*\.r1', r'rho.*\.r2', r'rho.*\.mine', r'rho.*\.prej']
 
   # Do the update and check the results in three ways.
   # All "extra" files are passed to detect_conflict_files().
@@ -2700,10 +2700,10 @@ def update_with_obstructing_additions(sb
     })
 
   # "Extra" files that we expect to result from the conflicts.
-  extra_files = ['eta\.r0', 'eta\.r2', 'eta\.mine',
-                 'kappa\.r0', 'kappa\.r2', 'kappa\.mine',
-                 'epsilon\.r0', 'epsilon\.r2', 'epsilon\.mine',
-                 'kappa.prej', 'zeta.prej', 'dir_conflicts.prej']
+  extra_files = [r'eta\.r0', r'eta\.r2', r'eta\.mine',
+                 r'kappa\.r0', r'kappa\.r2', r'kappa\.mine',
+                 r'epsilon\.r0', r'epsilon\.r2', r'epsilon\.mine',
+                 r'kappa.prej', r'zeta.prej', r'dir_conflicts.prej']
 
   # Perform forced update and check the results in three
   # ways (including props).
@@ -3826,9 +3826,9 @@ def update_accept_conflicts(sbox):
                                              'foo\n'))
 
   # Set the expected extra files for the test
-  extra_files = ['iota.*\.r2', 'iota.*\.r3', 'iota.*\.mine',
-                 'lambda.*\.r2', 'lambda.*\.r3', 'lambda.*\.mine',
-                 'rho.*\.r2', 'rho.*\.r3', 'rho.*\.mine']
+  extra_files = [r'iota.*\.r2', r'iota.*\.r3', r'iota.*\.mine',
+                 r'lambda.*\.r2', r'lambda.*\.r3', r'lambda.*\.mine',
+                 r'rho.*\.r2', r'rho.*\.r3', r'rho.*\.mine']
 
   # Set the expected status for the test
   expected_status = svntest.actions.get_virginal_state(wc_backup, 3)

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=1922345&r1=1922344&r2=1922345&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
 Fri Dec  6 13:59:05 2024
@@ -51,7 +51,7 @@ Issues = svntest.testcase.Issues_deco
 Issue = svntest.testcase.Issue_deco
 Wimp = svntest.testcase.Wimp_deco
 
-wc_is_too_old_regex = (".*is too old \(format \d+.*\).*")
+wc_is_too_old_regex = (r".*is too old \(format \d+.*\).*")
 
 
 def get_current_format():

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_ra/ra-test.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_ra/ra-test.c?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_ra/ra-test.c 
(original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_ra/ra-test.c 
Fri Dec  6 13:59:05 2024
@@ -208,6 +208,50 @@ check_tunnel(void *tunnel_baton, const c
 static void
 close_tunnel(void *tunnel_context, void *tunnel_baton);
 
+#ifdef WIN32
+#define EXE_EXTENSION ".exe"
+#else
+#define EXE_EXTENSION ""
+#endif
+
+static svn_error_t *
+find_svnserve(const char **svnserve, apr_pool_t *pool)
+{
+  const char *abspath_build_layout;
+  const char *abspath_install_layout;
+  svn_node_kind_t kind;
+
+  /* try build layout first */
+  SVN_ERR(svn_dirent_get_absolute(&abspath_build_layout,
+                                  "../../svnserve/svnserve" EXE_EXTENSION,
+                                  pool));
+
+  SVN_ERR(svn_io_check_path(abspath_build_layout, &kind, pool));
+  if (kind == svn_node_file)
+    {
+      *svnserve = abspath_build_layout;
+      return SVN_NO_ERROR;
+    }
+
+  /* otherwise, try install layout */
+  SVN_ERR(svn_dirent_get_absolute(&abspath_install_layout,
+                                  "svnserve" EXE_EXTENSION, pool));
+
+  SVN_ERR(svn_io_check_path(abspath_install_layout, &kind, pool));
+  if (kind == svn_node_file)
+    {
+      *svnserve = abspath_install_layout;
+      return SVN_NO_ERROR;
+    }
+
+  return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+                           "Could not find svnserve. Checked paths:\n"
+                           "  %s\n"
+                           "  %s",
+                           svn_dirent_local_style(abspath_build_layout, pool),
+                           svn_dirent_local_style(abspath_install_layout, 
pool));
+}
+
 static svn_error_t *
 open_tunnel(svn_stream_t **request, svn_stream_t **response,
             svn_ra_close_tunnel_func_t *close_func, void **close_baton,
@@ -217,7 +261,6 @@ open_tunnel(svn_stream_t **request, svn_
             svn_cancel_func_t cancel_func, void *cancel_baton,
             apr_pool_t *pool)
 {
-  svn_node_kind_t kind;
   apr_proc_t *proc;
   apr_procattr_t *attr;
   apr_status_t status;
@@ -228,15 +271,7 @@ open_tunnel(svn_stream_t **request, svn_
 
   SVN_TEST_ASSERT(b->magic == TUNNEL_MAGIC);
 
-  SVN_ERR(svn_dirent_get_absolute(&svnserve, "../../svnserve/svnserve", pool));
-#ifdef WIN32
-  svnserve = apr_pstrcat(pool, svnserve, ".exe", SVN_VA_NULL);
-#endif
-  SVN_ERR(svn_io_check_path(svnserve, &kind, pool));
-  if (kind != svn_node_file)
-    return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
-                             "Could not find svnserve at %s",
-                             svn_dirent_local_style(svnserve, pool));
+  SVN_ERR(find_svnserve(&svnserve, pool));
 
   status = apr_procattr_create(&attr, pool);
   if (status == APR_SUCCESS)

Propchange: 
subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_subr/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Dec  6 13:59:05 2024
@@ -29,6 +29,7 @@ string-test
 string-test.tmp
 subst-test
 target-test
+task-test
 time-test
 translate-test
 utf-test

Modified: 
subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_subr/opt-test.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_subr/opt-test.c?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_subr/opt-test.c
 (original)
+++ 
subversion/branches/pristine-checksum-kind/subversion/tests/libsvn_subr/opt-test.c
 Fri Dec  6 13:59:05 2024
@@ -27,6 +27,7 @@
 #include "../svn_test.h"
 
 #include "svn_opt.h"
+#include "private/svn_opt_private.h"
 
 
 static svn_error_t *
@@ -190,6 +191,78 @@ test_svn_opt_args_to_target_array2(apr_p
   return SVN_NO_ERROR;
 }
 
+static const char *
+revision_ranges_to_string(apr_array_header_t *ranges,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool)
+{
+  svn_stringbuf_t *result = svn_stringbuf_create_empty(result_pool);
+  int i;
+
+  for (i = 0; i < ranges->nelts; i++)
+    {
+      svn_opt_revision_range_t *range =
+        APR_ARRAY_IDX(ranges, i, svn_opt_revision_range_t *);
+
+      if (i > 0)
+        {
+          svn_stringbuf_appendcstr(result, ",");
+        }
+
+      svn_stringbuf_appendcstr(result,
+                               svn_opt__revision_to_string(&range->start,
+                                                           scratch_pool));
+      svn_stringbuf_appendcstr(result, ":");
+
+      svn_stringbuf_appendcstr(result,
+                               svn_opt__revision_to_string(&range->end,
+                                                           scratch_pool));
+    }
+
+  return result->data;
+}
+
+static svn_error_t*
+test_svn_opt_parse_change_to_range(apr_pool_t *pool)
+{
+  int i;
+  static struct {
+    const char *input;
+    const int expected_rv;
+    const char *expected_range;
+  } const tests[] = {
+    { "123", 0, "122:123"},
+    { "r123", 0, "122:123"},
+    { "-123", 0, "123:122"},
+    { "-r123", 0, "123:122"},
+    { "r-123", 0, "123:122"},
+    { "--123", -1, ""},
+    { "-r-123", -1, ""},
+    { "123-456", 0, "122:456"},
+    { "r123-r456", 0, "122:456"},
+    { "--r123", -1, ""},
+    { "123--456", -1, ""},
+    { "1-0", -1, ""},
+    { "0-1", -1, ""},
+  };
+
+  for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
+    {
+      apr_array_header_t *ranges =
+        apr_array_make(pool, 0, sizeof(svn_opt_revision_range_t *));
+
+      SVN_TEST_INT_ASSERT(
+        svn_opt_parse_change_to_range(ranges, tests[i].input, pool),
+        tests[i].expected_rv);
+
+      SVN_TEST_STRING_ASSERT(
+        revision_ranges_to_string(ranges, pool, pool),
+        tests[i].expected_range);
+  }
+
+  return SVN_NO_ERROR;
+}
+
 
 /* The test table.  */
 
@@ -202,6 +275,8 @@ static struct svn_test_descriptor_t test
                    "test svn_opt_parse_path"),
     SVN_TEST_PASS2(test_svn_opt_args_to_target_array2,
                    "test svn_opt_args_to_target_array2"),
+    SVN_TEST_PASS2(test_svn_opt_parse_change_to_range,
+                   "test svn_opt_parse_change_to_range"),
     SVN_TEST_NULL
   };
 

Modified: 
subversion/branches/pristine-checksum-kind/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
 (original)
+++ 
subversion/branches/pristine-checksum-kind/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
 Fri Dec  6 13:59:05 2024
@@ -408,7 +408,10 @@ svn_min__check_cancel(void *baton)
  * return SVN_NO_ERROR.
  */
 static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+         int argc,
+         const svn_cmdline__argv_char_t *cmdline_argv[],
+         apr_pool_t *pool)
 {
   svn_error_t *err;
   int opt_id;
@@ -425,12 +428,15 @@ sub_main(int *exit_code, int argc, const
   svn_boolean_t force_interactive = FALSE;
   apr_hash_t *cfg_hash;
   svn_boolean_t read_pass_from_stdin = FALSE;
+  const char **argv;
 
   received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
 
   /* Check library versions */
   SVN_ERR(check_lib_versions());
 
+  SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
 #if defined(WIN32) || defined(__CYGWIN__)
   /* Set the working copy administrative directory name. */
   if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -946,7 +952,7 @@ sub_main(int *exit_code, int argc, const
 }
 
 int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
 {
   apr_pool_t *pool;
   int exit_code = EXIT_SUCCESS;

Modified: 
subversion/branches/pristine-checksum-kind/tools/client-side/svnconflict/svnconflict.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/tools/client-side/svnconflict/svnconflict.c?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/tools/client-side/svnconflict/svnconflict.c
 (original)
+++ 
subversion/branches/pristine-checksum-kind/tools/client-side/svnconflict/svnconflict.c
 Fri Dec  6 13:59:05 2024
@@ -632,7 +632,10 @@ svnconflict_resolve_tree(apr_getopt_t *o
  * return SVN_NO_ERROR.
  */
 static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+         int argc,
+         const svn_cmdline__argv_char_t *cmdline_argv[],
+         apr_pool_t *pool)
 {
   svn_error_t *err;
   int opt_id;
@@ -647,12 +650,15 @@ sub_main(int *exit_code, int argc, const
   svn_config_t *cfg_config;
   apr_hash_t *cfg_hash;
   svn_boolean_t read_pass_from_stdin = FALSE;
+  const char **argv;
 
   received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
 
   /* Check library versions */
   SVN_ERR(check_lib_versions());
 
+  SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
 #if defined(WIN32) || defined(__CYGWIN__)
   /* Set the working copy administrative directory name. */
   if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -949,7 +955,7 @@ sub_main(int *exit_code, int argc, const
 }
 
 int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
 {
   apr_pool_t *pool;
   int exit_code = EXIT_SUCCESS;

Modified: 
subversion/branches/pristine-checksum-kind/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-kind/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c?rev=1922345&r1=1922344&r2=1922345&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-kind/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
 (original)
+++ 
subversion/branches/pristine-checksum-kind/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
 Fri Dec  6 13:59:05 2024
@@ -302,7 +302,10 @@ check_lib_versions(void)
  * return SVN_NO_ERROR.
  */
 static svn_error_t *
-sub_main(int *exit_code, int argc, const char *argv[], apr_pool_t *pool)
+sub_main(int *exit_code,
+         int argc,
+         const svn_cmdline__argv_char_t *cmdline_argv[],
+         apr_pool_t *pool)
 {
   apr_getopt_t *os;
   const apr_getopt_option_t options[] =
@@ -313,10 +316,13 @@ sub_main(int *exit_code, int argc, const
       {0,             0,  0,  0}
     };
   apr_array_header_t *remaining_argv;
+  const char **argv;
 
   /* Check library versions */
   SVN_ERR(check_lib_versions());
 
+  SVN_ERR(svn_cmdline__get_cstring_argv(&argv, argc, cmdline_argv, pool));
+
 #if defined(WIN32) || defined(__CYGWIN__)
   /* Set the working copy administrative directory name. */
   if (getenv("SVN_ASP_DOT_NET_HACK"))
@@ -383,7 +389,7 @@ sub_main(int *exit_code, int argc, const
 }
 
 int
-main(int argc, const char *argv[])
+SVN_CMDLINE__MAIN(int argc, const svn_cmdline__argv_char_t *argv[])
 {
   apr_pool_t *pool;
   int exit_code = EXIT_SUCCESS;


Reply via email to