From: stevenknight Date: Thu, 31 Jan 2002 21:44:11 +0000 (+0000) Subject: Compensate for an os.path.normpath('./') bug on Win32. (Charles Crain) X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=31a4b87929f42a79cf8ba8853272b05668c18909;p=scons.git Compensate for an os.path.normpath('./') bug on Win32. (Charles Crain) git-svn-id: http://scons.tigris.org/svn/scons/trunk@238 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index f07d51d9..55084364 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -136,6 +136,18 @@ class FS: relative path with directory=None, then an AssertionError will be raised.""" + if not name: + # This is a stupid hack to compensate for the fact + # that the POSIX and Win32 versions of os.path.normpath() + # behave differently. In particular, in POSIX: + # os.path.normpath('./') == '.' + # in Win32 + # os.path.normpath('./') == '' + # os.path.normpath('.\\') == '' + # + # This is a definite bug in the Python library, but we have + # to live with it. + name = '.' path_comp = string.split(name, os.sep) drive, path_first = os.path.splitdrive(path_comp[0]) if not path_first: diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index 03a8727a..f20c2fb9 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -270,6 +270,13 @@ class FSTestCase(unittest.TestCase): os.path.join('ddd', 'f2'), os.path.join('ddd', 'f3')] + # Test for a bug in 0.04 that did not like looking up + # dirs with a trailing slash on Win32. + d=fs.Dir('./') + assert d.path_ == '.' + os.sep, d.abspath_ + d=fs.Dir('foo/') + assert d.path_ == 'foo' + os.sep, d.path_ + # Test for sub-classing of node building. global built_it