Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 16:38:17 -0500] rev 36659
hghave: fix up clang-libfuzzer regex to be bytes
Fixes this check on Python 3.
# skip-blame just a b prefix
Differential Revision: https://phab.mercurial-scm.org/D2607
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 15:41:12 -0500] rev 36658
py3: accept both unicode and byte strings as filename carried by IOError
Follows up 77f98867538f. We could assume there's no bytes filename in our
codebase, but it's probably better to not raise UnicodeError because of
a unicode filename.
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 15:33:52 -0500] rev 36657
py3: back out c77c925987d7 to store bytes filename in IOError
Appears that this is how Python 3 works.
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:57:23 -0500] rev 36656
largefiles: headers and values need to be sysstrs, add r prefixes
# skip-blame just some r prefixes
Differential Revision: https://phab.mercurial-scm.org/D2606
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 11:26:30 -0500] rev 36655
cext: accept arguments as Py_buffer
The s*/y* value formatters receive a Py_buffer instead of a char *.
This value format is more flexible in the types that it allows.
We change bdiff() to accept any object that conforms to the buffer
protocol. We validate the buffers are contiguous and have a single
dimension.
This allows memoryview instances to be handled by the function, so
we revert a recent change to cast arguments to bytes before calling
this function.
Differential Revision: https://phab.mercurial-scm.org/D2587
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 11:19:43 -0500] rev 36654
cext: refactor cleanup code in bdiff()
A future commit will need to introduce additional cleanup code.
We refactor the cleanup code to check NULL before calling free().
We also initialize these variables as NULL.
We set the out of memory exception explicitly, so we can just return
result.
Differential Revision: https://phab.mercurial-scm.org/D2586
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 07:13:33 +0530] rev 36653
py3: use pycompat.bytestr() to convert error messages to bytes
Differential Revision: https://phab.mercurial-scm.org/D2535
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:28:51 -0500] rev 36652
url: more bytes/unicodes fussing in url.py around auth handling
Once again, these methods are a little annoying to handle because they
can get unicodes or bytes depending on who's calling. I think we can
probably clean this up a TON once we can run something like pytype and
do typechecking of our Python, but until then this is going to be the
easy way out. This fixes test-http-bundle1.t.
Differential Revision: https://phab.mercurial-scm.org/D2599
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:24:21 -0500] rev 36651
httpconnection: convert url to bytes in readauthforuri
This method is sometimes called by the stdlib, so we just need to
accept both bytes and unicodes here. Awesome.
Differential Revision: https://phab.mercurial-scm.org/D2598
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:44:41 -0500] rev 36650
tests: prevent enormous output spew in test-lfs-largefiles.t
This test currently fails on Python 3, but in a super-slow way. Adding
this `head` invocation costs us nothing, but will prevent failures in
this area from being super expensive.
Differential Revision: https://phab.mercurial-scm.org/D2600
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:23:03 -0500] rev 36649
py3: fix formatting of path-auditing errors
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:36:05 -0500] rev 36648
py3: make os.curdir a bytes
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:34:35 -0500] rev 36647
py3: make os.pardir a bytes
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 14:21:47 -0500] rev 36646
py3: fix slicing of bytes in patch.iterhunks()
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 09:35:59 -0500] rev 36645
tests: fix various test-check-module-imports.t violations
Somehow these are only caught when running the test under Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2580
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 00:33:46 +0530] rev 36644
pycompat: prevent encoding or decoding values if not required
pycompat.py has functions strurl and bytesurl which decodes and encodes the url
passed on Python 3 respectively. In some cases, strurl gets a url which is
already str and bytesurl gets a url which is already bytes. Let's prevent
encoding or decoding the values again if not required.
Differential Revision: https://phab.mercurial-scm.org/D2472
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:39:48 -0500] rev 36643
py3: add some b'' to make test-lock-badness.t happy
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:32:06 -0500] rev 36642
py3: fix formatting of lock error message
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:02:36 -0500] rev 36641
py3: fix some unicode madness in global exception catcher
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:08:13 -0500] rev 36640
py3: pass a system-string filename to sub-classes of IOError
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 09:19:34 -0500] rev 36639
py3: fix some membership tests on linkrev adjustment
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:38:09 -0500] rev 36638
py3: make test-basic.t pass on Python 3
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:35:20 -0500] rev 36637
py3: silence the final IOError by closing stdout/err slightly early
Fixes the following test failure:
$ hg status >/dev/full
abort: No space left on device
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' ...
OSError: [Errno 28] No space left on device
[120]
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:10:36 -0500] rev 36636
py3: conditionalize initialization of stdio flags
Since Python 3 doesn't depend on the stdio of libc, there should be no need
to set O_BINARY flag on Windows.
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 18:25:19 -0500] rev 36635
test-command-template: glob out detailed "invalid escape" message
Python 3 also reports the position where an invalid escape found.
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:14:54 -0500] rev 36634
templater: byte-stringify dict/list values before passing to default format
bytestr() is applied only when no custom format string like '%d' is specified.
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:07:22 -0500] rev 36633
templater: allow dynamically switching the default dict/list formatting
'%s' doesn't work nicely on Python 3 because many Python types don't implement
__bytes__().
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 03 Mar 2018 21:01:07 +0530] rev 36632
py3: use util.forcevytestr to convert error to bytes
Differential Revision: https://phab.mercurial-scm.org/D2585
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 09:50:07 -0500] rev 36631
util: report integer result from write()
Python 2 sometimes returns None from write() calls. Python 3 doesn't.
This will make test output inconsistent between Python 2 and 3. So
let's paper over the differences by converting None to the length of
the result string.
Differential Revision: https://phab.mercurial-scm.org/D2584
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 09:34:06 -0500] rev 36630
util: log readinto() I/O
Differential Revision: https://phab.mercurial-scm.org/D2583