If I force an svnsync test to fail:

[[[
Index: subversion/tests/cmdline/svnsync_tests.py
===================================================================
--- subversion/tests/cmdline/svnsync_tests.py   (revision 1922016)
+++ subversion/tests/cmdline/svnsync_tests.py   (working copy)
@@ -481,7 +483,7 @@ def delete_revprops(sbox):
   svntest.actions.enable_revprop_changes(sbox.repo_dir)
   exit_code, out, err = svntest.main.run_svn(None,
                                              'pdel',
-                                             '-r', '1',
+                                             '-r', '0',
                                              '--revprop',
                                              'issue-id',
                                              sbox.repo_url)
]]]

I get the following error:

[[[
% python3 ./svnsync_tests.py 28 29
DIFF of raw dumpfiles (including expected differences)
--- expected
+++ actual
W: CWD: subversion/tests/cmdline
Traceback (most recent call last):
  File "subversion/tests/cmdline/svntest/main.py", line 1989, in run
    rc = self.pred.run(sandbox)
         ^^^^^^^^^^^^^^^^^^^^^^
  File "subversion/tests/cmdline/svntest/testcase.py", line 178, in run
    result = self.func(sandbox)
             ^^^^^^^^^^^^^^^^^^
  File "subversion/tests/cmdline/./svnsync_tests.py", line 493, in 
delete_revprops
    verify_mirror(dest_sbox, expected_contents)
  File "subversion/tests/cmdline/./svnsync_tests.py", line 169, in verify_mirror
    svntest.verify.compare_dump_files(
  File "subversion/tests/cmdline/svntest/verify.py", line 855, in 
compare_dump_files
    print(''.join(ndiff(expected, actual)))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/difflib.py", line 872, in compare
    yield from g
  File "/usr/lib/python3.11/difflib.py", line 923, in _fancy_replace
    cruncher.set_seq2(bj)
  File "/usr/lib/python3.11/difflib.py", line 248, in set_seq2
    self.__chain_b()
  File "/usr/lib/python3.11/difflib.py", line 289, in __chain_b
    if isjunk(elt):
       ^^^^^^^^^^^
  File "/usr/lib/python3.11/difflib.py", line 1077, in IS_CHARACTER_JUNK
    return ch in ws
           ^^^^^^^^
TypeError: 'in <string>' requires string as left operand, not int
FAIL:  svnsync_tests.py 28: copy-revprops with removals
PASS:  svnsync_tests.py 29: fd leak during sync from serf to local
]]]

So, two things are wrong here:

1. The test harness doesn't actually print the diff.

   That's probably because ndiff() is passed two lists of bytes objects,
   whereas it expects lists of str objects.

   The actual diff is:

[[[
@@ -13,9 +13,13 @@
 b'PROPS-END\n'
 b'\n'
 b'Revision-number: 1\n'
-b'Prop-content-length: 114\n'
-b'Content-length: 114\n'
+b'Prop-content-length: 136\n'
+b'Content-length: 136\n'
 b'\n'
+b'K 8\n'
+b'issue-id\n'
+b'V 4\n'
+b'1729\n'
 b'K 10\n'
 b'svn:author\n'
 b'V 8\n'
]]]

2. The next test was run.

   It shouldn't have run, because the exception wasn't just the actual
   output differing from the expected output, but an error in
   determining whether they differ or not.

Cheers,

Daniel

Reply via email to