diff options
author | Steven Knight <knight@baldmt.com> | 2002-01-31 21:44:11 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-01-31 21:44:11 (GMT) |
commit | e4055f33a18a5a462150a061b2b4009db0867c8c (patch) | |
tree | 9184f7c21f18869b6be20a420119e76c1219851b /src | |
parent | 17d45b75a38380cb04553a82cba8eb034deb97cd (diff) | |
download | SCons-e4055f33a18a5a462150a061b2b4009db0867c8c.zip SCons-e4055f33a18a5a462150a061b2b4009db0867c8c.tar.gz SCons-e4055f33a18a5a462150a061b2b4009db0867c8c.tar.bz2 |
Compensate for an os.path.normpath('./') bug on Win32. (Charles Crain)
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/SCons/Node/FS.py | 12 | ||||
-rw-r--r-- | src/engine/SCons/Node/FSTests.py | 7 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index f07d51d..5508436 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 03a8727..f20c2fb 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 |