[Python-checkins] r53460 - in python/trunk: Lib/ntpath.py Lib/test/test_ntpath.py Lib/test/test_posixpath.py Misc/NEWS

sjoerd.mullender python-checkins at python.org
Tue Jan 16 17:42:39 CET 2007


Author: sjoerd.mullender
Date: Tue Jan 16 17:42:38 2007
New Revision: 53460
Modified:
 python/trunk/Lib/ntpath.py
 python/trunk/Lib/test/test_ntpath.py
 python/trunk/Lib/test/test_posixpath.py
 python/trunk/Misc/NEWS
Log:
Fixed ntpath.expandvars to not replace references to non-existing
variables with nothing. Also added tests.
This fixes bug #494589.
Modified: python/trunk/Lib/ntpath.py
==============================================================================
--- python/trunk/Lib/ntpath.py	(original)
+++ python/trunk/Lib/ntpath.py	Tue Jan 16 17:42:38 2007
@@ -344,8 +344,10 @@
 var = path[:index]
 if var in os.environ:
 res = res + os.environ[var]
+ else:
+ res = res + '${' + var + '}'
 except ValueError:
- res = res + path
+ res = res + '${' + path
 index = pathlen - 1
 else:
 var = ''
@@ -357,8 +359,10 @@
 c = path[index:index + 1]
 if var in os.environ:
 res = res + os.environ[var]
+ else:
+ res = res + '$' + var
 if c != '':
- res = res + c
+ index = index - 1
 else:
 res = res + c
 index = index + 1
Modified: python/trunk/Lib/test/test_ntpath.py
==============================================================================
--- python/trunk/Lib/test/test_ntpath.py	(original)
+++ python/trunk/Lib/test/test_ntpath.py	Tue Jan 16 17:42:38 2007
@@ -115,6 +115,28 @@
 tester("ntpath.normpath('C:////a/b')", r'C:\a\b')
 tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b')
 
+oldenv = os.environ.copy()
+try:
+ os.environ.clear()
+ os.environ["foo"] = "bar"
+ os.environ["{foo"] = "baz1"
+ os.environ["{foo}"] = "baz2"
+ tester('ntpath.expandvars("foo")', "foo")
+ tester('ntpath.expandvars("$foo bar")', "bar bar")
+ tester('ntpath.expandvars("${foo}bar")', "barbar")
+ tester('ntpath.expandvars("$[foo]bar")', "$[foo]bar")
+ tester('ntpath.expandvars("$bar bar")', "$bar bar")
+ tester('ntpath.expandvars("$?bar")', "$?bar")
+ tester('ntpath.expandvars("${foo}bar")', "barbar")
+ tester('ntpath.expandvars("$foo}bar")', "bar}bar")
+ tester('ntpath.expandvars("${foo")', "${foo")
+ tester('ntpath.expandvars("${{foo}}")', "baz1}")
+ tester('ntpath.expandvars("$foo$foo")', "barbar")
+ tester('ntpath.expandvars("$bar$bar")', "$bar$bar")
+finally:
+ os.environ.clear()
+ os.environ.update(oldenv)
+
 # ntpath.abspath() can only be used on a system with the "nt" module
 # (reasonably), so we protect this test with "import nt". This allows
 # the rest of the tests for the ntpath module to be run to completion
Modified: python/trunk/Lib/test/test_posixpath.py
==============================================================================
--- python/trunk/Lib/test/test_posixpath.py	(original)
+++ python/trunk/Lib/test/test_posixpath.py	Tue Jan 16 17:42:38 2007
@@ -374,6 +374,8 @@
 self.assertEqual(posixpath.expandvars("$foo}bar"), "bar}bar")
 self.assertEqual(posixpath.expandvars("${foo"), "${foo")
 self.assertEqual(posixpath.expandvars("${{foo}}"), "baz1}")
+ self.assertEqual(posixpath.expandvars("$foo$foo"), "barbar")
+ self.assertEqual(posixpath.expandvars("$bar$bar"), "$bar$bar")
 finally:
 os.environ.clear()
 os.environ.update(oldenv)
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Tue Jan 16 17:42:38 2007
@@ -109,6 +109,8 @@
 Library
 -------
 
+- Bug #494589: make ntpath.expandvars behave according to its docstring.
+
 - Changed platform module API python_version_tuple() to actually
 return a tuple (it used to return a list)
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /