summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-01-31 21:44:11 (GMT)
committerSteven Knight <knight@baldmt.com>2002-01-31 21:44:11 (GMT)
commite4055f33a18a5a462150a061b2b4009db0867c8c (patch)
tree9184f7c21f18869b6be20a420119e76c1219851b
parent17d45b75a38380cb04553a82cba8eb034deb97cd (diff)
downloadSCons-e4055f33a18a5a462150a061b2b4009db0867c8c.zip
SCons-e4055f33a18a5a462150a061b2b4009db0867c8c.tar.gz
SCons-e4055f33a18a5a462150a061b2b4009db0867c8c.tar.bz2
Compensate for an os.path.normpath('./') bug on Win32. (Charles Crain)
-rw-r--r--src/engine/SCons/Node/FS.py12
-rw-r--r--src/engine/SCons/Node/FSTests.py7
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