[PATCH V2] py3: fix a type error in hghave.has_hardlink

Matt Harbison mharbison72 at gmail.com
Fri Sep 21 23:07:24 UTC 2018


# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1537504623 14400
#      Fri Sep 21 00:37:03 2018 -0400
# Node ID 47b396135bb2ee0d5c5b9ed91cd7a87920b344b5
# Parent  543f26ece6cf09d9ab36ff601ec53422f6b54b91
py3: fix a type error in hghave.has_hardlink

test-hghave.t was failing with:

    feature hardlink failed:  argument 1: <class 'TypeError'>: wrong type

diff --git a/tests/hghave.py b/tests/hghave.py
--- a/tests/hghave.py
+++ b/tests/hghave.py
@@ -16,6 +16,22 @@ checks = {
     "false": (lambda: False, "nail clipper"),
 }
 
+if sys.version_info[0] >= 3:
+    def _bytespath(p):
+        if p is None:
+            return p
+        return p.encode('utf-8')
+
+    def _strpath(p):
+        if p is None:
+            return p
+        return p.decode('utf-8')
+else:
+    def _bytespath(p):
+        return p
+
+    _strpath = _bytespath
+
 def check(name, desc):
     """Registers a check function for a feature."""
     def decorator(func):
@@ -360,7 +376,7 @@ def has_hardlink():
     os.close(fh)
     name = tempfile.mktemp(dir='.', prefix=tempprefix)
     try:
-        util.oslink(fn, name)
+        util.oslink(_bytespath(fn), _bytespath(name))
         os.unlink(name)
         return True
     except OSError:


More information about the Mercurial-devel mailing list