summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Dörwald <walter@livinglogic.de>2003-06-19 10:21:14 (GMT)
committerWalter Dörwald <walter@livinglogic.de>2003-06-19 10:21:14 (GMT)
commita9da5ae07aa40d834b9bfb71de8af0f1b68f39ba (patch)
tree1b8b6a703d8923aaa38875ef5d57787c7c8c218a
parent76ca1d428f96284ed58f4523b698ed95c6fdbdb2 (diff)
downloadcpython-a9da5ae07aa40d834b9bfb71de8af0f1b68f39ba.zip
cpython-a9da5ae07aa40d834b9bfb71de8af0f1b68f39ba.tar.gz
cpython-a9da5ae07aa40d834b9bfb71de8af0f1b68f39ba.tar.bz2
Use find() instead of looping over the string in expanduser().
From SF patch #757058.
-rw-r--r--Lib/posixpath.py8
-rw-r--r--Lib/test/test_posixpath.py6
2 files changed, 9 insertions, 5 deletions
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index 1c63af8..7f907ef 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -303,11 +303,11 @@ def expanduser(path):
do nothing."""
if not path.startswith('~'):
return path
- i, n = 1, len(path)
- while i < n and path[i] != '/':
- i += 1
+ i = path.find('/', 1)
+ if i < 0:
+ i = len(path)
if i == 1:
- if not 'HOME' in os.environ:
+ if 'HOME' not in os.environ:
import pwd
userhome = pwd.getpwuid(os.getuid()).pw_dir
else:
diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py
index 9ba7216..30551d8 100644
--- a/Lib/test/test_posixpath.py
+++ b/Lib/test/test_posixpath.py
@@ -332,12 +332,16 @@ class PosixPathTest(unittest.TestCase):
def test_expanduser(self):
self.assertEqual(posixpath.expanduser("foo"), "foo")
- self.assert_(isinstance(posixpath.expanduser("~/"), basestring))
try:
import pwd
except ImportError:
pass
else:
+ self.assert_(isinstance(posixpath.expanduser("~/"), basestring))
+ self.assertEqual(
+ posixpath.expanduser("~") + "/",
+ posixpath.expanduser("~/")
+ )
self.assert_(isinstance(posixpath.expanduser("~root/"), basestring))
self.assert_(isinstance(posixpath.expanduser("~foo/"), basestring))