tests: avoid implicit conversion of str to unicode
On Python 2, str.encode('utf-8') implicitly converts the string to unicode and
then back to str.
Using _sys2bytes() ensures that opt is only encoded on Python 3, where opt is
unicode.
Although contrived, before this change, a UnicodeDecodeError could be triggered
on Python 2 when passing non-ascii values to --extra-config-opt.
--- a/tests/run-tests.py Fri Mar 06 09:50:57 2020 +0100
+++ b/tests/run-tests.py Fri Mar 06 10:52:44 2020 +0100
@@ -1331,7 +1331,7 @@
extraextensions = []
for opt in self._extraconfigopts:
- section, key = opt.encode('utf-8').split(b'.', 1)
+ section, key = _sys2bytes(opt).split(b'.', 1)
if section != 'extensions':
continue
name = key.split(b'=', 1)[0]
@@ -1432,7 +1432,7 @@
hgrc.write(b'server-header = testing stub value\n')
for opt in self._extraconfigopts:
- section, key = opt.encode('utf-8').split(b'.', 1)
+ section, key = _sys2bytes(opt).split(b'.', 1)
assert b'=' in key, (
'extra config opt %s must ' 'have an = for assignment' % opt
)