Ugh. I thought all the "bytes" stuff was for the branch. NOT the trunk.
The revision below, and the others, is adding a whole bunch of
complexity. For no benefit.
-g
On Sat, Apr 4, 2009 at 23:54, Arfrever Frehtes Taifersar Arahesis
<Arfrever.FTA_at_gmail.com> wrote:
> Author: arfrever
> Date: Sat Apr 4 14:54:11 2009
> New Revision: 37006
>
> Log:
> Python 3 compatibility:
> Add encoding / decoding of some variables in 'subversion/tests' directory.
>
> * subversion/tests/cmdline/diff_tests.py:
> * subversion/tests/cmdline/patch_tests.py:
> * subversion/tests/cmdline/svntest/actions.py:
> * subversion/tests/cmdline/svntest/main.py:
> * subversion/tests/cmdline/svntest/wc.py: Add encoding / decoding of some
> variables.
>
> Modified:
> trunk/subversion/tests/cmdline/diff_tests.py
> trunk/subversion/tests/cmdline/patch_tests.py
> trunk/subversion/tests/cmdline/svntest/actions.py
> trunk/subversion/tests/cmdline/svntest/main.py
> trunk/subversion/tests/cmdline/svntest/wc.py
>
> Modified: trunk/subversion/tests/cmdline/diff_tests.py
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/tests/cmdline/diff_tests.py?pathrev=37006&r1=37005&r2=37006
> ==============================================================================
> --- trunk/subversion/tests/cmdline/diff_tests.py Sat Apr 4 13:45:09 2009 (r37005)
> +++ trunk/subversion/tests/cmdline/diff_tests.py Sat Apr 4 14:54:11 2009 (r37006)
> @@ -3041,12 +3041,19 @@ def diff_svnpatch(sbox):
> i = i - 1
> ll = l[i+1:]
> return ll
> +
> + def convert_svnpatch_line(l):
> + if sys.version_info[0] >= 3:
> + # Python >=3.0
> + if isinstance(l, str):
> + return l.encode()
> + return l
>
> def svnpatch_encode(l):
> - return [x + "\n" for x in textwrap.wrap(base64.encodestring(zlib.compress("".join(l))), 76)]
> + return [x + "\n" for x in textwrap.wrap(base64.encodestring(zlib.compress("".join([convert_svnpatch_line(x) for x in l]))).decode(), 76)]
>
> def svnpatch_decode(l):
> - return zlib.decompress(base64.decodestring("".join([x.rstrip("\n") for x in l])))
> + return zlib.decompress(base64.decodestring("".join([x.rstrip("\n") for x in l]).encode()))
>
> def verify_svnpatch(actual, expected):
> if svntest.main.verbose_mode:
>
> Modified: trunk/subversion/tests/cmdline/patch_tests.py
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/tests/cmdline/patch_tests.py?pathrev=37006&r1=37005&r2=37006
> ==============================================================================
> --- trunk/subversion/tests/cmdline/patch_tests.py Sat Apr 4 13:45:09 2009 (r37005)
> +++ trunk/subversion/tests/cmdline/patch_tests.py Sat Apr 4 14:54:11 2009 (r37006)
> @@ -41,8 +41,15 @@ Item = svntest.wc.StateItem
> ########################################################################
> #Tools
>
> +def convert_svnpatch_line(l):
> + if sys.version_info[0] >= 3:
> + # Python >=3.0
> + if isinstance(l, str):
> + return l.encode()
> + return l
> +
> def svnpatch_encode(l):
> - return [x + "\n" for x in textwrap.wrap(base64.encodestring(zlib.compress("".join(l))), 76)]
> + return [x + "\n" for x in textwrap.wrap(base64.encodestring(zlib.compress("".join([convert_svnpatch_line(x) for x in l]))).decode(), 76)]
>
> gnupatch_garbage_re =\
> re.compile("^patch: \*\*\*\* Only garbage was found in the patch input.$")
> @@ -98,6 +105,10 @@ def patch_basic(sbox):
> ]
>
> svnpatch = svnpatch_encode(svnpatch)
> + if sys.version_info[0] < 3:
> + # Python <3.0
> + svnpatch = [x.encode() for x in svnpatch]
> +
> svntest.main.file_write(patch_file_path,\
> '========================= SVNPATCH1 BLOCK =========================\n')
> svntest.main.file_append(patch_file_path, ''.join(svnpatch))
> @@ -288,6 +299,9 @@ def patch_copy_and_move(sbox):
> ]
>
> svnpatch = svnpatch_encode(svnpatch)
> + if sys.version_info[0] < 3:
> + # Python <3.0
> + svnpatch = [x.encode() for x in svnpatch]
>
> svntest.main.file_write(patch_file_path, ''.join(unidiff_patch))
> svntest.main.file_append(patch_file_path,
>
> Modified: trunk/subversion/tests/cmdline/svntest/actions.py
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/tests/cmdline/svntest/actions.py?pathrev=37006&r1=37005&r2=37006
> ==============================================================================
> --- trunk/subversion/tests/cmdline/svntest/actions.py Sat Apr 4 13:45:09 2009 (r37005)
> +++ trunk/subversion/tests/cmdline/svntest/actions.py Sat Apr 4 14:54:11 2009 (r37006)
> @@ -1560,6 +1560,10 @@ def set_prop(name, value, path, expected
> from tempfile import mkstemp
> value_file_path = mkstemp()[1]
> value_file = open(value_file_path, 'wb')
> + if sys.version_info[0] >= 3:
> + # Python >=3.0
> + if isinstance(value, str):
> + value = value.encode()
> value_file.write(value)
> value_file.flush()
> value_file.close()
>
> Modified: trunk/subversion/tests/cmdline/svntest/main.py
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/tests/cmdline/svntest/main.py?pathrev=37006&r1=37005&r2=37006
> ==============================================================================
> --- trunk/subversion/tests/cmdline/svntest/main.py Sat Apr 4 13:45:09 2009 (r37005)
> +++ trunk/subversion/tests/cmdline/svntest/main.py Sat Apr 4 14:54:11 2009 (r37006)
> @@ -432,6 +432,14 @@ def wait_on_pipe(waiter, binary_mode, st
>
> kid, command = waiter
> stdout, stderr = kid.communicate(stdin)
> + try:
> + stdout = stdout.decode()
> + except UnicodeDecodeError:
> + pass
> + try:
> + stderr = stderr.decode()
> + except UnicodeDecodeError:
> + pass
> exit_code = kid.returncode
>
> # Normalize Windows line endings if in text mode.
> @@ -475,6 +483,8 @@ def spawn_process(command, binary_mode=0
>
> if stdin_lines:
> for x in stdin_lines:
> + if isinstance(x, str):
> + x = x.encode()
> infile.write(x)
>
> stdout_lines, stderr_lines, exit_code = wait_on_pipe(kid, binary_mode)
>
> Modified: trunk/subversion/tests/cmdline/svntest/wc.py
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/tests/cmdline/svntest/wc.py?pathrev=37006&r1=37005&r2=37006
> ==============================================================================
> --- trunk/subversion/tests/cmdline/svntest/wc.py Sat Apr 4 13:45:09 2009 (r37005)
> +++ trunk/subversion/tests/cmdline/svntest/wc.py Sat Apr 4 14:54:11 2009 (r37006)
> @@ -206,7 +206,7 @@ class State:
> os.makedirs(dirpath)
>
> # write out the file contents now
> - open(fullpath, 'wb').write(item.contents)
> + open(fullpath, 'wb').write(item.contents.encode())
>
> def normalize(self):
> """Return a "normalized" version of self.
> @@ -491,7 +491,11 @@ class State:
> for name in dirs + files:
> node = os.path.join(dirpath, name)
> if os.path.isfile(node):
> - contents = open(node, 'r').read()
> + contents = open(node, 'rb').read()
> + try:
> + contents = contents.decode()
> + except UnicodeDecodeError:
> + pass
> else:
> contents = None
> desc[repos_join(parent, name)] = StateItem(contents=contents)
> @@ -646,9 +650,16 @@ class StateItem:
>
> def tweak(self, **kw):
> for name, value in kw.items():
> - ### refine the revision args (for now) to ensure they are strings
> + # Refine the revision args (for now) to ensure they are strings.
> if value is not None and name == 'wc_rev':
> value = str(value)
> + if sys.version_info[0] >= 3:
> + # Python >=3.0
> + # Property values with invalid UTF-8 characters have bytes type.
> + if value is not None and name == 'props':
> + for prop, prop_value in value.items():
> + if isinstance(prop_value, bytes):
> + value[prop] = str(prop_value)
> setattr(self, name, value)
>
> def __eq__(self, other):
>
> ------------------------------------------------------
> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=495&dsMessageId=1546254
>
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1553778
Received on 2009-04-05 21:44:34 CEST