summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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