summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2009-02-18 16:10:44 (GMT)
committerSteven Knight <knight@baldmt.com>2009-02-18 16:10:44 (GMT)
commit70d8ba68986ff5dd36388cc968f21ed3b72fbdc9 (patch)
tree0c44bf6b4d8aa05e7a0d2e804d993fe71c2d67ba /src/engine
parentaa33f3bc3ee0944f8f41463ee38788f584ccd8dd (diff)
downloadSCons-70d8ba68986ff5dd36388cc968f21ed3b72fbdc9.zip
SCons-70d8ba68986ff5dd36388cc968f21ed3b72fbdc9.tar.gz
SCons-70d8ba68986ff5dd36388cc968f21ed3b72fbdc9.tar.bz2
Issue 1193: Make suffix-matching for scaners
case-insensitive on Windows. (Stanislav Baranov)
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/Environment.py4
-rw-r--r--src/engine/SCons/EnvironmentTests.py17
2 files changed, 21 insertions, 0 deletions
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py
index 5a1077c..f4ff191 100644
--- a/src/engine/SCons/Environment.py
+++ b/src/engine/SCons/Environment.py
@@ -1086,6 +1086,8 @@ class Base(SubstitutionEnvironment):
scanners.reverse()
for scanner in scanners:
for k in scanner.get_skeys(self):
+ if self['PLATFORM'] == 'win32':
+ k = string.lower(k)
result[k] = scanner
self._memo['_gsm'] = result
@@ -1095,6 +1097,8 @@ class Base(SubstitutionEnvironment):
def get_scanner(self, skey):
"""Find the appropriate scanner given a key (usually a file suffix).
"""
+ if self['PLATFORM'] == 'win32':
+ skey = string.lower(skey)
return self._gsm().get(skey)
def scanner_map_delete(self, kw=None):
diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py
index e6f1c93..7d7bca0 100644
--- a/src/engine/SCons/EnvironmentTests.py
+++ b/src/engine/SCons/EnvironmentTests.py
@@ -1122,6 +1122,23 @@ env4.builder1.env, env3)
s = map(env.get_scanner, suffixes)
assert s == [s1, s1, None, s3, s3], s
+ # Verify behavior of case-insensitive suffix matches on Windows.
+ uc_suffixes = map(string.upper, suffixes)
+
+ env = Environment(SCANNERS = [s1, s2, s3],
+ PLATFORM = 'linux')
+
+ s = map(env.get_scanner, suffixes)
+ assert s == [s1, s1, None, s2, s3], s
+
+ s = map(env.get_scanner, uc_suffixes)
+ assert s == [None, None, None, None, None], s
+
+ env['PLATFORM'] = 'win32'
+
+ s = map(env.get_scanner, uc_suffixes)
+ assert s == [s1, s1, None, s2, s3], s
+
def test_ENV(self):
"""Test setting the external ENV in Environments
"""