Patchwork [2,of,3] run-tests: avoid os.getcwdb() on Windows

login
register
mail settings
Submitter Matt Harbison
Date Sept. 20, 2018, 12:10 p.m.
Message ID <de033c83ce6ef41b81ce.1537445400@Envy>
Download mbox | patch
Permalink /patch/34841/
State Accepted
Headers show

Comments

Matt Harbison - Sept. 20, 2018, 12:10 p.m.
# HG changeset patch
# User Matt Harbison <matt_harbison@yahoo.com>
# Date 1537407718 14400
#      Wed Sep 19 21:41:58 2018 -0400
# Node ID de033c83ce6ef41b81cef5c27d33b4d518005085
# Parent  4d2a7291137d1fc1ac8ac32862a1d3593f3eb10e
run-tests: avoid os.getcwdb() on Windows

Any call to this issues a DeprecationWarning about the Windows bytes API being
deprecated.  There are a handful of these calls in core, but test-run-tests.t
was littered with these, as it's printed everytime run-tests.py is launched.
I'm not sure what the long term strategy for Unicode on Windows in the test
runner is, but this seems no worse than the current conversion strategy.

Patch

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -184,6 +184,10 @@  if sys.version_info > (3, 5, 0):
 
         osenvironb = environbytes(os.environ)
 
+    getcwdb = getattr(os, 'getcwdb')
+    if not getcwdb or os.name == 'nt':
+        getcwdb = lambda : _bytespath(os.getcwd())
+
 elif sys.version_info >= (3, 0, 0):
     print('%s is only supported on Python 3.5+ and 2.7, not %s' %
           (sys.argv[0], '.'.join(str(v) for v in sys.version_info[:3])))
@@ -200,6 +204,7 @@  else:
 
     _strpath = _bytespath
     osenvironb = os.environ
+    getcwdb = os.getcwd
 
 # For Windows support
 wifexited = getattr(os, "WIFEXITED", lambda x: False)
@@ -2520,8 +2525,7 @@  class TestRunner(object):
             os.umask(oldmask)
 
     def _run(self, testdescs):
-        self._testdir = osenvironb[b'TESTDIR'] = getattr(
-            os, 'getcwdb', os.getcwd)()
+        self._testdir = osenvironb[b'TESTDIR'] = getcwdb()
         # assume all tests in same folder for now
         if testdescs:
             pathname = os.path.dirname(testdescs[0]['path'])