Skip to content
Snippets Groups Projects
  1. Nov 19, 2019
  2. Nov 13, 2019
    • Kim Alvefur's avatar
      zeroconf: fix traceback under py3 · 0f82b29f
      Kim Alvefur authored
      hg serve under py3 caused
      struct.error: char format requires a bytes object of length 1
      
      <pulkit25> ah, I think that should be `pycompat.bytechr` instead of chr
      0f82b29f
  3. Nov 17, 2019
  4. Nov 16, 2019
    • Pierre-Yves David's avatar
      pure: use string for another exception in the pure version of base85 · 4cd91104
      Pierre-Yves David authored
      That message does not seems tested, but I am assuming that the same reasoning as
      for the previous changeset applies.
      4cd91104
    • Pierre-Yves David's avatar
      pure: use string for exception in the pure version of base85 · 4394687b
      Pierre-Yves David authored
      Without this change, running the test with python3 and --pure gives the
      following error::
      
        --- /home/marmoute/src/mercurial-dev/tests/test-import-git.t
        +++ /home/marmoute/src/mercurial-dev/tests/test-import-git.t.err
        @@ -518,7 +518,7 @@
           >
           > EOF
           applying patch from stdin
        -  abort: could not decode "binary2" binary patch: bad base85 character at position 6
        +  abort: could not decode "binary2" binary patch: b'bad base85 character at position 6'
           [255]
      
           $ hg revert -aq
      
      To make the cext implementation, we use a "native" string for the exception.
      This fix the test failure.
      4394687b
  5. Nov 12, 2019
    • Denis Laxalde's avatar
      py3: avoid iterating over a literal bytes in highlight · 856cce0c
      Denis Laxalde authored
      In Python 3, iterating over a bytes literal yields integers. Since we
      use the value in `text.replace()`, this fails on Python 3 with the
      following trackback:
      
          Traceback (most recent call last):
            File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgwebdir_mod.py", line 378, in run_wsgi
              for r in self._runwsgi(req, res):
            File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgweb_mod.py", line 326, in run_wsgi
              for r in self._runwsgi(req, res, repo):
            File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgweb_mod.py", line 449, in _runwsgi
              return getattr(webcommands, cmd)(rctx)
            File "/usr/lib/python3/dist-packages/mercurial/hgweb/webcommands.py", line 211, in file
              return _filerevision(web, webutil.filectx(web.repo, web.req))
            File "/usr/lib/python3/dist-packages/hgext/highlight/__init__.py", line 72, in filerevision_highlight
              pygmentize(web, b'fileline', fctx, web.tmpl)
            File "/usr/lib/python3/dist-packages/hgext/highlight/__init__.py", line 58, in pygmentize
              field, fctx, style, tmpl, guessfilenameonly=filenameonly
            File "/usr/lib/python3/dist-packages/hgext/highlight/highlight.py", line 62, in pygmentize
              text = text.replace(c, b'')
          TypeError: a bytes-like object is required, not 'int'
      856cce0c
  6. Nov 05, 2019
  7. Nov 08, 2019
  8. Nov 09, 2019
  9. Nov 06, 2019
    • Denis Laxalde's avatar
      py3: fix handling of ctrl keys in crecord (issue6213) · be0f77fd
      Denis Laxalde authored
      The "keypressed" value in handlekeypressed() is a key name obtained by
      curses's getkey(); this can be a multibyte string for special keys
      like CTRL keys. Calling curses.unctrl() with such a value fails on
      Python 3 with a TypeError as described in issue6213. (On Python 2, this
      does not crash, but I'm not sure the result is correct, though it does
      no matter here.)
      
      So instead of calling unctrl(), we compare "keypressed" with the
      expected "^L" obtained by curses.ascii.ctrl("L").
      be0f77fd
    • Denis Laxalde's avatar
      py3: keep "keypressed" a native str in crecord · 7cc91339
      Denis Laxalde authored
      This will help in the next changeset by avoiding a decode step. Also,
      the actual bytes conversion seems superfluous since values coming from
      curses's getkey() will be a native string. As a consequence, we open the
      "testcommands" file (used in test-interactive-curses.t) in text mode.
      7cc91339
    • Denis Laxalde's avatar
      py3: compare response of crecord's confirmationwindow with str · 117b41b1
      Denis Laxalde authored
      confirmationwindow() returns a native string, as a result of calling
      chr() on getch(). On Python 3, response.lower().startswith(b"y") leads
      to a TypeError.
      
      This fixes a crash when typing "r" in the curses interface of
      interactive commit.
      117b41b1
  10. Nov 07, 2019
    • Denis Laxalde's avatar
      py3: compare http server's command with a native string · 92e24a13
      Denis Laxalde authored
      The "command" attribute is an str, so comparing with a bytes would not
      work on Python 3. This might solve issues in test-lfs-serve-access.t
      that happens sometimes (especially in CI):
      
          --- /hgwork/src/tests/test-lfs-serve-access.t
          +++ /hgwork/src/tests/test-lfs-serve-access.t.err
          @@ -163,11 +163,13 @@
      
             $ cat $TESTTMP/access.log $TESTTMP/errors.log
             $LOCALIP - - [$LOGDATE$] "POST /missing/objects/batch HTTP/1.1" 404 - (glob)
          +  $LOCALIP - - [05/Nov/2019 16:32:34] "{"objects": [{"oid": "f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e", "size": 20}], "operation": "download"}" HTTPStatus.BAD_REQUEST -
             $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=capabilities HTTP/1.1" 200 - (glob)
             $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
             $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%252C03%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=525251863cad618e55d483555f3d00a2ca99597e&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
             $LOCALIP - - [$LOGDATE$] "POST /subdir/mount/point/.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
             $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point/.hg/lfs/objects/f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e HTTP/1.1" 200 - (glob)
          +  $LOCALIP - - [05/Nov/2019 16:32:34] code 400, message Bad request version ('"download"}')
      
           Blobs that already exist in the usercache are linked into the repo store, even
           though the client doesn't send the blob.
          @@ -195,6 +197,7 @@
             server2/.hg/store/lfs/objects/f0/3217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e
             $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
             $ cat $TESTTMP/errors.log
          +  $LOCALIP - - [05/Nov/2019 16:32:34] code 400, message Bad request version ('"download"}')
      
             $ cat >> $TESTTMP/lfsstoreerror.py <<EOF
             > import errno
      
      (from https://ci.hg.gregoryszorc.com/job-info/hg-committed-ca3dca416f8d5863ca6f5a4a6a6bb835dcd5feeb-debian10-cpython-3.7-0)
      92e24a13
  11. Nov 05, 2019
  12. Oct 17, 2019
    • Matt Harbison's avatar
      automation: avoid '~' in the temp directory on Windows · a77338d2
      Matt Harbison authored
      If a long-ish username is used, the environment variable ends up with a '~' to
      be 8.3 path compatible.  That in turn causes a handful of tests (mostly ssh
      related) to add quotes around $TESTMP.
      
      I have no AWS experience, so I have no idea if this is the proper way to do it.
      But I've hit this problem locally, and redirecting the directory is a
      workaround.  I don't recall if the directory is created on demand by the test
      harness, but presumably if this is configured before the machine boots, Windows
      will do it for us.
      
      Differential Revision: https://phab.mercurial-scm.org/D7130
      a77338d2
  13. Nov 05, 2019
  14. Nov 04, 2019
  15. Nov 01, 2019
  16. Nov 02, 2019
    • Ian Moody's avatar
      py3: use %d to format an int · 742065de
      Ian Moody authored
      Avoids a TypeError under py3.  Fortunately this is very much an edge case since
      it requires the user to have deliberately created a local tag of the form
      'D\d+' that isn't truthful.
      
      Differential Revision: https://phab.mercurial-scm.org/D7215
      742065de
    • Gregory Szorc's avatar
      fsmonitor: normalize exception types to bytes · 9a8f8c6e
      Gregory Szorc authored
      Unavailable.msg should now always be bytes.
      
      We also rename Unavailable.__str__ to __bytes__ as it always
      returns bytes. We make __str__ a simple wrapper that decodes that
      result to str.
      
      There's probably some excessive strutil.forcebytestr() in
      fsmonitor/__init__.py now. But at least the exceptions around
      type coercion should now be gone.
      
      Differential Revision: https://phab.mercurial-scm.org/D7214
      9a8f8c6e
    • Gregory Szorc's avatar
      fsmonitor: normalize clock value to bytes · 09ab61c0
      Gregory Szorc authored
      We normalize the value returned by watchman because
      we perform a number of compares with this value in code.
      So the easiest path forward is to normalize to bytes so we
      don't have to update many call sites.
      
      With this commit, the fsmonitor extension appears to be working
      with Python 3! Although there are still some failures in edge
      cases...
      
      Differential Revision: https://phab.mercurial-scm.org/D7213
      09ab61c0
Loading